<pre name="code" class="java"><pre name="code" class="java">class Number { int i;}
public class Assignment {
public static void main(String[] args) {
Number n1 = new Number();
Number n2 = new Number();
n1.i = 9;
n2.i = 47;
System.out.println("1: n1.i: " + n1.i + ", n2.i: " + n2.i);
n1 = n2;
System.out.println("2: n1.i: " + n1.i + ", n2.i: " + n2.i);
n1.i = 27;
System.out.println("3: n1.i: " + n1.i + ", n2.i: " + n2.i); }} ///:~
1、上述程序结果为:9,47 47,47 27,27 因为当n1 = n2时已经改变了n1的指向(指向n2),所以后续的赋值都是只针对同一个对象。
//: c03:PassObject.java
// Passing objects to methods may not be what
// you're used to.
class Letter {
char c;
}
public class PassObject {
static void f(Letter y) {
y.c = 'z';
}
public static void main(String[] args) {
Letter x = new Letter();
x.c = 'a';
System.out.println("1: x.c: " + x.c);
f(x);
System.out.println("2: x.c: " + x.c);
}
2、上述结果为a c 这是java的方法调用中的别名问题,参数传递的是一个句柄,所以能够修改到x.c的值。
3、使用equals()方法比较两个对象的值是否相等时,若创建的类没有实现equals()方法,将无法实现比较。
l >>>= 10;
System.out.println(l);
short s = -1;
s >>>= 10;
System.out.println(s);
byte b = -1;
b >>>= 10;
System.out.println(b);
}
} ///:~
4、移位符的使用:>>>=无符号的进行右移,无需考虑负数首位为1