目录

自动类型转换

为什么要进行类型转换

表达式的自动类型转换

强制类型转换

运算符

“+” 做连接符

自增自减运算符

基本赋值运算符=

扩展赋值运算符

关系运算符

逻辑运算符

短路逻辑运算符

三元运算符

运算符优先级


学习继续,每天进步一点点…

自动类型转换

类型范围小的变量,可以直接赋值给类型范围大的变量。

byte → short → int(char) → long → float → double

为什么要进行类型转换

存在不同类型的变量赋值给其他类型的变量

表达式的自动类型转换

在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算。

byte 、short、char → int → long → float → double

注意事项:

表达式的最终结果类型由表达式中的最高类型决定。

在表达式中,byte、short、char 是直接转换成int类型参与运算的。

类型范围大的数据或者变量,不能直接赋值给类型范围小的变量,会报错。

强制类型转换

可以强行将类型范围大的变量、数据赋值给类型范围小的变量。

// 数据类型 变量2 = (数据类型)变量1、数据
int a = 20;
byte b = (byte)a;

注意事项

强制类型转换可能造成数据(丢失)溢出;

浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。

运算符

运算符:对字面量或者变量进行操作的符号。

符号

作用

说明

+


参考小学一年级

-


参考小学一年级

*


参考小学二年级,与“×”相同

/


与“÷”相同,注意:在Java中两个整数相除结果还是整数。

%

取余

获取的是两个数据做除法的余数

“+” 做连接符

“+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串。能算则算,不能算就在一起。

自增自减运算符

符号

作用

说明

++

自增

变量自身的值加1

--

自减

变量自身的值减1

注意

++ 和 -- 既可以放在变量的后边,也可以放在变量的前边。++、--如果不是单独使用(如在表达式中、或者同时有其它操作),放在变量前后会存在明显区别。

        非单独使用:放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算。

        非单独使用:放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1

++ 、-- 只能操作变量,不能操作字面量的。

基本赋值运算符=

int a = 10; // 先看“=”右边,把数据10赋值给左边的变量a存储。

扩展赋值运算符

符号

作用

说明

+=

加后赋值

a+=b 等价于 a = (a的数据类型)(a+b); 将a + b的值给a

-=

减后赋值

a-=b 等价于 a = (a的数据类型)(a-b); 将a - b的值给a

*=

乘后赋值

a*=b 等价于 a = (a的数据类型)(a*b); 将a * b的值给a

/=

除后赋值

a/=b 等价于 a = (a的数据类型)(a/b); 将a / b的商给a

%=

取余后赋值

a%=b 等价于 a = (a的数据类型)(a%b); 将a % b的商给a

注意:扩展的赋值运算符隐含了强制类型转换。

关系运算符

是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)

符号

说明

==

a==b,判断a和b的值是否相等,成立为true,不成立为false

!=

a!=b,判断a和b的值是否不相等,成立为true,不成立为false

>

a>b,判断a是否大于b,成立为true,不成立为false

>=

a>=b,判断a是否大于等于b,成立为true,不成立为false

<

a<b,判断a是否小于b,成立为true,不成立为false

<=

a<=b,判断a是否小于等于b,成立为true,不成立为false

逻辑运算符

可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果。

符号

介绍

说明

&

逻辑与

必须都是true,结果才是true;

|

逻辑或

只要有一个为true、结果就是true


逻辑非

你真我假、你假我真。

^

逻辑异或

如果两个条件都是false或者都是true则结果是false。两个条件不同结果是true

短路逻辑运算符

符号

介绍

说明

&&

短路与

判断结果与“&”一样。过程是左边为“&”一样。过程是左边为 false,右边则不执行。

||

短路或

判断结果与“|”一样。过程是左边为true, 右边则不执行。

三元运算符

格式:条件表达式 ? 值1 : 值2;

执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2。

运算符优先级

在表达式中,哪个运算符先执行后执行是要看优先级的,例如 “*、/” 的优先级高于”+、-” 。

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

expr++ expr--

从左到右

一元

++expr --expr + - ~ !

从右到左

乘性 

* /%

左到右

加性 

+ -

左到右

移位 

>> >>>  << 

左到右

关系 

> >= < <= 

左到右

相等 

==  !=

左到右

按位与


左到右

按位异或

^

左到右

按位或

|

左到右

逻辑与

&&

左到右

逻辑或

| |

左到右

条件

?:

从右到左

赋值

= + = - = * = / =%= >> = << =&= ^ = | =

从右到左

逗号


左到右