浮点类型:
float 4字节 单精度
double 8字节 双精度 范围大 准确度高
Java中所有的小数默认都是double,除非有单精度标志符(f)如:( float=1.5f;)
字符型:
char 2个字节表示一个字符
编码:Unicode
表示:char c='c' 注意只能放一个
范围:0-65535,(从0开始,没有负数) 根据Unicode码表,数值65码值
布尔类型:
boolean
1.只有两个值 true 和 false
2.用处:一般用于逻辑判断
3.占用内存:占用一个字节但只用一位
引用数据类型:
1.数组
2.类
3.接口
运算符:
一、算术运算符
例如:+,-,*,/
++(自增符号)
例如[
]
--(自减符号)
例如[
]
二、赋值运算符
例如:=
三、扩展赋值运算符
例如:+=,-=,*=,/=,%=
四、关系运算符
例如:>,<,>=,<=,==,!=
所有关系运算符返回值是boolean,要么是true要么false
五、位运算符
类型转换:
一、自动转换类型
1.byte b=10; 只要是在-128~127之间,可以自动转换成byte
2.int c=b+10; 数值运算时,会尽量往精确度高的方向提升。
例如: byte+int=int,int+float=float
3.byte b=10+7;
可以编译成功,因为(=)右面是常量
4.byte a=10;
byte b=5;
c=a+b;
因为右面是变量,编译器编译阶段检查不出变量(b)(c)是否在范围内
5.b += (b+10) 因为特殊,扩展赋值符
如果是扩展赋值符,右面就不管了,全都能编译成功,底层已经做了自动类型强转
6.char c='a';
c+1
根据unicode编码表,去查找码值,和数值相加
7. b=b+10 b+=10;
(1) b=b+10;
编译失败,因为右面是变量,编译器不能再编译的时候不能确定右面的值是否再-128-127之间
(2) b+=10;
编译成功,因为扩展运算符,编译器底层自动类型强转
(3)b+=(b+10);
编译成功,因为扩展符赋值符会默认将右面强转
二、强制类型转化
(1)b=(byte)(b+10); 精度丢失,出现负数
三、两个数运算时候,类型得一致