欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

自学Java运算符

时间:2023-06-14
一.运算符

1.位运算:位运算是直接对整数的二进制的运算

结论:

1.位运算符操作的都是整形的数据

2.①<< : 在一定范围内,每向左移1位,相当于 *2

②>> : 在一定范围内,每向右移1位,相当于 /2

eg:①<<左移 3<<2= 结果 3*2 *2=12 。 >>右移 3>>1=1 结果 3/2=1

②无符号右移>>> 3>>>1=1 结果 3/2=1 ③ & 与运算 6&3=2 ④| 或运算 6|3=7 ⑤异或运算^ 6^3=5 ⑥取反运算~ ~6=-7

注意 无<<<

逻辑运算符:例题

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

逻辑与

短路与

区分&与 &&

//相同点1:& 与&&的运算结果相同

//相同点2:当符号左边是true时,两者都会执行符号右边的运算

//不同点:当符号左边是false时,&继续执行符号右边运算,&&不在执行符号右边的运算

eg:1 int x=1; int y=2;if(x++==2 & ++y==2){ //++在后先运算为false x=2 ++在前先加1为true y=2 x=7;}System.out.println("x="+x+",y="+y); //最终结果x=2,y=2eg2; int x=1,y=1; if(x++==2 && ++y==2){ //++在后先运算为false x=2 ++y==2不看(短路) x=7; }System.out.println("x="+x+,"y="+y);//结果x=2,y=1eg1; int x = 1,y = 1; if(x++==1 | ++y==1){ //x=2 为true y=2为false 进入x=7的运算 x=7; }System.out.println("x="+x",y="+y"); //结果x=7,y=2 eg:2 int x =1,y = 1; if(x++==1 || ++y=1){ //x=2为true 后面++y==1短路 进入x=7的运算 x=7; } System.out.println("x="+x+",y=+y");// x=7,y=1

逻辑或

短路或

区分:| 与 ||

//相同点1:| 与 ||的运算结果相同

//相同点2:当符号左边是false时,两者都会执行符号右边的运算

//不同点3:当符号左边是true时,| 继续执行符号右边的运算, 而 || 不在执行符号右边的运算。

//开发中,推荐使用 ||。

三元运算符:

1.结构:(条件表达式)?表达式1 :表达式2

2.说明:

①条件表达式的结果为boolean类型。

②根据条件表达式真或假,决定执行表达式1,还是表达式2.

③如果表达式为true,则执行表达式1.

④如果表达式为false,则执行表达式2.

⑤表达式1和表达式2要求是一致的。

⑥三元运算符可以嵌套使用。

3.

①凡是可以使用三元运算符的地方,都可以改写为if-else,反之不成立

②如果程序可以使用三元运算符,又可以使用if-else结构,那木优先用三元运算符。原因:简洁,执行效率高。

练习:交换变量的值

int num1 = 10;int num2 = 20;System.out.println("num1 = "+ num1 + ",num2 = "+num2);//方式一:定义临时变量的方式//推荐方式int temp = num1;num1 = num2;num2 = temp;System.out.println("num1 ="+num1 +",num2 =" + num2);//方式二: 好处:不用定义临时变量//弊端: ①相加操作可能超出存储范围 ② 有局限性:只能用于数值类型num1 = num1 + num2;num2 = num1 - num2:num1 = num2 - num2;System.out.println("num1 ="+ num1 +",num2 =" + num2);//方法三:使用位用算符//有局限性:只能使用于数值类型num1 = num1 ^ num2;num1 = num1 ^ num2;num1 = num1 ^ num2;System.out.println("num1 = " + num1 +",num2 = " + num2);

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。