下面”3.2 使用Java操作符”讲到了几个操作符,一般应用于基本类型,有些可以应用于字符串类型。比如+(加号/正号)、-(减号/负号)、*(乘号)、/(除号)、=(赋值号)、==(等于)、!=(不等于)、+=(加等)、-=(减等)等等。把上面的操作符作用于操作数,就可以生成新的值。
当超过一个操作符作用域操作数时,就涉及到顺序问题,这就是”3.3 优先级”要讲的内容。最简单的就是数学上的四则运算,先乘除后加减。如果想按照自己的顺序意愿执行操作符,最好的方式就是加括号,括号里的先执行。
publicstaticvoidmain(String[] args) { intx=1, y=2, z=3; inta=x+y-2/2+z; // (1) intb=x+ (y-2)/(2+z); // (2) System.out.println("a = "+a+" b = "+b); }
/* Output:
a = 5 b = 1
*/
下面重点讲解一下+应用于字符串的情况,如果两个字符串之间用+,表示把两个字符串拼在一起;如果将一个基本类型和一个字符串用+表示把基本类型转换成字符串然后跟字符串拼接在一起。
System.out.println("Hello, it’s: "+"asasa"); System.out.println(5+"a"); System.out.println("b"+6);b"+
/*Hello, it’s: asasa
5a
b6*/
”3.4 赋值”之前讲到对象的时候提到过,他的意思是“取右边的值,把它复制给左边”,右边可以使任何常数、变量或者表达式;左边是一个明确的变量名。例如:
int a = 4;
基本类型的赋值很好理解,下面重点技能一下对象引用的赋值,简单的描述一下就是如果有两个相同类型的对象,把其中一个对象赋值给另一个对象,那就变成了一个对象了。怎么理解呢?看例子:
importstaticnet.mindview.util.Print.*; classTank { intlevel; } publicclassAssignment { publicstaticvoidmain(String[] args) { Tankt1=newTank(); Tankt2=newTank(); t1.level=9; t2.level=47; print("1: t1.level: "+t1.level+", t2.level: "+t2.level); t1=t2; print("2: t1.level: "+t1.level+", t2.level: "+t2.level); t1.level=27; print("3: t1.level: "+t1.level+", t2.level: "+t2.level); } }
/* Output:
1: t1.level: 9, t2.level: 47
2: t1.level: 47, t2.level: 47
3: t1.level: 27, t2.level: 27
*///:~
刚开始创建了两个不同的对象t1和t2,本来对他们的字段level赋值了不一样的值,在把t2赋值给t1以后,t1和t2就变成了同一个对象,不管对谁的level做修改,他们都是保持一致的。同一个对象是指t1和t2两个对象的引用覆盖成t1的了,执行t1=t2以后,t2没了,你还可以理解为t2的内存不在了。如果想保持独立怎么办呢?你就针对具体的字段赋值:
t1.level = t2.level;
这就让t1和t2两个对象独立了,这点需要大家格外的留心。