Java基礎學習第五天——方法與數組

來源:互聯網
上載者:User

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]); }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.