Java算术运算符、关系运算符、逻辑运算符、赋值运算符详解与优先级关系
算术运算符、关系运算符、逻辑运算符、赋值运算符代码详解与优先级关系
- 一、算术运算符
- 二、关系运算符
- 三、逻辑运算符
- 四、赋值运算符
四种运算符优先级关系:
算术运算符>关系运算符>逻辑运算符>赋值运算符
一、算术运算符
代码举例:
public static void main(String[] args){
//除号: /
int q = 12;
int w = 5;
double result1 = q / w;// 2.0
double result3 = q / (w + 0.0);// 2.4
double result4 = (double)q / w;// 2.4
double result5 = (double)(q / w);// 2.0
//取余运算: %
//结果的符号与被模数的符号相同
int m1 = -12;
int n1 = 5;
System.out.println(m1 % n1);// -12
int m2 = 12;
int n2 = -5;
System.out.println(m2 % n2);// 12
//(前)++ :先自增1,后运算
//(后)++ :先运算,后自增1
int a1 = 10;
int b1 = ++a1;
System.out.println("a1= " + a1 + ",b1= " + b1);//a1= 11,b1= 11
int a2 = 10;
int b2 = a2++;
System.out.println("a2= " + a2 + ",b2= " + b2);//a2= 11,b2= 10
int a3 = 10;
a3++;
int b3 = a3;
System.out.println("b3= " + b3);//b3= 11,无论a3++还是++a3,结果单欧式11,因为没有运算,所以只自增
//注意:==================================================
short s1 = 10;
s1 = s1 + 1;//错误
s1++;//正确,自增1不会改变变量本身的数据类型
byte b4 = 127;
b4++;
System.out.println("b4 = "+b4);// b4 = -128
}
二、关系运算符
代码举例:
public static void main(String[] args){
int i = 10;
int j = 20;
System.out.println(i == j);//false
System.out.println(i = j);//20
boolean b5 = false;
//区分好==和=的区别。
if(b5=true)
System.out.println("结果为真");//输出"结果为真"
else
System.out.println("结果为假");
}
三、逻辑运算符
名称 | 符号 | 说明 |
---|---|---|
逻辑与 | & | 两边都为true,结果才为true |
逻辑或 | | | 只要一边为true,结果就为true |
逻辑非 | ! | 相反 |
逻辑异或 | ^ | 异或,追求的是“异”,两边都不同,结果才为true,否则为false |
短路与 | && | 两边都为true,结果才为true |
短路或 | || | 只要一边为true,结果就为true |
注意1:“&”和“&&”的区别:
&时,左边无论真假,右边都进行运算;
&&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算 。
注意2:“|”和“||”的区别:
|时,左边无论真假,右边都进行运算;
||时,如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算 。
代码举例:
public static void main(String[] args){
//“&”和“&&”的区别
boolean q1 = true;
q1 = false;
int num1 = 10;
if (q1 & (num1++ > 0)){
System.out.println("我现在在北京");
}else {
System.out.println("我现在在南京");//执行这条语句
}
System.out.println(num1);//输出11
boolean q2 = true;
q2 = false;
int num2 = 10;
if (q2 && (num2++ > 0)){
System.out.println("我现在在北京");
}else {
System.out.println("我现在在南京");//执行这条语句
}
//“|”和“||”的区别同理
//面试题===========================================================================
boolean x=true;
boolean y=false;
short z=42;
//if(y == true)
if((z++==42)&&(y=true))z++;//z==44
if((x=false) || (++z==45)) z++;
System.out.println("z"+z);//z==46
}
四、赋值运算符
- 符号: =
- 当“=”两侧数据类型不一致时, 可以使用自动类型转换或使用强制
类型转换原则进行处理。 - 支持连续赋值
- 当“=”两侧数据类型不一致时, 可以使用自动类型转换或使用强制
- 扩展赋值运算符: +=, -=, *=, /=, %=
注意:不会改变变量本身的数据类型
代码举例:
public static void main(String[] args){
//1)
short s = 3;
s = s + 2;//报错
s += 2;//不会改变变量本身的数据类型
//2)
int i = 1;
i *= 0.1;
System.out.println(i);//0
i++;
System.out.println(i);//1
//3)
int m = 2;
int n = 3;
n *= m++;// n = n * (m++);
System.out.println("m=" + m);//3
System.out.println("n=" + n);//6
//4)
int n = 10;
n += (n++) + (++n);
System.out.println(n);// 输出:32
}
原文作者:J a y
原文地址: https://blog.csdn.net/weixin_43514899/article/details/109392871
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/weixin_43514899/article/details/109392871
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章