Java 学习笔记—Java基本语法(二) 运算符

运算符

算数运算符

运算符 运算
+
-
+
-
*
/
% 取余运算
++ 自增1 自增1不会改变本身变量的数据类型 (前)++:先自增1,然后再运算 (后)++:先运算,后自增1
- - 自减1 自减1不会改变本身变量的数据类型 (前)–:先自减1,然后再运算 (后)–:先运算,后自减1

赋值运算符

=

int i1 = 10;
int j1 = 10;

int i2,j2;
//连续赋值
i2 = j2 = 10;

int i3 = 10,j3 = 20;

不会改变本身的数据类型
+=

int num1 = 10;
num1 += 2;//num1 = num1 + 2
System.out.printlin(num1);//12

-=
*=
/=
%=

int num2 = 12;
num2 %= 5;//num1 = num1 % 5
System.out.printlin(num2);//2

比较运算符

比较运算符的结果是boolean类型

运算符 运算
== 相等于
!= 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
instanceof 检查是否是类的对象
int i = 10;
int j = 20;

System.out.println(i == j);//false
System.out.println(i = j);//20

逻辑运算符

说明:
1、逻辑运算符操作的都是boolean类型的变量

& 逻辑与
| 逻辑或
! 逻辑非
&& 短路与
|| 短路或
^ 逻辑异或

a b a&b a&&b a|b a||b !a a^b
true true true true true true false false
true false false false true true false true
false true false false true true true true
false false false false false false true false

区分& 与 &&
相同点1:& 与&& 的运算结果相同
相同点2:当符号左边是true时,二者都会执行符号左边的运算
不同点:当符号左边是false时,&继续执行符号右边的运算,&&不再执行符号右边的运算

区分| 与 ||
相同点1:|与|| 的运算结果相同
相同点2:当符号左边是false时,二者都会执行符号左边的运算
不同点:当符号左边是true时,|继续执行符号右边的运算,||不再执行符号右边的运算

位运算符

结论:
1、位运算符操作的都是整型的数据
2、<<:在一定范围内,每向左移一位,相当于*2
>>:在一定范围内,每向右移一位,相当于 /2

面试题:最高效的计算2 * 8 ? 2<<3 或 8<<1

运算符 运算 范例
<< 左移 左移n位就是在原来的数字上乘2的n次方
>> 右移 最高位根据原来的最高位来补,不是直接补0
>>> 无符号右移 被以为二进制最高位无论是0或者1,都用0补
& 与运算 二进制位进行&运算
| 或运算 二进制位进行|运算
^ 异或运算 二进制位进行^运算
//练习:交换两个变量的值
int num1 = 10;
int num2 = 20;

//方式一:定义临时变量的方式
//推荐的方式
int temp = num1;
num1 = num2;
num2 = temp;

//方式二:好处:不用定义临时变量
//弊端:相加操作可能超出存储范围 ;有局限性:只能适用于数值类型
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;

//方式3:使用位运算符
//有局限性:只能适用于数值类型
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;

三元运算符

1、结构:(条件表达式)?表达式1:表达式2
2、说明
1)条件表达式的结果为boolean类型
2)根据条件表达式真或假,决定执行表达式1,还是表达式2
如果表达式为true,则执行表达式1
如果表达式为false,则执行表达式2
3) 表达式1和表达式2的要求是一致的
4)三元运算符可以嵌套使用

3、凡是可以使用三元运算符的地方,都可以改写成if else

4、如果程序既可以使用三元运算符,又可以使用if-else,那么有限选择三元运算符。

//获取两个正数的较大值
int m = 12;
int n = 5;
int max = (m > n)? m : n;

double num = (m > n)? 2 : 1.0;

//(m > n)? 2 :"n大" ;//编译错误

String maxStr = (m > n )?"m大":((m == n)?"m和n相等": "n大");

运算符的优先级

注意用()

猜你喜欢

转载自blog.csdn.net/karenelise/article/details/114663647