数据类型分类

Java语言的变量按数据类型分类如下:

java double类型 比较大小 精度问题 java double byte_jvm

 

整数型

byte(1字节=8bit) 、short(2字节) 、 int(4字节) 、 long(8字节)

① byte范围:-128 ~ 127
② 声明long型变量,必须以"l"或"L"结尾
③ 通常,定义整型变量时,使用int型。
④ 整型的常量,默认类型是:int型

浮点型

float(4字节) 、 double(8字节)

① 浮点型,表示带小数点的数值
② float表示数值的范围比long还大
③ 定义float类型变量时,变量要以"f"或"F"结尾
④ 通常,定义浮点型变量时,使用double型。
⑤ 浮点型的常量,默认类型为:double

浮点数在计算机底层的存储,会丢失精度,所得出的数是一个无限接近于真值的数。如果希望提高精确度,可以用BigDecimal类。

字符串型

char (1字符=2字节)

① 定义char型变量,通常使用一对’’,内部只能写一个字符
② 表示方式:1.声明一个字符 2.转义字符 3.直接使用 Unicode 值来表示字符型常量。

编码表:

① ASCII码表:只能表示128个字符,单字节编码表  a-z(97-123)  \    A-Z  (65-91) \    0-9
② unicode码表,可以表示所有的符号,固定双字节编码表
③ utf-8码表,可以表示所有的符号,可变字节长度编码表。一个英文字母,占1个字节;一个汉字,占3个字节。
④ GBK码表,可以表示中文,但不能表示世界上所有符号。一个英文字母,占1个字节,一个汉字,占2个字节

布尔型

boolean

① 只能取两个值之一:true 、 false
② 常常在条件判断、循环结构中使用

基础类型之间的转换

自动类型转换:容量小的类型自动转换成为容量大的数据类型,数据类型按容量大小排序为:

java double类型 比较大小 精度问题 java double byte_编程_02

有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行运算。

byte、short、char之间不会互相转换,它们三者在计算时首先转换成int类型。

java double类型 比较大小 精度问题 java double byte_java_03

即声明为b+c的和时,m必须是int类型。

当任何基础数据类型的值和字符串值进行连接运算时(+),基础数据类型的值将自动转换为字符串类型。

java double类型 比较大小 精度问题 java double byte_面试_04

 输出结果为hello1,任何被双引号括起来的就是字符串类型。

java double类型 比较大小 精度问题 java double byte_面试_05

 

当需要将大容量的基础数据类型转换成小容量的数据类型时,需要进行强制转换,使用强转符(),但请注意:强制类型转换,可能导致精度丢失。

java double类型 比较大小 精度问题 java double byte_java_06

 

强转只对就近的起作用。

byte a = (byte)3.5 * 10 + 2.5 * 20; //依旧编译出错   

更改为:byte a = (byte)(3.5 * 10 + 2.5 * 20);  //编译正确

通常,字符串类型不能直接转换成基础类型,但通过基础类型对应的包装类则可以将字符串转换成基础类型。

java double类型 比较大小 精度问题 java double byte_编程_07

 

字符串转为基本类型需要注意的是:

① 字符串里面的值必须是可以转换成其它的基础类型的。
② String类不能转换为char。
③ 转为boolean,只要是非true的值,结果都是false。

布尔类型不可以转换成其它的基础数据类型