一、数据类型转换
1、算数运算时的自动转换
存储位数越多,类型的级别越高
下图为数据类型与存储位数的对照表
1字节为8位二进制数
即0000 0000~0111 1111为一个字节
例如:
5+5.6 //结果将会转变为一个double类型,而不是int类型
2、强制转换
强制转换一般用于高级别的类型赋值给低级别类型
例如
int num = 786;
byte by = (byte)num; //int强制转换为byte----18
short sh = (short)num; //int强制转换为short---786
二、运算符
1、关系运算符
运算符 | 含义 | 范例 | 结果 |
---|---|---|---|
= = | 等于 | 5==6 | false |
!= | 不等于 | 5!=6 | true |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | true |
>= | 大于小于 | 5>=6 | false |
<= | 小于等于 | 5<=6 | true |
=为赋值运算符,==为等于运算符 关系表达式的结果为布尔值
>、<、>=、<=运算符只支持数值类型的数据比较
==、!=运算符支持所有数据数据类型的比较
>、<、>=、<= 运算符的优先级别高于==、!=
2、逻辑运算符
运算符 | 含义 | 运算规则 |
---|---|---|
&& | 短路与 | 两个操作数都是true,结果才是true;如果左边为false,右边的表达式不会进行运算 |
|| | 短路或 | 两个操作数一个是true,结果为true;如果左边为true,右边的表达式不会进行运算 |
! | 逻辑非 | 操作数为true,结果为false;操作数为false,结果为true |
& | 逻辑与 | 两个操作数都是true,结果才是true;不论左边取值,右边的表达式都会进行运算 |
| | 逻辑或 | 两个操作数一个是true,结果为true;如果左边为true,右边的表达式都会进行运算 |
^ | 逻辑异或 | 两个操作数相同,结果为false;两个操作数不同,结果为true |
int x=8;
int y=9;
//x=9,y=9; x=10,y=9;
System.out.println((++x==y)&&(++x!=y)); //true
System.out.println(x); //10
int i=8;
int j=9;
//i=9,j=9; i=10,j=9;
System.out.println( (++i!=j)&&(++i==j)); //false
System.out.println(i); //9
3、位运算符
运算符 | 含义 | 运算规则 |
---|---|---|
& | 按位与 | 两个操作数都是1,结果才是1 |
| | 按位或 | 两个操作数一个是1,结果为1 |
^ | 按位异或 | 两个操作数相同,结果为0;两个操作数不同,结果为1 |
~ | 按位非 | 两个操作数都是true,结果才是true;不论左边取值,右边的表达式都会进行运算 |
<< | 左移 | 右侧空位补0 |
>> | 右移 | 左侧空位补最高位,即符号位 |
>>> | 无符号右移 | 左侧空位补0 |
位运算符的操作数都是整型数,包括int、short、long、byte和char
位运算符的运算结果也都是整型数,包括int、long
如果操作数是char、byte、short,位运算前其值会自动晋升为int,运算结果也为int
位运算符对操作数以二进制为单位进行运算
4、条件运算符
条件 ? 表达式1 : 表达式2