运算符
基本算术运算符
+:加号
1.加法:1+1
2.正数:+2
3.连接字符串:"hello"+"world"
-:减号
1.减法:1-1
2.负数:-2
*:乘号
乘法:1*1
/:除号(取整)
取整:例如:5/2,结果是2,而不是2.5。10/3,结果是3。
%:取模(取余)
取余:例如:10%3,结果是1。5%3,结果是2。
++:自增
表示自增,每次自增+1
--:自减
表示自减,每次自减-1
自增或自减使用注意事项;
++ 或者 -- ,当变量不参与运算时,写在变量前或者变量后,效果一样,都是自增或者自减1
当变量参数运算时,++或--写在变量前,先进行变量自身的++或--,再进行运算
++或--写在变量后,先使用变量值本身进行运算,运算完毕再进行变量 自身的++或--
代码如下:
public static void main(String[] args) { // 赋值 int i= 9;// i = 9; i++;// i = i + 1 ; i = 10; ++i;// i = i + 1 ; i = 11; int y = (i++)+5;// 先运算,在++, 1) y = i+5; y = 16 2)i++ ; i = 12 int z = (++i)+6;// 先++,再运算, 1) i = i + 1 ;i = 13 2)z = i+6; z = 19 System.out.println(i);// 13 System.out.println(y);// 16 System.out.println(z);// 19 }
赋值运算符
=:Java中,“=”不再是等于号,而是赋值号,将“=”右边的结果赋值给“=”左边。
例如:a=1;就是将1赋值给a,得到的结果就是a现在就是1。
+=:先运算,再赋值
例如:i += 1,意思就是先进行运算 i + 1,将 i + 1 的结果再赋值给 i 。
-= : int i = 10;i-=3; 相当于 i = i-3;
*= : int i = 10; i *=2; 相当于 i = i *2;
/= : int i = 10; i /=2; 相当于 i = i /2;
%= : int i = 10; i %=2; 相当于 i = i %2;
代码入下:
public static void main(String[] args) { // 赋值 int i = 9; System.out.println(i);// 9 // += 相当于: i= i+2; 1) 先进行运算i+2 2) 将i+2的结果,赋值给变量i i+=2; System.out.println(i);// 11 }
比较运算符
进行两个数据的比较,比较运算符的结果,并不是一个数值,结果是boolean (true真 false假),数据不能做连续的比较
== : 相等,比较两个等号两边的数据,是否相等,相等返回true,不等返回false
!= : 不等,判断等号两边的数据,是否不相同,如果不相等,那么返回值为true,如果相等,返回值就是false
> : 判断左边的数是否大于右边
< : 判断左边的数是否小于右边
>= 判断左边的数是否大于等于右边
<= 判断左边的数是否小于等于右边
逻辑运算符
将表达式真假值判断做合理的逻辑结合,逻辑运算符的结果,也不是一个数值,结果是boolean类型 (true真 false假)
& : 与。要求符号两端的数据是布尔类型,两边必须都是true,返回值才是true,否则就是false。
&&:短路与,又叫双与。意思和&一样,只不过性能比&好,因为如果&&左边的结果可以决定最终结果,那么&&后面的判断语句就不再进行判断。
| :或。两边的表达式必须都是布尔类型,有任意一个表达式为true,那么结果就为true,否则为false。
| |:短路或。意思和 | 一样,性能比 | 好,因为如果 | | 左边的结果可以决定最终结果,那么 | | 后面的判断语句就不再进行判断。
! : 非。true,加上非就是false。false加上!,结果就是true。
^ : 异或。左右两边表达式结果相同为假,不同为真。
三元运算符
又叫三目运算符,需要进行二者选一个的情景,会使用三元运算。
语法格式:表达式?表达式1:表达式2;
解释:首先判断表达式结果的真假,如果是true,执行表达式1,结果是false,执行表达式2。
表示式:必须是boolean类型的表达式。
三元运算的结果,类型未知(可以是任意类型,根据表达式1和表达式2的结果定)。表达式1和表达式2的类型尽量一致。
位移运算符
数据在内存中,可以通过位置的移动,来进行计算。
<< :左移,每次向左移动一位,可以让一个十进制数*2
>>: 右移,每次向右移动一位,可以让一个十进制数/2
>>>: 正数的向右移动一位,可以让一个十进制数/2
说明:
位移只能进行整数的运算
位移运算的结果,仍然是一个整数类型
>> 2,表示向右移动两位,相当于原值/2后再/2
问题:2怎么样做运算会最高效地扩大8倍?
通过位运算
2<<3 向左移动3位