1. 程式人生 > >java基礎知識——第三篇

java基礎知識——第三篇

java中方法的介紹
 函式:Java就是方法。
             方法:就是完成特定功能的程式碼塊
格式:
修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2…) {
方法體;
return 返回值;
}
修飾符:(最簡單的就是寫) public static

返回值型別:用於限定返回值的資料型別

方法名:呼叫起來更加方便
引數型別:
形參(定義時用) 接收實際引數的變數
實參(呼叫時用) 實際參與運算的變數
方法體:主要用於完成功能的程式碼。


返回值:就是功能的返回結果。(void無返回結果)
return 返回值:結束方法,把返回值帶給呼叫者


1.2 有明確返回值的方法呼叫:
A:單獨呼叫(沒有意義)
B:輸出呼叫
不是特別好,因為結果可能對於下一步呼叫來說比較麻煩
C:賦值呼叫(常用方法)

1.3 書寫方法注意的事項:
做到兩個明確:
返回值
結果的資料型別
引數
引數的個數,以及型別

1.5 方法的注意事項(依然用定義的加法的方法進行演示):
A:方法不呼叫不執行
B:方法與方法是平級關係,不能巢狀定義
C:方法定義的時候引數之間用逗號隔開
D:方法呼叫的時候不用在傳遞資料型別
E:如果方法有明確的返回值,一定要有return帶回一個值

1.9 作業:需求:鍵盤錄入三個資料,返回三個數中的最大值(寫成一個方法可以直接呼叫並且返回值)

import java.util.Scanner;
class FunctionTest3 {
public static void main(String[] args) {
//建立物件
Scanner sc = new Scanner(System.in);

System.out.println("請輸入第一個資料:");

int x = sc.nextInt();
System.out.println("請輸入第二個資料:");
int y = sc.nextInt();
System.out.println("請輸入第三個資料:");
int z = sc.nextInt();

int max = getMax(x,y,z);

System.out.println(max);
}
public static int getMax(int a,int b,int c) {

int temp = a>b?a:b;
int max = temp>c?temp:c;
return max;
}
}

二:方法過載(簡單理解就是同名【方法名】不同參【引數】)   [引數個數或者型別不同]

方法過載:
在同一個類中,允許存在一個以上的同名方法,只要它們的引數個數或者引數型別不同即可。

方法過載特點
與返回值型別無關,只看方法名和引數列表
在呼叫時,虛擬機器通過引數列表的不同來區分同名方法

三:陣列
3.1
陣列:陣列是儲存同一種資料型別多個元素的集合
注意:陣列既可以儲存基本資料型別,也可以儲存引用資料型別
3.2
陣列的定義格式
A:資料型別[] 陣列名;
int[] arr;
B:資料型別 陣列名[];
int arr[];


區別:念法上區別
int[] arr;
int型別的陣列,arr
int arr[];
int型別的,arr[]
3.3
陣列初始化概述:
A:Java中的陣列必須先初始化,然後才能使用。
B:所謂初始化
就是為陣列中的陣列元素分配記憶體空間,併為每個陣列元素賦值。
3.4
如何為陣列進行初始化呢?
A:動態初始化:初始化時只指定陣列長度,由系統為陣列分配初始值。
B:靜態初始化:初始化時指定每個陣列元素的初始值,由系統決定陣列長度。
3.5
動態初始化:
初始化時只指定陣列長度,由系統為陣列分配初始值。


格式:
資料型別[] 陣列名 = new 資料型別[陣列長度];


陣列長度其實就是陣列中元素的個數。
3.6
為了方便我們獲取陣列中的元素,陣列就為每個元素進行了編號,從0開始。
這個編號,專業叫法:索引。(角標,下標)
有了索引如何獲取元素呢?
格式:陣列名[索引]

靜態初始化:
初始化時指定每個陣列元素的初始值,由系統決定陣列長度。


格式:
資料型別[] 陣列名 = new 資料型別[]{元素1,元素2,…};


簡化格式:
資料型別[] 陣列名 = {元素1,元素2,…};

陣列操作常見的兩個小問題
ArrayIndexOutOfBoundsException:陣列索引越界異常(訪問長度超過了陣列的定義長度)

NullPointerException:空指標異常(引用已經不再指向堆記憶體)
一般來說,只要是引用型別的變數,我們在使用前,都要先判斷是否為null。
如果不為null,才繼續使用。

3.13
陣列遍歷:
依次輸出陣列中的每一個元素


陣列遍歷標準格式:
for(int x=0; x<陣列名.length; x++) {
System.out.println(陣列名[x]);
}


作業:陣列元素查詢(查詢指定元素第一次在陣列中出現的索引),
封裝成方法分析:
返回值:int型別
引數列表:int[]陣列,需要查詢的元素

四:類與物件
1:我們學習程式語言,就是為了模擬現實世界的事物,實現資訊化。
                2:我們是如何描述現實世界的事物的呢?
屬性 就是該事物的描述資訊(舉例,人,汽車)
行為 就是該事物能夠做什麼(舉例,人,汽車)

人:
屬性:姓名,年齡,身高,髮色
行為(功能):吃,睡覺,玩遊戲,

汽車:
屬性:顏色,品牌,價格,排量,動力
行為:賽車,拉人

5.3:我們學習的Java語言最基本單位是類,所以,我們就應該把事物用一個類來體現。
5.4:類與物件
類:是一組相關的屬性和行為的抽象
物件:是該類事物的具體體現。(例項)

舉例:
物件:張三
類:學生

五:類的定義
1 類是用來描述現實世界事物的。

事物:
屬性 特徵
行為 功能


類:
成員變數 特徵
成員方法 功能

類的組成:
成員變數 類中方法外的變數
成員方法 沒有static修飾的方法


需求:
用Java語言體現學生類。


分析:
A:得到學生事物
B:把學生事物轉換為學生類
C:用程式碼體現學生類


實現:
A:得到學生事物
屬性:
行為:
B:把學生事物轉換為學生類
成員變數:
成員方法:
C:用程式碼體現學生類
學生類:

成員變數:

成員方法:

2
練習:
模仿學生類,寫出手機類。
1.得到手機類事物
屬性:顏色,品牌,價格
行為:發簡訊,聊微信,打電話
2.事物轉換成手機類
成員變數:String color,String brand,int price
成員方法:sendMessage(),weiChat(),call()
3.用java程式碼實現
類:

成員變數:

成員方法:

六:
類的使用(重要:new關鍵字的含義)
.1 一個檔案一個類
類的使用(拿學生類過來練習,並畫記憶體圖進行講解)
使用一個類,其實是使用該類的成員。(變數和方法)


我們要想想用一個類的成員,就必須建立該類的物件。
如何建立類的物件呢?
格式:
類名 物件名 = new 類名();
就表示建立了該類型別的一個物件。

如何使用成員呢?
成員變數:
物件名.變數;
成員方法:
物件名.方法名(...);

七:成員變數和區域性變數的區別?
A:在類中的位置不同
成員變數 類中方法外
區域性變數 方法內或者方法宣告上
B:在記憶體中的位置不同
成員變數 堆記憶體
區域性變數 棧記憶體
C:生命週期不同
成員變數 隨著物件的存在而存在,隨著物件的消失而消失
區域性變數 隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失
D:初始化值
成員變數 有預設初始化值
區域性變數 沒有預設初始化值

八:形式引數問題
資料型別:
基本型別:4類8種。byte,short,int,long,float,double,char,boolean
基本型別實際引數傳遞的時候傳遞的是這個基本型別的具體的值
引用型別:類,介面,陣列
引用型別進行引數傳遞的時候,傳遞的是該引用型別的(例項物件)說白了就是這個物件的地址值

九: 匿名物件:就是沒有名字的物件
是物件一種簡寫形式。

應用場景:
A:呼叫方法(物件呼叫方法僅僅一次的時候)
B:作為實際引數傳遞