Java数据类型分析

八大基本数据类型:

 

 

  • 整数

    • byte

    • short

    • int

    • long

  • 小数

    • float单精度

    • double双精度

  • 布尔

  • 字符

引用数据类型:除了基本类型以外的其他类型

  字符串

  数组

  对象

 

 

 

  字节数  数值范围
byte  1  -128~127
short  2

-32768~32767

(-2^15~2^15-1)

int(默认) 4

-2147483648~2147483647

(-2^31 ~ 2^31-1)

long 8 -2^63 ~ 2^63-1
float 4 负数范围:-3.4x10^38~-1.4x10^-45,正数范围:1.4x10^-45~3.4x10^38
double(默认) 8 -1.7x10^308~-4.9x10^-324,正数范围:4.9x10^-324~1.7x10^308
boolean 1 值为true或者false,true表示为真,false表示假
char 要保证写入字符集和读取字符集一致

 

注意:

  • 若要定义一个long型,需要在数字后加一个L。
  • 小数在计算机表示是不精确的,需要精确运算以及大整数运算时,应该使用BigDecimal类。
  • Java中小数默认类型是double,如果要使用float需要在最后加一个f。
  • long类型虽然有8个字节,但是存储的范围比float小,因为float使用指数存储。

 

  • java中,字符串在不同字符编码中字母和汉字占字节数情况:
  • ①Unicode:字母 2    汉字 2   占位符 2
  • ②GBK:  字母1   汉字2
  • ③UTF-8:字母1  汉字3 

 

自动转换:

  • 小的向大的转化,自动转换

    规则:byte→short→int→long→float→double

  • 大的向小的转换,需要强制转换,但是需要合理,同类型

  • 大的向小的转换,就会不合理,可能会出现回转,例如int向byte转换,128可能输出-127

  • char 型向int转换,得到原ASCII码,不需要强制转换。

  • int 向char转化需要强制转换

  • 小数向整数转换,是截断,并非四舍五入。

 

a++ 隐藏了自动转换

对byte类型只能进行++操作,不然还需要进行数据转换

byte b = ++b1; 等价于 byte b =(byte)(b1+1);

 

 

/

// 经典面试题
        byte b1 = 1;
//        b1++;
        b1 = (byte) (b1 + 1);
        System.out.println(b1);
        // b1++; 与 b1 = b1 + 1;
        // 自增会自动转换类型,而+法不会,需要强转类型
    }
}

 

posted @ 2022-03-02 20:04  翌晨、  阅读(111)  评论(0)    收藏  举报