Java筆記整理——對象(上)

1、創建對象後如果希望成員變量不被其中任何一個對象改變,可以使用static關鍵字。
實例代碼如下:
public class AccessProperty {
 static int i = 47;
 public void Call(){
  System.out.println("調用Call方法");
  for(i = 0; i < 3; i++){
   System.out.print(i + " ");
   if(i == 2){
    System.out.println("\n");
   }
  }
 }
 public AccessProperty(){
 
 }

 public static void main(String[] args) {
  AccessProperty t1 = new AccessProperty();
  AccessProperty t2 = new AccessProperty();
  t2.i = 60;
  System.out.println("第一個實例對象調用變量i的結果:" + t1.i);
  t1.Call();
  System.out.println("第二個實例對象調用變量i的結果:" + t2.i);
  t2.Call();
 }
}
輸出結果如下:
第一個實例對象調用變量i的結果:60
調用Call方法
0 1 2

第二個實例對象調用變量i的結果:3
調用Call方法
0 1 2 

從上述運行結果可以看到,由於使用了t2.i = 60語句改變了靜態成員變量的值,使用對象t1調用成員變量的值也爲60,這正是i值被定義爲靜態成員變量的結果,即使使用兩個對象對同一個靜態成員變量進行操作,依然可以改變靜態成員變量的值,因爲在內存中兩個對象同時指向同一塊內存區域。

2、對象的引用
引用指示存放一個對象的內存地址,並非存放一個對象,嚴格地說引用和對象是不同的,但是可以將這種區別忽略,如可以簡單的說book是Book類的一個對象,而事實上應該是book包含Book對象的一個引用

3、對象的比較
在Java語言中有兩種對象的比較方式,分別是“==”運算符和equals()方法。其區別是:equals()方法是String類中的方法,它用於比較兩個對象引用所指的內容是否相等;而“==”運算符比較的是兩個對象引用的地址是否相等。如下面的實例代碼:
 public static void main(String[] args) {
  String c1 = new String("abc");
  String c2 = new String("abc");
  String c3 = c1;
  System.out.println("c2==c3的運算結果是:" + (c2 == c3));
  System.out.println("c2.equal(c3)的結果是:" + c2.equals(c3));
 }
運算結果是:
c2==c3的運算結果是:false
c2.equal(c3)的結果是:true
從上述結果看,由於c1與c2是兩個不同的對象引用,兩者在內存中的位置不同,er“String c3 = c1;”語句將c1的引用賦給c3,所以c1與c3這兩個對象引用是相等的,也就是打印c1 == c3這樣的語句將返回true值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章