1.Java的数据存储规范
Java是强类型语言:要求数据的类型与数据的值严格保持一致
2.Java的数据类型分类(两大类)
1.简单类型/基本类型/原始类型
①整数类型
数据类型 | 字节数 | 可表示的数据范围(二进制) | 可表示的数据范围(十进制) |
---|---|---|---|
byte | 1B | -2 7~27-1 | -128~127 |
short | 2B | -215~215-1 | -32768~32767 |
int | 4B | -231~231-1 | -2147483648~2147483647 |
long | 8B | -263~263-1 | -9223372036854775808~9223372036854775807 |
提示:
一个字节在二进制占8位;表示数据的时候,第一位为符号位,0代表正数,1代表负数。
②小数/浮点数类型
数据类型 | 字节数 | 负数取值范围(十进制) | 整数取值范围(十进制) | 精度 |
---|---|---|---|---|
float | 4B | -3.4E+38~1.4E-45 | 1.4E-45~3.4E+38 | 7位 |
double | 8B | -1.7E+308~4.9E-324 | 4.9E-324~1.7E+308 | 15位 |
提示:
-3.4E+38表示为-3.4乘以10的38次方分之一
③字符类型
数据类型 | 字节数 | 取值范围(无符号数) | 字符编码 |
---|---|---|---|
char | 2B | 0 ~ 65535 | Unicode(万国码) |
字符表示的三种方式:
Ⅰ.使用单引号引起来表示一个字符。如:‘a’,'b’等
Ⅱ.使用整数表示一个字符。如:char A=64,char a=96
Ⅲ.使用unicode去表示一个字符。如:char c = ‘\u0041’; 字符的默认值
转义字符:
\t | 水平跳格 |
---|---|
\n | 换行 |
\’ | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
④布尔类型
数据类型 | 字节数 | 取值范围 |
---|---|---|
boolean | 1B | true/false |
注意:
1. 整数默认是int类型
2. 浮点数默认是double类型
3. 长整型后缀用L或者l标记,建议用使用L(在定义数据类型,给的初始化值如果是整数,默认初始化值是int类型、小数默认是double,但是如果初始化值小于int类型数值范围,不加L也可以。但是建议加L,以便区分)
4. 单精度浮点数用F或者f标记。建议使用F(如果不加,会报错;因为初始化值是double类型,而a是float类型,从double转换到float可能会有损失)
5. float类型使用科学计数法储存的,可存储的范围过大,但是不够精确,小数点之后7位是精确的。
6. double类型使用科学计数法存储的,可存储的范围过大,但是不够精确,小数点之后15位是精确的,16位是否精确还不确定。
2.引用类型/对象类型
类、字符串、接口、数组等等,除了八种基本数据类型之外其他都是引用类型/对象类型
3.数据类型转换
1.默认转换(自动类型提升)
默认转换就是从小到大的转换
条件:
①两种数据之间必须能够相互兼容
②目标数据类型比源数据类型大
规则:
byte–>short–>int–>long–>float–>double
byte,short,char相互之间不能转换,它们参与运算首先转换为int类型
不同数据类型变量参与运算图解
2.强制类型转换
强制类型转换就是从大到小的转换
条件:
①两种数据之间必须相互兼容
②目标数据类型比源数据类型小
语法:
目标数据类型 变量名 = (目标数据类型)源数据变量名/源数据值;
注意:
Ⅰ.整数的长度相互匹配,直接赋值,数据是完整的
Ⅱ.整数的长度不匹配,数据截断,舍弃高位
Ⅲ.浮点数转整数,数据截断,舍弃小数位
Ⅳ.布尔类型数据不参与转换
Ⅴ.不要随意去使用强制类型转换,因为它隐含了精度损失问题
3.数据类型参与运算规则
进行算数运算时:
两个操作数有一个为double,计算结果提升为double。
如果操作数中没有double,有一个为float,计算结果提升为float。
如果操作数中没有float,有一个long,计算结果提升为long。
如果操作数中没有long,有一个为int,计算结果提升为int。
如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
如果操作数中没有float,有一个long,计算结果提升为long。
如果操作数中没有long,有一个为int,计算结果提升为int。
如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。
来源:CSDN
作者:程序猿的成长日记
链接:https://blog.csdn.net/zhangruilinmoo/article/details/104733207