1.關(guān)鍵字:package ?一般為域名的倒寫悄晃,特別的凤价,org....一般有特定領(lǐng)域的(教育刽虹,挖炬。。)
import 導(dǎo)入包 ? ?一般用通配符*可全部倒入下一層包的所有文件状婶,但僅限一層;
不導(dǎo)入包的寫法:such as?
//java.util.Date.date = new java.util.Date();不知道為好
java.lang包不用導(dǎo)入
2.修飾符default,不寫默認(rèn)是default
方法的重載——作用于方法馅巷,與原方法必須同名僅僅是參數(shù)上的區(qū)別:有兩個方面:參數(shù)數(shù)據(jù)類型和參數(shù)數(shù)據(jù)個數(shù)
方法的重寫——同上區(qū)別膛虫,與原方法同名且同參,包括參數(shù)數(shù)據(jù)類型和個數(shù)的一致
3.構(gòu)造方法:new時調(diào)用 ?不自己定義系統(tǒng)有默認(rèn)的構(gòu)造方法钓猬,無參的
Java特性之一——封裝性:比如set/get(快捷鍵Ctrl+s)方法稍刀,對外只提供接口
4.子類的實例化:先調(diào)用父類的構(gòu)造方法,在調(diào)用子類(自己的)
Car car = new mycar() ? ?//父類引用指向子類對象敞曹,詳情畫出內(nèi)存圖
5.Java為什么只能單繼承账月?怎樣實現(xiàn)多繼承?
答:為了使結(jié)構(gòu)不發(fā)生混亂澳迫,本質(zhì)上是因為
從技術(shù)的角度來說局齿,是為了降低復(fù)雜性。例如橄登,A類中有一個m方法抓歼,B類中也有一個m方法讥此。如果C類單獨繼承A類或者B類時,C類中的m方法要么繼承于A類谣妻,要么繼承于B類萄喳。
而如果多重繼承的話,C類的m方法有可能來自A類蹋半,又有可能來自B類他巨,就會造成沖突。這樣的繼承關(guān)系减江,就會增加復(fù)雜性染突,甚至進(jìn)一步影響多態(tài)的靈活性。
實現(xiàn)多繼承您市,技術(shù)上用的是多態(tài)
Java明確定義觉痛,一個子類只能有一個直接的父類,不允許有多個茵休。
即是:a extends b extends c extends D.........
不允許:a extends b,c,D........
內(nèi)部類可以實現(xiàn)多繼承薪棒,for example:
classExample1 {publicString name()
{return"liutao";
}
}classExample2 {publicintage()
{return25;
}
}classMainExample
{privateclasstest1extendsExample1
{publicString name()
{returnsuper.name();
}
}privateclasstest2extendsExample2
{publicintage()
{returnsuper.age();
}
}publicString name()
{returnnewtest1().name();
}publicintage()
{returnnewtest2().age();
}publicstaticvoidmain(String args[])
{
MainExample mi=newMainExample();
System.out.println("姓名:" +mi.name());
System.out.println("年齡:" +mi.age());
}
}
6.eclipse快捷鍵
補全代碼:Alt+/
構(gòu)造函數(shù):Ctrl+s
整段注釋:Ctrl+shift+/ ? ? ? 取消注釋:Ctrl+shift+\
7.基本數(shù)據(jù)類型的包裝類
int——Integer ? char——Character ? ? ? ?其他均為首字母大寫 ?Number 子類
除了Integer和Character定義的名稱和對應(yīng)的基本類型差異大,其他六種都是將首字母大寫就可以了榕莺。
Integer,Byte,Float,Double,Short,Long都是Number類的子類俐芯。(Number類后面講);
Character和Boolean都是Object直接子類钉鸯;
8個類都是final修飾的(不可被繼承)吧史。
在Java中要將 String 類型轉(zhuǎn)化為 int 類型時,需要使用 Integer 類中的 parseInt() 方法或者 valueOf() 方法進(jìn)行轉(zhuǎn)換.
例1:
String?str?="123";
try{
inta?=?Integer.parseInt(str);
}catch(NumberFormatException?e)?{
e.printStackTrace();
}
例2:
String?str?="123";
try{
intb?=?Integer.valueOf(str).intValue()
}catch(NumberFormatException?e)?{
e.printStackTrace();
}
在轉(zhuǎn)換過程中需要注意,因為字符串中可能會出現(xiàn)非數(shù)字的情況,所以在轉(zhuǎn)換的時候需要捕捉處理異常
整型類的享元模式:
Integer a = 123; Integer b = 123; 相等嗎?true
Integer a = 246; Integer b = 246; 相等嗎唠雕?false
why????
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
==比較的是地址值 Integer的數(shù)據(jù)直接賦值贸营,如果在-128到127之間,會直接在緩沖池里獲取數(shù)據(jù)岩睁。針對-128到127之間的數(shù)據(jù)钞脂,做了一個數(shù)據(jù)緩沖池,如果數(shù)據(jù)時該范圍內(nèi)的每次并不創(chuàng)建新的空間捕儒。因為創(chuàng)建了新空間地址值不同所以是false冰啃,用equals比較就是true。