JavaSE基礎 數組 面向對象編程理解部分關鍵字的解釋及用法
數組:可以存儲多個元素並且多個元素是同一種類型的容器
數組的定義:
數據類型[] 數組名;
例如:int[]a; 意義:定義了一個int類型的數組變量a
數據類型 數組名[];
例如:int a[]; 意義: 定義了一個int類型變量a數組
註意:雖然兩種定義方式讀法和寫法不同,但是表達的效果一樣,都是在定義一個數組,推薦使用第一種方式;
數組的初始化:
1)動態初始化: 給數組指定長度,數組中的元素值由系統默認給定 數據類型[] 數組名 = new 數據類型[數組長度] ; 2)靜態初始化: 給定數組中元素的值,數組的長度由系統給定; 數據類型[] 數組名稱= {元素1,元素2,元素3..} ;
初始化的錯誤:動靜結合定義數組要麽動態初始化,指定長度,要麽靜態初始化指定數組元素!
如何獲取數組中的元素
獲取數組中的元素:通過數組名稱獲取
格式:數組名稱[索引值],數組的索引值從0開始,最大的索引=數組長度-1
數組中經常會出現的異常:
1>ArrayIndexOutOfBoundsException:數組角標越界異常 出現的原因:訪問了數組中不存在的索引值; 解決方案:觀察數組中到底有索引值到多少; 數組長度-1 2>NullPointerException:空指針異常 (在實際開發中該異常是最多的) 出現的原因:對象為null,而開發者還要去使用對象,就會出現問題 解決方案:給某個對象進行非空判斷,防止程序程序空指針異常
數組的應用:
1>數組的遍歷: publicstatic void printArray2(int[] arr) { //左中括號 System.out.print("["); for(intx = 0 ; x < arr.length ; x ++) { //判斷當前x是否是最後一個索引 if(x==arr.length-1){//如果是最後一個索引的對應的元素 System.out.println(arr[x]+"]"); }else{ System.out.print(arr[x]+","); } } } 2>數組的最值問題: publicstatic int max(int[] arr) { //定義參照物 intmax = arr[0] ; //遍歷其他元素 for(intx = 1 ; x < arr.length ; x ++) { //獲取到每一個元素,分別和參照物進行比較,如果大了,就作為最大值進行繼續比較 if(arr[x]> max) { max= arr[x] ; } } returnmax ; }
3>數組逆序:
/*
*定義一個數組,靜態初始化
-
將數組中0索引對應的元素和arr.length-1索引對應的元素進行互換
-
將1索引對應的元素和arr.length-1-1索引對應的元素進行互換
-
....
- 只要保證數組的長度arr.length
*/
publicstatic void revers2(int[] arr) {
for(intstart = 0,end = arr.length-1 ; start<=end ;start++,end --) {
//temp中間變量
inttemp = arr[start] ;
arr[start]= arr[end] ;
arr[end]= temp ;
}
}
4>元素的查找:
數組中的元素查找法(數組中的基本查找法)
-
定義一個數組,靜態初始化,查找某個元素在該數組中第一次出現的索引
-
分析:
-
1)給出了數組
-
2)寫一個查找數組中的元素的索引的方法
publicstatic int getIndex(int[] arr,int value) { //如果沒有找到這個元素,假設找不到 intindex = -1 ; //遍歷數組 for(intx = 0 ; x < arr.length ; x ++) { //獲取到每一個元素,如果找打,修改索引值 if(arr[x]== value) { //修改 index= x ; break; } } returnindex ; }
Java為了提高程序執行效率,將內存分配為5個部分:
Java基礎之類與對象
在介紹面向對象前,先知道面向過程的思想
面向過程:
假設有一個需求:求數組中的最大值;
定義一個數組,靜態初始化---->定義一個參照物---->遍歷....
給一個需求,對需求分析,然後一步一步進行操作,最終得到某一個結果,整個過程都是自己在完成....
面向對象的思想概述:
思想的特征:
1)面向對象更符合我們的生活中的行為思想習慣
2)面向對象將我們從執行者變成了指揮者,指揮對象做事情
3)面向對象簡單性體現在這裏:讓我們事情從復雜性--->簡單化
面向對象的三大特征:
封裝
繼承
多態
舉例:
炒菜:
面向過程:買菜--->摘菜--->洗菜--->切菜--->炒菜--->出鍋
面向對象:找一個對象..--->出鍋...
面向對象在代碼中的實現:
將事物----->看成類
將事物對應的屬性--->看成這個類的成員變量
將事物對應的行為----->看成這個類的成員方法
一個標準類包括:
成員變量:姓名,年齡,性別
成員方法:set/getXXX()
學習,睡覺...
構造方法:
無參構造:
有參構造
*成員變量
面試題:
成員變量和局部變量的區別
1)在類中位置不同
成員變量:類中,方法外
局部變量:方法聲明上,或者再方法定義中
2)在內存中的位置不同:
成員變量:堆內存
局部變量:棧內存
3)生命周期不同:
成員變量:成員變量是隨著類的加載而加載,隨著類的消失而消失
局部變量:隨著方法的調用而存在,隨著方法調用完畢而消失
4)初始化值不同
成員變量:初始化由系統默認初始化,
對於成員變量,可以不給初始化值,由系統給,然後顯示初始化;
局部變量:定義一個局部變量,必須進行初始化,如果不初始化,無法使用(在使用之前進行初始化)
*成員方法
成員方法的分類:
1)按照返回值劃分
void的形式:沒有具體的返回值
非void形式:有具體返回值
2)按照參數進行劃分
空參
有參
*構造方法
構造方法作用:
就是給對象進行進行初始化
構造方法的特點:
1)方法名和類名相同
2)構造方法,連void都沒有
構造方法的註意事項:
1)之前沒有寫無參構造,系統會默認提供無參構造
2)如果我們無參構造或者有參構造,系統不會在提供無參構造;定義一個類的時候,永遠給出無參構造;
構造方法是可以重載的
創建對象經歷的過程:
匿名對象:就是創建對象的時候,沒有名字的對象,但依然在堆內存開辟空間
new對象
匿名對象在實際開發中,只用使用一次,不要使用多次 (可能會造成一個內存溢出的現象);
形式參數的問題:
如果是基本數據類型,形式參的改變對實際參數沒有影響
研究引用類型:形式參數的改變會直接影響實際參數
在Java中,創建對象:new對象
類名 對象名 = new 類名() ;
Java基礎之常用的幾個關鍵字
private的用法:
1)被private修飾的只能在本類訪問
2)可以通過公共的訪問public去間接訪問
當前成員變量和局部變量名稱一致的情況,遵循就近原則
private:體現的也是一種封裝思想
封裝: 標準類的寫法,將成員變量全部私有化,被private修飾的成員變量只能在本類中訪問,可以通過公共的訪問方法去訪問成員變量
This關鍵字:
this:代表是當前類對象,或者是(當前類對象的引用),解決局部隱藏了成員變量
例如:
publicvoid setBrand(String brand) {
// brand= brand ;
this.brand= brand;
}
關於static關鍵字:
1)靜態隨著類的加載而加載
2)static優先於對象存在
回想:main public static void main(..){...}
3)static共享數據,可以被多個對象進行共享
舉例: 飲水機(staticd的:共享的)
水杯(不能共享的...)
4)如果數據被靜態修飾的,它可以被類名直接調用
被靜態修飾的方法: 類名.方法名()
被靜態修飾的變量: 類名.變量名;
static用法:
一個類中可有靜態變量,也可以有非靜態
可以有靜態成員方法,也可以非靜態的成員方法
靜態的方法只能訪問靜態變量,或者是靜態的方法
非靜態的方法,既可以訪問靜態變量也可以非靜態的變量...
Java基礎之說明書的制作
針對數組操作的工具類
如何制作一個文檔說明書
1)創建一個數組,靜態初始化
2)創建一個工具類,ArrayTool,提供一些靜態功能
遍歷,最值,查找
3)ArrayTool,每類,方法加上文檔註釋
4)打開dos控制臺:
找到當前路徑:
javadoc-d(目錄名) -author -version ArrayTool.java
JavaSE基礎 數組 面向對象編程理解部分關鍵字的解釋及用法