Java008-运算符的易错点及常见优先级
一、运算符的易错点
(末尾有本文章所有代码,直接复制,改类名,即可用)
1、 + 相加,还可作连接符(与字符串运算时结果为字符串)。
String str = 2+"java";
System.out.println(str);// 2java
2、 / 整除,除号两边都为整数时,结果也为整数。
若结果需为数学上的除,只需在开头用1.0乘以即可。
int i = 3/2;
System.out.println(i);// 1
double j = 1.0*3/2;
System.out.println(j);// 1.5
3、 % 取余。
4、++、- - 自增、自减1。
放在变量前(如++i、–i)为先自增再运算;
放在变量后(如 i++、i–)先运算再自增。
int a = 1;
int b = a++;
System.out.println(b);// b=1
System.out.println(a);// a=2
a = 1;
b = ++a;
System.out.println(b);// b=2
System.out.println(a);// a=2
5、+=、-=、*=、 / =、 %= 赋值运算符。
右边运算后再强转为左边类型最后赋值。如 h *= d 等价于 h = (int) ( h * d);
int h = 1;
double d = 3.1;
h = (int) ( h * d);
System.out.println(h);// h=3
h = 1;
h *= d;
System.out.println(h);// h=3
6、1)逻辑与 & 、逻辑或 | :符号两边都运行。
2)短路与 && :若左边为false时则不运算右边;短路或 ||:若左边为true时则不运算右边。
3)|、|| :至少有一边为true结果为true,否则为false;&、&& :都为true结果才为true,否则为false。
7、条件表达式 ? 值1 : 值2;
首先执行条件表达式,若为true,返回值1;若为false,返回值2。
int min = 1<2?1:2;
int max = 1>2?1:2;
System.out.println(min);// min=1
System.out.println(max);// max=2
二、常见优先级
1、( )括号的优先级最高
2、逻辑(& > ^ > |)的优先级高于短路(&& > ||)
System.out.println(true&&false||false);// 结果为false
System.out.println(true||false&&false);// 结果为true
System.out.println((true||false)&&false);// 结果为false
以下为本文章所有代码
public class Operator {
public static void main(String[] args) {
//运算符
// 1、 + 相加,还可作连接符(与字符串运时结果为字符串)。
String str = 2+"java";
System.out.println(str);//2java
// 2、 / 整除,除号两边都为整数时,结果也为整数。
// 若结果需为数学上的除,只需在开头用1.0乘以即可。
int i = 3/2;
System.out.println(i);// 1
double j = 1.0*3/2;
System.out.println(j);// 1.5
//4、++、-- 自增、自减1,放在变量前为先自增再运算,放在变量后先运算再自增。
int a = 1;
int b = a++;
System.out.println(b);// b=1
System.out.println(a);// a=2
a = 1;
b = ++a;
System.out.println(b);// b=2
System.out.println(a);// a=2
// 5、+=、-=、*=、/=、%= 赋值运算符,右边运算后再强转为左边类型最后赋值。
int h = 1;
double d = 3.1;
h = (int) ( h * d);
System.out.println(h);// h=3
h = 1;
h *= d;
System.out.println(h);// h=3
//7、条件表达式 ? 值1 : 值2;
//三元运算符首先执行条件表达式,若为true,返回值1;若为false,返回值2。
int min = 1<2?1:2;
int max = 1>2?1:2;
System.out.println(min);// min=1
System.out.println(max);// max=2
//2、逻辑(& > ^ > |)的优先级高于短路(&& > ||)
System.out.println(true&&false||false);// 结果为false
System.out.println(true||false&&false);// 结果为true
System.out.println((true||false)&&false);// 结果为false
}
}