运算符和表达式
运算符
运算符分类
算数运算符
+ (加), – (减) , * (乘) , / (除) , %(取模) , ++ (自增,加一) , — (自减,减一),
关系运算符
> (大于), < (小于) , >=(大于等于) , ==(等于) , != (不等于)
逻辑运算符
&&(与) , ||(或) ,!(非) ,^(抑或)
条件运算符
表示为 “ ? : ” ,是JAVA中唯一一个三目运算符,
<1> ? <2> : <3>
1为真,1赋为2的值,1为假,1赋为3的值。
public class Example09{
public static void main(String[] args) {
int x = 5 ; //
int y = 10 ; //
int z ; //
z = y > x ? y : x ; // y > x 为true, 返回10
System.out.println(z);
}
}
运算符优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |
此表来自这篇文章
其他
在运算中 a++ 和 ++a 的区别
如果是a++,a先参加运算然后在加一,和优先级无关,如果是++a,则反,
前后自增自减运算规则
- 前自增 / 自减(++a , –a)的运算规则是:先进行自增或者自减运算,再进行表达式运算;
- 后自增 / 自减(a++ , a–)的运算规则是:先进行表达式运算,再进行自增或者自减运算。
上面的运算规则来自 这篇文章
public class Example01{
public static void main(String[] args) {
int x = 5 ;
int y = 10 ;
int z ;
z = ++x + y++ ;
System.out.println(z);
}
}
// 1+5+10,运算完成后,y+1
表达式
表达式是根据 Java 语法由变量、运算符和方法调用组成的结构,表达式的结算结果为单个值。
表达式实例
public class Expression {
public static void main(String[] args) {
int a = 10, b = 20;
// (a + b) * 2 就是一个算数表达式
int c = (a + b) * 2;
// c > b 就是一个布尔表达式
if (c > b) {
System.out.println("c大于b");
}
}
}
表达式中的数据类型转换
转换规律:
高精度(float,double等)不可以向低精度(int,long,byte等)转换
可以从低精度向着高精度转换