1. 程式人生 > >Java暑期學習筆記(2)

Java暑期學習筆記(2)

父類 bsp cte load 同時 內部類 為什麽 定義 demo

# 18/07/10 #
* 1.非靜態的成員方法,既可以訪問靜態成員也可以訪問非靜態;
靜態的成員方法,只可以訪問靜態成員,不可以訪問非靜態。
* 2.在靜態方法中是沒有this關鍵字的
* 如何理解呢?
* 靜態是隨著類的加載而加載,this是隨著對象的創建而存在。
* 靜態比對象先存在。
* 3.如果一個類中所有方法都是靜態,要將構造方法私有,目的是不讓其他類創建本對象,直接用類名,調用即可。arrayTool.print();
* 4.通過javadoc命令生成說明書
* @author(提取作者內容)
* @version(提取版本內容)
* javadoc -d 指定的文件目錄 -author -version ArrayTool.java
* @param 參數名稱//形式參數的變量名稱@return 函數運行完返回的數據
* 5.獲取隨機數的方法
* public static double random():返回帶正號的 double 值,該值大於等於 0.0 且小於 1.0。
* 6.獲取一個1-100之間的隨機數
* int number = (int)(Math.random()*100)+1;
* 7.this.成員方法 調用本類的成員方法,也可以調用父類的方法;
super.成員方法 調用父類的成員方法
* 8.構造代碼塊(在類中方法之外)每創建一次就會執行一次,優先於構造函數執行
* 9.靜態代碼塊隨著類的加載而加載,只執行一次,優先於主方法實行
* 10.子類重寫父類方法時,訪問權限不能更低,最好就一致。
父類靜態方法,子類也必須通過靜態方法進行重寫
* 11.方法重寫(Override):子類中出現了和父類中方法聲明一模一樣的方法。與返回值類型有關,返回值是一致(或者是子父類)的。
方法重載(Overload):本類中出現的方法名一樣,參數列表不同的方法。與返回值類型無關。
* 12.final修飾特點
* 修飾類,類不能被繼承
* 修飾變量,變量就變成了常量,只能被賦值一次
* 修飾方法,方法不能被重寫
* 13.final關鍵字修飾局部變量:引用類型,是地址值不能被改變,對象中的屬性可以改變
* 14.多態中的成員的成員變量(Father f = new Son();)
* 編譯運行都看父類
* 15.多態中的成員的成員方法
* 編譯看父類,運行看子類
* 靜態方法 編譯運行都看父類
* 16.當做參數的時候用多態最好,因為擴展性強
*
method(new Dog());
method(new Cat());
public static void method(Animal a){
c.eat();
}
* 關鍵字 instanseof 判斷前邊的引用是否是後邊的數據類型
*
if(a instanceof Cat){
Cat c = (Cat)a;
c.eat();
c.catchMouse();
}
* 17.抽象類中的子類要麽是抽象類,要麽重寫抽象類中的所有方法
* 18.abstract
* abstract不能修飾成員變量。有構造方法。
* abstract和static 不能共存。static可以用類名調用,但調用抽象方法沒有意義。
* abstract和final abstract強制子類重寫,但final不讓子類重寫
* abstract和private private不讓子類訪問
* 19.接口
* 接口中的方法都是抽象的,不能定義非抽象的(public abstract)
* 接口不能被實例化
* 成員變量只能是常量(默認修飾符:public abstract 位置可以相互交換)
* 沒有構造方法
* 類可以同時實現多個接口--class Demo implements InterA,InterB{...}
* 接口與接口是繼承關系,可以單繼承,也可以多繼承
*
interface Inter {
public abstract void print();
}
class Demo implements Inter{
public void print(){
System.out.println("print!");
}
}
* 20.如何編譯運行帶包的類
* a:javac編譯的時候帶上-d即可
* javac -d . HelloWorld.java
* b:通過java命令執行。
* java 包名.HellWord
* 21.在開發中用的都是導入具體的類
* 22.package---import----class
* 23.四種權限修飾符

本類 同一個包下(子類和無關類) 不同包下(子類) 不同包下(無關類)
private Y
默認 Y Y
protected Y Y Y
public Y Y Y Y

* 24.內部類
*
main 創建內部類對象 Outer.Inner oi = new Outer().new Inner();
class Outer{
private int num = 10;
class Inter{
public void method(){
System.out.println("hello");
System.out.println(Outer.this.num);//10他能獲得外部類名
}
}
}

* 成員內部類被靜態修飾後的訪問方式是:
* 外部類名.內部類名 對象名 = 外部類名.內部類對象;
* 25.局部內部類只能在其所在的方法中訪問
* 局部內部類在訪問他所在方法中的局部變量必須用final修飾,為什麽?
* 因為當調用這個方法時,局部變量如果沒有用final修飾,他的生命周期和方法的生命周期是一樣的,當方法彈棧,這個局部變量也會消失,那麽如果局部內部類對象還沒有馬上消失想用這個局部變量,就沒有了,如果用final修飾會在類加載的時候進入常量池,即使方法彈棧,常量池的常量還在,也可以繼續使用。但是jdk1.8取消了這個事情,所以我認為這是個bug

Java暑期學習筆記(2)