標籤:
一、 第五章
調試斷點debug
1、定位邏輯錯誤(設定斷點)
2、啟動調試
3、逐步執行,觀察變數
4、修改
null與" "是有區別的,後者分配了空間
調用方法
當一個方法正在執行時,有三種情況
1、方法返回一個值
2、方法不反回一個值
3、方法拋出一個異常給調用者(以後專門討論)
方法簽名
方法簽名包括存取修飾詞、可選修飾符、 方法名、參數列表、傳回值的資料類型等資訊
例如: public static double random()
存取修飾詞
public、private、protected
可選修飾符
static、final、abstract、native、synchronized.
用static修飾的方法為靜態成員,為類的所有對象共用
在靜態方法中,只能夠直接調用靜態成員,不能直接調用非靜態成員
靜態成員的調用,通過類名打點的方式調用
在成員方法中(未被static修飾的方法),可以直接調用靜態成員與非靜態成員
形式參數與實際參數 按值調用 方法重載(真他媽機智的方式,也叫做靜態多態)
當一個類有兩到多個同名但是有不同參數列表的方法時,就是方法重載。
重載一個方法,只要方法的形式參數列表對編譯器來說是截然不同時,就會方法重載。
與參數的類型相關,與名字無關。
例如:getDay(int year)與getDay(int day)不是方法重載
而println()中如果輸入不同的參數就可以調用不同的方法
構造器 Person someOne = new Person();
注意:構造方法的名字必須和類名一致,構造方法沒有傳回型別
預設情況下,類中有一個無參構造方法
例如:public Person( ){
}
並且我們可以在這個構造方法中初始化資料。
除此之外,我們可以建立一個含參數的構造方法。
注意:如果我們寫出了有參構造器時,系統不會再產生無參構造器,如果要使用,必須自己重新再寫。
構造器是一個特殊的方法,它在類建立一個執行個體時被調用執行。
構造器的目的是初始化類的執行個體,使其成為一個有效狀態。
只要是一個對象被建立,構造器中再調用同一個類中其他的構造器,用到this語句 (必須要是構造語句中的第一句)。
例如: public Person(int stuNum,char name){
}
public Person(int stuNum,char name,String age){
this(stuNum,name);
}
比較字串的大小
忽略大小寫.equalsIgnoreCase( );
二、第六章
數組
什麼是數組?
數組是儲存在一個連續的記憶體塊中的元素集合
數組中的每個元素必須是相同的資料類型,並且通過索引 進行區分。
數組中的第一個元素的索引為0
為什麼要使用數組?
單一實值型別變數有時候很難滿足應用程式的設計要求。
數群組類型變數可以同時儲存多個同類型基礎資料類型變數或對象。
建立數組
聲明數組
int score [];
int [] score;//提倡使用的方式 分配空間
score = new int [10];(分配空間後,預設的值是0)
ArrayIndexOutOfBoundExceotion(數組下標越界)
聲明並分配空間
int [] score = new int [10];
初始化
score [0] = 1;
聲明、分配空間並初始化
int [] score = new int []{1,2,3,4,5};
int [] score = {1,2,3,4,5};//不能分開成兩條語句
數組的大小(長度)
用到length屬性
例如:for(int i = 0;i < score.length;i++){ sum += score; }
int avg = sum / score.length;
java中的數組是對象
補充
迴圈結構for each:用於數組或者集合的遍曆操作
用法:for(單個資料類型 變數 : 數組或集合的名稱){
}
例如: for (int item : score){ sum += score; }
注意:不可以通過item改變數組元素的值
對象數組/* 痛點 */
User [] users = new User[100];
數組拷貝
使用Arrays.copyof(oraginalArrays,length)
int [] score = new int []{1,2,3,4,5};
int [] temp = Arrays.copyof(score,score.length);
數組的排序(升序)
簽名 public static void sort(int [] a)
多維陣列
arrays[行][列]
arrays.length 的結果值是行數
arrays[0].length的結果是列數
如何遍曆?
for (int [] is : arr){
for(int [] i : is){
}
}
三、JVM
java程式運行在JVM上
JVM是java程式和作業系統之間的橋樑
JVM實現了java的平台無關性
JVM是記憶體配置原理的基礎與前提
記憶體配置
——寄存器
JVM內部虛擬寄存器,存取速度非常快,程式不可控制
——棧(First in,last out)
儲存局部變數的值,包括:
1、用來儲存基礎資料型別 (Elementary Data Type);
2、儲存類的執行個體(即堆區對象)的引用(指標)
——堆
用來存放動態產生的資料,比如new出來的對象。
注意建立出來的對象只包含屬於各自成員變數,並不包含成員方法。
因為同一個類的對象擁有各自的成員變數,儲存在各自的堆中。
——java運行過程涉及的記憶體地區
1、常量池
常量池就是這個類型用到的常量的一個有序集合
例如字串的建立
String str = "abc";
這裡是在常量池中尋找或者建立abc,再由棧引用常量池中的值
而String str2 = new String("abc");(這兒會建立兩個對象,分別在堆和常量池中)
先在堆中拷貝下常量池中的值,再由棧引用堆中的值
注意: System.out.println(str == str2);比較的是地址的值,返回false;
2、程式碼片段
3、資料區段
字串常用的方法
測試尾碼名字是否相同
public boolean endswith(String suffix);
返回指定字元在此字串中第一次出現的索引
public int indexOf(int ch);
傳回值是否為空白
public boolean isEmpty();
若且唯若length()為0時返回true.
分割字串
public String[] split (String regex);
Regex
結果 : { "boo", "and", "foo" }
o { "b", "", ":and:f" }
返回一個新的字串,它是此字串的一個子字串。
該子字串從指定索引處的字元開始, 直到此字串末尾。
public String substring(int beginIndex);
樣本:
"unhappy".substring(2) returns "happy"
"Harbison".substring(3) returns "bison"
"emptiness".substring(9) returns "" (an empty string)
使用預設語言環境的規則
將此 String 中的所有字元都轉換為小寫
public String toLowerCase();
使用預設語言環境的規則將此
String 中的所有字元都轉換為大寫
public String toUpperCase();
返回字串的副本,忽略前置空白和尾部空白(去掉前後空格)
public String trim();
字串的拼接
String name = "張三";
String address = "成都";
String infor = name + address;
StringBuilder = new StringBuilder();
四、補充
在字串中,length是一個屬性,後面不加括弧
而在求字串的長度的時候,調用的是一個方法,length後面要加括弧
存取修飾詞
本類 同一包中不同類 不同包 子類
public ? ? ? ?
protected ? ? ?
default ? ?
private ?
註:?表示可以使用
JAVA第二周