java編程思想學習易錯點筆記一

<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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章