数据类型
java数据类型分为基本数据类型和引用数据类型。
基本数据类型:
类型 | 占用字节 | 值域 |
---|---|---|
byte | 1 | -128~127 |
short | 2 | -32768~32767 |
int | 4 | -2147483648~2147483647 |
long | 8 | -263~263-1 |
float | 4 | |
double | 8 | |
boolean | 1 | |
char | 2 | 0~65535 |
具体的容量顺序如下:
byte(boolean)<short(char)<int<long<float<double
类型转换
赋值符号左右两侧类型不一样时,需要进行类型转换,分两种
自动类型转换
小容量类型数据赋值给大容量数据称为自动类型转换
该转换自动进行,无需人工干预
强制类型转换
大容量数据类型赋值给小容量数据类型时,需要增加强制类型转换符,形式为
int a = 1000;
byte b = (byte)a
强制类型转换会直接将转换后的二进制数的前面多余位数直接去除,容易造成精度损失,需要谨慎使用
字面量默认数据类型为int
当将字面量赋值给byte/short类型的变量时,如果值小于byte/short类型的值域,程序会自行判断,将编译通过。(仅适用于字面量,不适用于变量,变量程序不判断值,只判断类型)
byte a = 127
当将字面量赋值给long类型的变量的时候,且该字面量的值大于int的范围时,可以在变量的最后加上L/l进行字面量的类型转换
long l1 = 2147483648L
当byte、short、char数据之间进行混合运算的时候,是先将数据转换为int之后再计算,所以最终的值是int类型。
除此之外,多个数据类型之间混合运算的时候,最终的数据类型将是容量最大的那一个
实数类型的字面量,默认类型时double,如果需要赋值给float类型的变量,需要用在字面量末尾用F/f进行类型转换
float f1 = 1.5F
boolean不参与混合运算,其他类型的都能进行混合运算
算术运算符
加:+
减:-
乘:*
除:/
模:% 取余
自增:++
自减:–
自增和自减比较特殊
int a = 1
a++ //a的值加1,变成2
++a //a的值加1,变成3
b = a++ //先赋值,后自增,所以b的值是3,a的值是4
c = ++a //先自增,后赋值,所以c的值是5,a的值是5
System.out.println(++a) //先自增,后输出,即输出6
System.out.println(a++) //先输出,后自增,即输出6
逻辑运算符
与:&&
或:||
非:!
&&有短路效果,即如果左边是false,右边的语句不执行
||同理,如果左边是true,那么右边的语句不执行
比较运算符
>=,<=,==,!=,<,>
三元运算符
一元:一个数据参与运算 ! ++ –
二元:两个数据参与运算 + -
三元:三个数据参与运算
数据类型 变量名 = 逻辑判断 ? 表达式A : 表达式B;
int a = 3;
int b = 4;
int max = a>b ? a : b
注意:三元运算符不能是单独的语句,要么在赋值符号右侧,要么在print里面