java學習筆記(6)
阿新 • • 發佈:2017-08-18
brush 本質 運行 == scanner 私有 定義 bool 調用
java基礎知識:
1:形式參數和返回值的問題 (1)形式參數: 類名:需要該類的對象 抽象類名:需要該類的子類對象 接口名:需要該接口的實現類對象 (2)返回值類型: 類名:返回的是該類的對象 抽象類名:返回的是該類的子類對象 接口名:返回的是該接口的實現類的對象 (3)鏈式編程 對象.方法1().方法2().......方法n(); 這種用法:其實在方法1()調用完畢後,應該返回一個對象; 方法2()調用完畢後,應該返回一個對象。 方法n()調用完畢後,可能是對象,也可以不是對象。 2:包 (1)其實就是文件夾 (2)作用: A:區分同名的類 B:對類進行分類管理 a:按照功能分 b:按照模塊分 (3)包的定義 package 包名; 多級包用.分開。 (4)註意事項: A:package語句必須在文件中的第一條有效語句 B:在一個java文件中,只能有一個package C:如果沒有package,默認就是無包名 (5)帶包的編譯和運行 A:手動式 B:自動式 javac -d . HelloWorld.java 3:常見的修飾符 (1)分類: 權限修飾符:private,默認,protected,public 狀態修飾符:static,final 抽象修飾符:abstract (2)常見的類及其組成的修飾 類: 默認,public,final,abstract 常用的:public 成員變量: private,默認,protected,public,static,final 常用的:private 構造方法: private,默認,protected,public 常用的:public 成員方法: private,默認,protected,public,static,final,abstract 常用的:public (3)另外比較常見的: public static final int X = 10; public static void show() {} public final void show() {} public abstract void show(); 4:內部類 (1)把類定義在另一個類的內部,該類就被稱為內部類。 舉例:把類B定義在類A中,類B就被稱為內部類。 (2)內部類的訪問規則 A:可以直接訪問外部類的成員,包括私有 B:外部類要想訪問內部類成員,必須創建對象 (3)內部類的分類 A:成員內部類 B:局部內部類 (4)成員內部類 A:private 為了數據的安全性 B:static 為了訪問的方便性 成員內部類不是靜態的: 外部類名.內部類名 對象名 = new 外部類名.new 內部類名(); 成員內部類是靜態的: 外部類名.內部類名 對象名 = new 外部類名.內部類名(); class Outer { public int num = 10; class Inner { public int num = 20; public void show() { int num = 30; System.out.println(num); System.out.println(this.num); System.out.println(Outer.this.num); } } } 顯示結果是 30 20 10 (5)局部內部類 A:局部內部類訪問局部變量必須加final修飾。 B:為什麽呢? 因為局部變量使用完畢就消失,而堆內存的數據並不會立即消失。 所以,堆內存還是用該變量,而該變量已經沒有了。 為了讓該值還存在,就加final修飾。 通過反編譯工具我們看到了,加入final後,堆內存直接存儲的是值,而不是變量名 (6)匿名內部類 A:是局部內部類的簡化形式 B:前提 存在一個類或者接口 C:格式: new 類名或者接口名() { 重寫方法; } D:本質: 其實是繼承該類或者實現接口的子類匿名對象 (7)匿名內部類在開發中的使用 我們在開發的時候,會看到抽象類,或者接口作為參數。 而這個時候,我們知道實際需要的是一個子類對象。 如果該方法僅僅調用一次,我們就可以使用匿名內部類的格式簡化
java編程小題:
有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位
1 import java.util.Scanner; 2 public class example{ 3 public static void main(String[] args){ 4 System.out.print("請輸入一個整數:"); 5 Scanner scan = new Scanner(System.in); 6 int n = scan.nextInt(); 7scan.close(); 8 9 boolean[] isIn = new boolean[n]; 10 for(int i=0; i < isIn.length; i++) 11 { 12 isIn[i] = true; 13 } 14 15 int inCount = n; 16 int countNum = 0; 17 int index = 0; 18 while(inCount > 1) 19 { 20 if(isIn[index]){ 21 countNum++; 22 if(countNum == 3){ 23 countNum = 0; 24 isIn[index] = false; 25 inCount--; 26 } 27 } 28 index++; 29 if(index==n) 30 index = 0; 31 } 32 for(int i=0;i<n;i++) 33 if(isIn[i]) 34 System.out.println("留下的是:"+(i+1)); 35 } 36 }
java學習筆記(6)