我们来看一个打印语句:
System.out.println(“xxxx”);
这个语句是标准的控制台打印语句,但是也比较繁琐,我们可以通过静态导入的方式,简化语句。示例如下:
import static net.mindview.util.Print.*;
public class Test {
public static void main(String[] args) {
print(“xxx”);
}
}
我们看到,通过静态引入,代码量减少了很多,我们可以像使用本类里面的方法一样,使用print()来打印控制台语句,但是这种方式不是在所有的场合都适用,所以我们如果需要打印的代码量很少,不需要引入这种方式,直接import引入,使用System.out.println()打印就可以了。
操作符主要用于操作数据,而且还可以生成一个新的数值。有的操作符会改变数字本身,比如++。常用的操作符有+、-、*、/等。操作符可以操作基本类型,也可以操作其他类型的对象,操作其他类型的操作符有=、==、!=。需要注意的是,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(42);
Integer b = new Integer(42);
System.out.println(a == b);
}
输出:
false
我们看到a、b两个对象的值都是42,为什么用==操作符比较是false呢,这是因为==比较的是两个对象的引用,这两个对象引用不同的对象,所以是false。
如果我们想比较两个对象的内容,那么可以使用equals()这个方法,但是基本类型还是需要使用==、!=来判断内容是否相同。
但是我们需要注意,equals()方法默认的还是比较引用,如果我们自己创建一个对象,必须要覆盖equals()这个方法,才能比较对象的内容。java类库里面大都实现了equals()方法,所以我们不需要再重写。