1、Java操作符
-
几乎所有的操作符都只能操作基本类型。例外的操作符是“=”、“==”和“!=”,这些操作符能操作所有的对象。除此之外,String类支持“+”和“+=”。
2、优先级
-
Java对计算顺序做了特别的规定。忘记优先级规则,应该用括号明确规定计算顺序。
3、赋值
-
基本数据类型的赋值是很简单的。基本类型存储了实际的数值,而并非指向一个对象的引用。
-
对象“赋值”:对一个对象进行操作时,我们真正操作的是对对象的引用。
4、算术操作符
-
+、-、*、/、%
-
一元减号和加号与二元减号和加号都使用相同的符号。
5、自动递增和递减
-
递减操作符是“--”;递增操作符是“++”。
-
对于前缀递增和前缀递减(++a或--a),会先执行运算,再生成值。对于后缀递增和后缀递减(a++或a--),会先生成值,在执行运算。
6、关系操作符
-
关系操作符包括小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。
-
对象之间使用==或!=,是比较的对象的引用。大多数java类库都实现了equals方法,以便用来比较对象的内容,而非比较对象的引用(注:Object类比较是对象的引用,新创建的类未重写equals方法则也是比较对象的引用)。
7、逻辑操作符
-
逻辑操作符:与(&&)、或(||)、非(!)
-
短路:一旦能明确无误地确定整个表示式的值,就不再计算表达式余下部分。这将获得潜在的性能提升。
8、直接常量
-
直接常量后面的后缀字符标志了它的类型。若为大写(或小写)的L,代表Long。大写(或小写)字母F,代表float;大写(或小写)字母D,则代表double。
-
十六进制数试用于所有整数类型,以前缀0x(或0X),后面跟随0-9或小写(或大写)的a-f表示。
-
八进制数由前缀0以及后续的0-7的数字来表示。
-
指数计数法:Java中像1.39e-43f这样的表达式,其含义是1.39×10ˉ⁴³。
9、按位操作符
-
按位操作符:与(&)、或(|)、非(~)、异或(^,相同则为0,不同则为1)。
-
&=、|=和^=都是合法的(“~”是一元操作符,不可与“=”联合使用)。
10、移位操作符
-
左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)。“有符号”右移位操作符(>>)能按照操作符右侧指定的位数将操作符左边的操作数向右移动。
-
“有符号”右移位操作符使用“符号扩展”:若符号为正,则在高位插入0;若符号为负,则在高位插入1。
-
“无符号”右移位操作符(>>>),它使用“零扩展”:无论正负,都在高位插入0。
-
“移位”可与“等号”(<<=、>>=、>>>=)组合使用。此时,操作符左边的值会移动由右边的值指定的位数,再将得到的结果赋给左边的变量。
11、三元操作符
-
表达式形式:boolean-exp ? value0:value1
-
编程高效,但是很容易产生可读性极差的代码,慎重使用。
12、类型转换操作符
-
在适当的时候,Java会将一种数据类型自动转换为另一种(例如int自动转换为float)。
-
浮点型转换为整型值,总是对该数字执行截尾。舍入需使用java.lang.Math中的round()方法。
-
对基本数据类型执行算术运算或按位运算,只要类型比int小(即char、byte、short),运算之前这些值会自动转换成int,最终生成的结果就是int类型。
-
通常,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。