作为才步入程序员的我来说这两个运算符极易出错,专门记录下。免得后面又忘记了。。。。。
先来了解下什么是一元运算符?
一元运算符只对一个表达式执行操作,该表达式可以是数值数据类型类别中的任何一种数据类型。自我理解--就是作用与一个表达式的运算符。
自增、自减怎么使用?
/**
* 一元运算符测试
*/
public class OperatTest {
public static void main(String[] args) {
int a = 5;
int b = a++; // 此时先赋值,再进行a++ a=6 b=5
System.out.println("这里是第一次自增:a=" + a + ",b=" + b);
int c = ++a; // 此时先计算a++,再进行赋值 a=7 c=7
System.out.println("这里是第二次自增:a=" + a + ",c=" + c);
}
}
这里要记住 ++在前面是先自增再赋值。++在后面先赋值再自增
/**
* 一元运算符测试
*/
public class OperatTest {
public static void main(String[] args) {
int i = 5;
int a = OperatTest.add(i);
System.out.println("第一次调用方法:a=" + a);
int b = OperatTest.addd(i);
System.out.println("第二次调用方法:b=" + b);
}
/**
* 先赋值,再自增
*
* @param a 参数
* @return 返回结果
*/
public static int add(int a) {
return a++; // 先赋值再自增,先return,后再自增,已经return了,就不执行后面的语句了。 所以return 5;
}
/**
* 先自增再赋值
*
* @param a 参数
* @return 返回结果
*/
public static int addd(int a) {
return ++a; // 先自增再赋值,先自增再return; 所以 return 6;
}
}
最后,来一个练习。
public static void main(String[] args) {
int a = 5;
int b = a++ + ++a + ++a + a++ + --a + a-- + a--;
System.out.println("b=" + b);
}
答案再表下面哦!
附一张运算符优先级表:
优先级 | 运算符 | 结合性 |
1 | () [] . | 从左到右 |
2 | ! +(正) -(负) ~ ++ -- | 从右向左 |
3 | * / % | 从左向右 |
4 | +(加) -(减) | 从左向右 |
5 | << >> >>> | 从左向右 |
6 | < <= > >= instanceof | 从左向右 |
7 | == != | 从左向右 |
8 | &(按位与) | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右向左 |
运行结果:
练习纯属娱乐!涉及优先级问题。哈哈哈哈