Java基礎學習第五天——方法與數組
| 文檔版本 |
開發工具 |
測試平台 |
工程名字 |
日期 |
作者 |
備忘 |
| V1.0 |
|
|
|
2016.02.24 |
lutianfei |
none |
第三章Java基礎文法
方法
方法就是完成特定功能的代碼塊,即函數。
格式:
修飾符 傳回值類型 方法名(參數類型 參數名1,參數類型 參數名2…) { 函數體; return 傳回值; }
詳細解釋:
修飾符,目前就用public static,後詳解。 傳回值類型:就是功能結果的資料類型。 方法名:符合命名規則即可,方便我們的調用。 參數:
實際參數:就是實際參與運算的。 形式參數:就是方法定義上的,用於接收實際參數的。 參數類型:就是參數的資料類型。 參數名:變數名 方法體語句:就是完成功能的代碼 return:結束方法的。 傳回值:就是功能的結果,由return帶給調用者。
方法重載方法重載概述
在同一個類中,允許存在一個以上的
同名方法,只要它們的
參數個數或者
參數類型不同即可。
方法重載特點
與
傳回值類型無關,只看
方法名和
參數列表 在調用時,虛擬機器通過參數列表的不同來區分同名方法
eg:
class FuncionTest{ public static void main(String[] args){ //Test1 short b1 =3; short b2 =4; System.out.println("short:"+compare(b1,b2)); }//*******************************************************//// Function :byte type public static boolean compare(byte a, byte b){ System.out.println("byte type"); return a==b; }//-------------------------------------------------------////*******************************************************//// Function :short type public static boolean compare(short a, short b){ System.out.println("short type"); return a==b; }//-------------------------------------------------------////*******************************************************//// Function :int type public static boolean compare(int a, int b){ System.out.println("int type"); return a==b; }//-------------------------------------------------------////*******************************************************//// Function :long type public static boolean compare(long a, long b){ System.out.println("long type"); return a==b; }//-------------------------------------------------------//
數組數組概念
數組是儲存同一種資料類型多個元素的集合。也可以看成是一個容器。 數組既可以儲存基礎資料型別 (Elementary Data Type),也可以儲存引用資料類型。
數組的定義格式
格式1:資料類型[] 數組名; 格式2:資料類型 數組名[]; 注意:這兩種定義做完了,數組中是沒有元素值的。還需對數組的元素進行初始化。
eg:
A:int[] a; 定義一個int類型的數組a變數 B:int a[];定義一個int類型的a陣列變數
註:
1:針對數組定義兩種格式,推薦使用第一種格式。因為第一種的可讀性更強。第二種早期的時候確實有很多人這樣用。不過,現在這樣用的人越來越少了。 2:作為Java的粉絲C#(Java的模仿者)就不再支援第二種文法格式了。越來越多的語言可能會拋棄第二種格式。
數組初始化概述:
Java中的數組必須
先初始化,然後才能使用。 所謂初始化:就是為數組中的數組元素
分配記憶體空間,並為每個數組元素
賦值。
數組的初始化方式
動態初始化:初始化時只指定數組
長度,由
系統為數組分配
初始值。
靜態初始化:初始化時指定每個數組元素的
初始值,由
系統決定數組
長度(用的更多)。
動態初始化:初始化時只指定數組長度,由系統為數組分配初始值。
格式:
資料類型[] 數組名 = new 資料類型[數組長度];
數組長度其實就是數組中
元素的個數。 舉例:
int[] arr = new int[3]; 解釋:定義了一個int類型的數組,這個數組中可以存放3個int類型的值。
new為數組分配記憶體空間。
靜態初始化:初始化時指定每個數組元素的初始值,由系統決定數組長度。
格式:
資料類型[] 數組名 = new 資料類型[]{元素1,元素2,…}; 舉例:
int[] arr = new int[]{1,2,3}; 解釋:定義了一個int類型的數組,這個數組中可以存放3個int類型的值,並且值分別是1,2,3。 簡化的寫法
int[] arr = {1,2,3}; 注意:不能同時進行動態初始化和靜態初始化。就是不能在給定數組長度的同時給出元素。
Java中的記憶體配置Java 程式在運行時,需要在記憶體中的分配空間。為了提高運算效率,就對空間進行了不同地區的劃分,因為每一片地區都有特定的處理資料方式和記憶體管理方式。
棧 儲存
局部變數,使用完畢就消失。
堆 儲存
new出來的東西
方法區 (物件導向部分講)
本地方法區 (和系統相關)
寄存器 (給CPU使用)
局部變數
在
方法定義中或者
方法聲明上的變數 使用完畢,立即消失
堆:new出來的東西,實體,對象。
a : 每一個實體都有
首地址值 b : 每一個實體內的資料都有
預設值
byte,short,int,long: 0 float,double: 0.0 char: ‘\u0000’ boolean: false 參考型別:null c : 使用完畢後,會被記憶體回收行程
閒置時候回收。
圖解儲存空間
圖解數組記憶體三個數組
/*需求:1、定義第一個數組,定義完畢後,給數組元素賦值。賦值完畢後,在輸出數組名稱和元素。2、定義第二個數組,定義完畢後,給數組元素賦值。賦值完畢後,在輸出數組名稱和元素。3、定義第三個數組,把第一個數組的地址值給它。(注意類型一致),通過第三個數組的名稱去把元素重新賦值。4、再次輸出第一個數組名稱和元素。*/class ArrayDemo{ public static void main(String[] args){ int[] arr = new int[3]; arr[0] = 88; arr[1] = 33; arr[2] = 66; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); int[] arr2 = new int[3]; arr2[0] = 22; arr2[1] = 44; arr2[2] = 55; System.out.println(arr2); System.out.println(arr2[0]); System.out.println(arr2[1]); System.out.println(arr2[2]); //第三個數組 int[] arr3 = arr; arr3[0] = 100; arr3[1] = 200; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); }}
數組操作常見的兩個小問題數組索引越界異常
ArrayIndexOutOfBoundsException 原因:訪問到了數組中的不存在的索引時發生。
null 指標異常
NullPointerException 原因:數組引用沒有指向實體,卻在操作實體中的元素時(數組已經不在堆棧記憶體)。
Eg:
int[] arr = {1,2,3};System.out.println(arr[3]); //報錯:ArrayIndexOutOfBoundsExceptionarr = null;System.out.println(arr[0]); //報錯:NullPointerException
數組練習數組遍曆(依次輸出數組中的每一個元素)
數組屬性
length,可以得到數組長度。
int[] arr2 = {1,4,52,4,5,6,3,2,8,5,3,1,6,7,8,3,2};//length 屬性for (int x=0;x
數組擷取最值(擷取數組中的最大值最小值)
/*分析:A:從數組中人員找一個作為參照物(一般第一個),預設他是最大的。B:遍曆其他元素,一次擷取和參照我進行對比。*/class ArrayDemo{ public static void main(String[] args){ int[] arr2 = {1,4,52,4,5,6,44,2,66,323,3,22,6,23,8,654,2}; int max = arr2[0]; int min = arr2[0]; for (int x=1;x arr2[x]) ? max : arr2[x]; min = (min < arr2[x]) ? min : arr2[x]; // System.out.println(arr2[x]); } System.out.println("Max is :" +max); System.out.println("Min is :" +min); }}
數組元素逆序 (就是把元素對調)
/*分析:A:將arr[0]與arr[length-1]交換B:將arr[1]與arr[length-2]交換...C:只要做到arr.length/2即可*/class ArrayDemo{ public static void main(String[] args){ int[] arr = {1,4,52,4,5,6,44,2,66,323,3,22,6,23,8,654,2}; for(int i=0;i
數組查表法(根據鍵盤錄入索引,尋找對應星期)
import java.util.Scanner;class ArrayDemo{ public static void main(String[] args){ String[] strArr = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; Scanner sc = new Scanner(System.in); System.out.println("Please input a number(0~6):"); int index = sc.nextInt(); System.out.println(strArr[index]); }}