10.使用final關鍵字修飾一個變量時,是引用不能變,還是引用的對象不能變?
答:引用不能變,不能將引用再次指向另一個新的對象,但引用所指向的對象中的內容是可以改變的。
補充:
1.對於基本類型,final使數值恆定不變,而用於對象引用,final使引用恆定不變。
2.一個既是static又是final的域只占據一段不能改變的存儲空間。
3.定義為public,則可以被用於包之外;定義為static,則強調只有一份;定義為final,則說明他是一個常量。
4.帶有恆定初始值(即編譯其常量)的final static基本類型全用大寫字母命名,並且字與字之間用下划線隔開。
11.“==”和equals方法究竟有什么區別?
Java中的數據類型,可以分為兩類:
一.基本數據類型:
數值型 :(整數類型byte,short,int,long)(浮點類型float,double)
字符型 :char
布爾型 :boolean
他們之間的比較,應該用雙等會(==),比較的是他們的值。
二.引用數據類型:
類 :class
接口 :interface
數組 :[ ]
當他們用==進行比較的時候,比較的是對象的引用。
說明:java當中所有的類都繼承於Object這個基類,在object中的基類定義了一個equals方法,public boolean equals(Object obj) {
return
(
this
== obj);
}
這個方法的初始行為是比較引用,但在一些類庫中這個方法被覆蓋掉了,如String,Integer,Date等在這些類中equals有其自身的實現,而不再是比較對象在棧內存中的地址(即引用)了,如果不覆蓋,則equals默認行為是比較引用。
int i ;
}
public class EqualsDemo {
public static void main(String args[]){
Value v1=new Value();
Value v2=new Value();
v1.i=v2.i=100;
System.out.print(v1.equals(v2));
}
} /*Output:false
