<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 技巧 1. 在同一個包中,類可以直接調用 ## 構造方法 構造方法與類名相同,且沒有返回值 ```java //Main.java 文件 public class Main { public static void main(String[] args) { UserForMe demo = new UserForMe("cpj"); //userforme:cpj } } //UserForMe.java - 構造方法 public class UserForMe { public UserForMe(String names){ System.out.println("userforme:"+names); } } ``` ## 方法的重載 同一個類中包含了兩個以上方法名相同、方法參數的個數、順序或類型不同的方法,則稱為方法的重載 當調用被重載的方法時, Java 會根據參數的個數和類型來判斷應該調用哪個重載方法,參數完全匹配的方法將被執行 ## static 靜態方法 在靜態方法中,不能調用非靜態的屬性和方法,可通過new 個自己的類進行調用 ``` // Main.java public class Main { public static void main(String[] args) { System.out.println(UserForMe.from); //china System.out.println(UserForMe.sayHello()); //hello word UserForMe user = new UserForMe(); System.out.println(user.sayHello()); //hello word } } //UserForMe.java public class UserForMe { static String from="china"; public static String sayHello() { return "hello word"; } } ``` ## 靜態初始化塊 執行順序 1.靜態初始化塊 -> 2.初始化塊 ->構造方法 并且 靜態初始化塊 只在第一次實例化時,調用. ``` public class HelloWorld { String name; // 聲明變量name String sex; // 聲明變量sex static int age;// 聲明靜態變量age // 構造方法 public HelloWorld () { System.out.println("通過構造方法初始化name -3"); name = "tom"; } // 初始化塊 { System.out.println("通過初始化塊初始化sex -2"); sex = "男"; } // 靜態初始化塊 static { System.out.println("通過靜態初始化塊初始化age -1 "); age = 20; } public void show() { System.out.println("姓名:" + name + ",性別:" + sex + ",年齡:" + age); } public static void main(String[] args) { // 創建對象 HelloWorld hello = new HelloWorld(); // 調用對象的show方法 hello.show(); HelloWorld hello2 = new HelloWorld(); } } ``` ## 內部類 ### 調用內部類 要使用內部類,需要首先對主類進行實例化,在實例化內部類 ``` //外部類HelloWorld public class HelloWorld { // 內部類Inner,類Inner在類HelloWorld的內部 public class Inner { // 內部類的方法 public void show() { System.out.println("welcome to imooc!"); } } public static void main(String[] args) { // 創建外部類對象 HelloWorld hello = new HelloWorld(); // 創建內部類對象 Inner i = hello.new Inner(); // 調用內部類對象的方法 i.show(); } } ``` ### 內部類調用外部類屬性 如何具有相同屬性,內部類需要加`this`,進行訪問 ``` public class Inner { String name = "愛慕課"; //內部類中的方法 public void show() { System.out.println("外部類中的name:" +HelloWorld.this.name ); System.out.println("內部類中的name:" +name); System.out.println("外部類中的age:" + age); } } ``` ### 靜態內部類 ``` public class HelloWorld { private static int score = 84; // 創建靜態內部類 public static class SInner { int score = 91; public void show() { System.out.println("訪問外部類中的score:" + HelloWorld.score); //調用外部類 System.out.println("訪問內部類中的score:" + score); } } // 測試靜態內部類 public static void main(String[] args) { SInner si = new SInner(); si.show(); } } ``` ### 方法內部類 內部類定義在外部方法中 ``` public class HelloWorld { private String name = "愛慕課"; public void show() { // 定義方法內部類 class MInner { int score = 83; public int getScore() { return score + 10; } } MInner mi = new MInner(); int newScore = mi.getScore(); System.out.println("姓名:" + name + "\n加分后的成績:" + newScore); } // 測試方法內部類 public static void main(String[] args) { HelloWorld mo = new HelloWorld(); mo.show(); } } ``` ## final 關鍵字 1. 修飾變量 ->變量的值只能賦值一次,常量 2. 修飾類->該類不允許被繼承 3. 修飾方法->該方法不允許被覆蓋 4. 修飾屬性-> 二選一(類的初始化必須有值或者構造方法中賦值) ## super關鍵字 1. 可以調用父類的屬性 `super.age` 2. 可以調用父類的方法 `super.eat()` 3. 調用子類的構造方法相當于隱式的在子類構造方法中調用``super()` ```java public Dofg(){ super(); System.out.println("hello word") } ``` ## Object()類 所有類的父類 常用Object類中的方法 **toString()** print 直接打印出是類的內存地址 **equals() - 比較兩個類的是否指向同一個內存地址** ``` Dog dog = new Dog(); Dog dog2 = new Dog(); //返回false,因為內存地址不相同 類似dog ==dog2 if(dog.equals(dog2)){ return true; }else{ return false; } ``` ## 多態 1. 引用多態 ``` public static void main(String[] args){ Animal obj1 = new Animal(); //父類的應用指向本類 Animal obj2 = new Dog(); //父類的應用指向子類 Dog obj3 = new Animal(); //子類應用父類錯誤 } ``` 2. 方法多態 3. 應用類型轉換 向上類型轉換(隱私/自動類型轉換),是小類型到大類型的轉換 向下類型轉換(強制類型轉換),大類型到小類型 ``` Dog dog = new Dog(); Animal animal = dog; // 自動類型提升,向上轉換 Dog dog2 = (Dog) animal; //向下類型轉換 強制類型轉換 //Cat cat = (Cat) animal; 因為不存在Cat 類,所以轉換失敗 //可以通過 Instanceof 做判斷 if ( animal instanceof Cat){ Cat cat = (Cat) animal; }else{ System.out.println("無法進行類型轉換"); } //為了保證程序的安全性 類型轉換時,都時候instanceof 做驗證 if(animal instanceof Dog ){ Dog dog2 = (Dog) animal; }else{ //todo } ``` ## 接口 1. 普通繼承 ``` public class SmartPhone extends Telphone implementsIPlayGame{ //todo } ``` 2. 匿名內部類 ``` // 方法一 IPlayGame ip3 = new IPlayGame(){ public void playGame(){ System.out.println("使用匿名內部類實現接口") } } ip3.playGame(); //方法二 new IPlayGame{ public void playGame(){ System.out.println("使用匿名內部類實現接口"); } }.playGame(); ``` ## 包裝類 例如 int、float、double、boolean、char 等。基本數據類型是不具備對象的特性的,為了讓基本數據類型也具備對象的特性, Java 為每個基本數據類型都提供了一個包裝類 |基本類型| 對應到包裝類| |---|---| |byte|Byte| |short|Short| |int|Integer| |long|Long| |float|Float| |double|Double| |char|Charcter| |boolean|Boolean| 如 Integer類型 兩個構造方法 |構造方法|說明| |---|---| |`Integer (int value)`| 創建一個Integer對象,表示指定到int值| |`Integer (String s)`|創建一個Integer對象,表示String參數所指示到int值| ``` int i =2; Integer m = new Integer(5); Inter n = new Integer("8"); ``` ### Java 中基本類型和包裝類之間的轉換 在 JDK1.5 引入自動裝箱和拆箱的機制后 1. 裝箱 ``` int i =10; Integer x = new Integer(i); //手動裝箱 Integer y = i; //自動裝箱 ``` 2. 拆箱 ``` Integer j = new Ineger(8); int m = j.intValue();//手動拆為int類型 int n = 5+j; //自動拆為int類型 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看