java编程思想 -- java概述

(1)内存分配

  1. 寄存器: 在运算器内部,运行速度非常快,但是你不能控制。
  2. 栈(stack): 在RAM内,存放变量。
  3. 堆(heap): 在RAM内,存放对象。速度比stack要慢
  4. 常量 : 常量值直接存储在程序代码内部,这样做是安全的,因为它的值永远不会改变
  5. 非RAM存储: 数据完全存活于程序之外。例如:流对象和持久化对象。

(2)基本数据类型

基本数据类型 大小 最小值 最大值 包装类型 默认值
boolean - - - Boolean false
char 16-bit Unicode 0 Unicode (2^16)-1 Character ‘\u0000’(null)
byte 8-bit -128 127 Byte (byte)0
short 16-bit -2^15 (2^15)-1 Short (short)0
int 32-bit -2^31 (2^31)-1 Integer 0
long 64-bit -2^63 (2^63)-1 Long 0L
float 32-bit IEEE 754 IEEE 754 Float 0.00f
double 64-bit IEEE 754 IEEE 754 Double 0.00d
void - - - Void

高精度使用BigInteger 和 BigDecimal

java中的数组

java中的数组在运行时会进行下标检查,所以不会出现数组越界的情况。

副作用

对于一个表达式,它的效果分为两部分——结果和副作用。
结果就是表达式的值,比如1+1得结果就是2。
副作用是表达式除了产生结果以外产生的其他效果。比如i++,结果i原来的值,副作用是给i的内容+1。

短路

常数表示

        int i = 11;

        long l =  22L;

        float f = 33.0F;

        //小数默认是double类型
        double d1 = 44.44;
        double d2 = 55.55D;

        /**
         * 十六进制
         * 0x   ==>   ‘零X’开头表示十六进制整数
         */
        int hexadecimal = 0X1000;

        /**
         * 八进制
         * 0 ==>  零开头表示八进制小数
         */
        int octonar = 01000;

        /**
         * 1.39e-43 ==> 表示1.39 * 10^43
         * 注意:
         * 在java中, e 代表10的幂次
         * 在数学中,e代表2.718.....
         */
        double scientific = 1.39e43;

按位运算符 & | ^

移位运算符

待补充

类型转换

  • 扩张类型
    int – > double
    int – > float
    等等
    不用强制转换,因为新的数据类一定能够容纳久的数据类型
  • 窄化转换
    double –> int
    double –> float
    等等
    必须进行强制转换,因为新的类型可能无法容纳那么多信息,可能照成数据丢失。

截尾

浮点数转化为整型值会进行结尾取值,即小数点后的值全部抛弃

        double above = 0.7;
        double below = 0.3;
        float fabove = 0.7f;
        double fbelow = 0.3f;

        System.out.println((int)above);    // ==> 0
        System.out.println((int)below);    // ==> 0
        System.out.println((int)fabove);    // ==> 0
        System.out.println((int)fbelow);    // ==> 0

四舍五入

四舍五入需要使用java.lang.Math.round()方法

提升

(1)对基本数据类型执行算数运行或按位运算,只要类型比int小(即byte和short和char),那么在运算之前,这些值会全部转化为int,最终结果也是int,如果把这些值付给较小的类型,就必须使用强制类型转换。可能造成数据丢失。

        char c = 'a';
        char cc = (char) +c;    // +c 已经是int类型的了

(2)表达式出现的最大的数据类型决定了表达式最终结果的数据类型。

注意

  1. char,byte,short提升为int,然后再转化成较小类型,有可能造成数据丢失。
  2. int 与 int 相乘不用进行类型转换,但是有可能造成溢出,所以也要小心。
        int i = 1000000000 * 2000;

        System.out.println(i);  // --> -1454759936

问题

(1)对基本数据类型执行算数运行或按位运算,只要类型比int小(即byte和short和char),那么在运算之前,这些值会全部转化为int,最终结果也是int,如果把这些值付给较小的类型,就必须使用强制类型转换。可能造成数据丢失。
怎么截取数据的?????

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章