1. 程式人生 > >java學習筆記(6)

java學習筆記(6)

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();
 7
scan.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)