Java编程精髓知识之操作符
操作符主要用于操作数据,而且还可以生成一个新的数值。有的操作符会改变数字本身,比如++。常用的操作符有+、-、*、/等。操作符可以操作基本类型,也可以操作其他类型的对象,操作其他类型的操作符有=、==、!=。需要注意的是,String类型是可以通过+和+=来操作的。
操作符优先级
如果在一个表达式里面,有多个操作符的时候,就必须确定操作符的优先级了,从而确定计算的顺序,最常见的操作顺序是先乘除后加减,如果我们忘记了优先级,最简单的办法就是加括号来明确。
比如:int a = 1 + x -2 /3 – y和int a = 1 + (x -2 )/(3 – y)就完全不一样。
赋值
赋值操作符 = 的作用是把操作符号右边的值赋值给左边,但是左边只能是引用,用于存储右边的值,右边的值就灵活很多了,可以是变量、常数或者表达式(必须生成数值)。语法示例:
a = 5;
对基本类型使用赋值操作符,是存储了实际的数值,比如a = 6;a值变化不会影响6;
但是对其他对象使用赋值操作符的时候,本质上是将右边的对象的引用赋值左边的引用,比如:
A a = new A(); A b = new A();
a = b,如果a 和 b都是普通对象,那么a = b相当于使a和b都指向了b指向的对象。以后对a赋值其实就是对b赋值。
但是如果使用下面的语法操作,那么就是a和b两个引用就不会绑定到一个对象上了。、
a.属性 = b.属性;
算术操作符
Java语言中的操作符有加号(+)、减号(-)、除号(/)、乘号(*)和取模操作符(%,整数除法中取余数),如果整数进行除法操作,会直接去掉小数位。
java语言也有简化操作符,比如 +=和%=操作符,需要注意的是a %= b相当于a%b。
自增和自减操作符
java语言中有很多快捷运算操作符,比如自增(++)和自减(–),这两个操作符意思分别代表增加一个单位和减少一个单位。比如 a++就等同于a = a+1,a—就等同于a = a -1,这两种操作符都会改变数值本身。
自增和自减操作符有两种方式,一种是前缀式,一种是后缀式。前缀式示例:++a、–a;后缀式示例:a++、a–;前缀式先运算,后生成数值;后缀式先生成数值,再计算。
关系操作符
关系操作符有>、<、<=、>=、==和!=。关系操作符的结果只有两种,关系为真是true,关系不真是false。对于boolean类型,只能用等于和不等于,其他类型没有意义,无效。其他基本类型适用所有操作符。
对象相等判断
我们都知道关系操作符==、!=可以判断两个对象是否相等,但是==、!=比较基本类型没有问题,但是如果是其他对象,那么它们比较的是两个对象的引用,而不是内容。
比如:
public class Test { public static void main(String[] args) { Integer a = new Integer(88); Integer b = new Integer(88); System.out.println(a == b); } }
输出结果为:false
我们看到a、b两个对象的值都是88,为什么用==操作符比较是false呢,这是因为==比较的是两个对象的引用,这两个对象引用不同的对象,所以是false。
如果我们想比较两个对象的内容,那么可以使用equals()这个方法,但是基本类型还是需要使用==、!=来判断内容是否相同。
但是我们需要注意,equals()方法默认的还是比较引用,如果我们自己创建一个对象,必须要覆盖equals()这个方法,才能比较对象的内容。java类库里面大都实现了equals()方法,所以我们不需要再重写。