標籤:
1. 斷點調試
a:定位(設定斷點)
b:啟動調試
c:逐步執行 觀察變數(F5逐步執行 F6單步跳過)
d:修改
2 static 靜態
靜態成員,為類的所有對象共用
在靜態方法中,只能直接調用靜態成員,不能直接調用非靜態成員
在成員方法中,可以直接調用靜態成員與非靜態成員
靜態成員的調用: 類名打點方式調用
3 方法重載:
在一個類中有兩個及兩個以上的方法名相同,參數列表不同(參數類型 參數個數)
4 構造器 : 對象的初始化
特點: 構造器的名稱必須與類名相同; 無傳回值 無傳回型別
預設情況下,類中有一個無參構造方法
待我們寫出有 有參構造器,系統預設的無參構造器不再產生 。if......we need .....
5 在構造器中使用this
在構造器中調用其他構造器
this(); (this語句必須是本構造器的第一句)
方法摘要
1 char
charAt(int index)
返回指定索引處的 char 值。
index - char 值的索引。
2 string
concat(String str)
將指定字串串連到此字串的結尾。
str - 串連到此 String 結尾的 String。
substring(int beginIndex)
返回一個新的字串,它是此字串的一個子字串。
beginIndex - 起始索引(包括)。
3 boolean
endsWith(String suffix)
測試此字串是否以指定的尾碼結束。
suffix - 尾碼。
startsWith(String prefix)
測試此字串是否以指定的首碼開始。
equals(Object anObject)
將此字串與指定的對象比較。
anObject - 與此 String 進行比較的對象
equalsIgnoreCase(String anotherString)
將此 String 與另一個 String 比較,不考慮大小寫。
anotherString - 與此 String 進行比較的 String。
4 int
indexOf(int ch)
返回指定字元在此字串中第一次出現處的索引。
ch - 一個字元
indexOf(int ch, int fromIndex)
返回在此字串中第一次出現指定字元處的索引,從指定的索引開始搜尋。
ch - 一個字元 fromIndex - 開始搜尋的索引。
indexOf(String str)
返回指定子字串在此字串中第一次出現處的索引。
str-任一字元串
indexOf(String str, int fromIndex)
返回指定子字串在此字串中第一次出現處的索引,從指定的索引開始。
str - 要搜尋的子字串。fromIndex - 開始搜尋的索引位置。
public int lastIndexOf(int ch)
public int lastIndexOf(iint ch, int fromIndex)
public int lastIndexOf(String str)
public int lastIndexOf(String str, int fromIndex)
length()
返回此字串的長度。
方法調用棧
所有的方法都維護在一個稱為調用棧的結構中,當前正在執行的方法位於調用棧。
對於基本類型的變數:java虛擬機器將其放在棧中。
對於參考型別的變數:引用變數本身放在棧中,而引用所指向的對象是放在java堆中。引用不包含它所指向的對象的實際資料,而是指向記憶體中對象所在的位置。
如果一個變數是參考型別的,那麼變數的值就是一個記憶體位址,這個記憶體位址是引用指向的對象的位置。
按值調用
指的是在方法調用時,傳遞的參數是按值的拷貝傳遞。
樣本如下:
public class TempTest {
private void test1(int a){
//做點事情
}
public static void main(String[] args) {
TempTest t = new TempTest();
int a = 3;
t.test1(a);//這裡傳遞的參數a就是按值傳遞
}
}
按值傳遞重要特點:傳遞的是值的拷貝,也就是說傳遞後就互不相關了。
樣本如下:
public class TempTest {
private void test1(int a){
a = 5;
System.out.println("test1方法中的a==="+a);
}
public static void main(String[] args) {
TempTest t = new TempTest();
int a = 3;
t.test1(a);//傳遞後,test1方法對變數值的改變不影響這裡的a
System.out.println("main方法中的a==="+a);
}
}
運行結果是: test1方法中的a===5
main 方法中的 a===3
3.2:按引用傳遞是什麼 指的是在方法調用時,傳遞的參數是按引用進行傳遞,其實傳遞的引用的地址,也就是 變數所對應的記憶體空間的地址。
3.3:按引用傳遞的重要特點 傳遞的是值的引用,也就是說傳遞前和傳遞後都指向同一個引用(也就是同一個記憶體 空間)。
樣本如下: 第1行 public class TempTest {
private void test1(A a){
a.age = 20;
System.out.println("test1方法中的age="+a.age);
}
public static void main(String[] args) {
TempTest t = new TempTest();
A a = new A();
a.age = 10;
t.test1(a);
System.out.println("main方法中的age="+a.age);
}
}
class A{
public int age = 0;
}
運行結果如下: test1方法中的age=20
main 方法中的 age=20
(1): “在 Java 裡面參數傳遞都是按值傳遞”這句話的意思是:按值傳遞是傳遞的值的 拷貝,按引用傳遞其實傳遞的是引用的地址值,所以統稱按值傳遞。
(2):在 Java 裡面只有基本類型和按照下面這種定義方式的 String 是按值傳遞,其它 的都是按引用傳遞。就是直接使用雙引號定義字串方式:String str = “Java 私塾”;
方法的重載
當一個類有兩到多個同名 但是有不同的參數列表的方法。
重載樣本 如下例所示:
void getArea(int w,int h);
void getArea(float w,float h);
在第二種情況下,成員方法 getArea()接受兩個浮點變數作為它的參數,編譯器根據調 用時的不同參數來決定該調用哪一種成員方法,假如你把兩個整數提供給成員方法,就 調 用 第 一個成員方法;假如你把兩個浮點數提供給成員方法,第二個成員方法就被調用。 當寫代碼來調用這些方法中的一個方法時,便以其會根據提供的參數的類型來選擇合適 的方法。
注意:跟成員方法一樣,構造方法也可以重載。
2.2:方法的重載的規則
(1):方法名稱必須相同
(2):參數列表必須不同(個數不同,或類型不同,或參數排列順序不同) 。
(3):方法的傳回型別可以相同也可以不相同。僅僅傳回型別不同不足以成為方法的重 載。
數組
數組是由相同類型的若干項資料群組成的一個資料集合。也就是說數組是用來集合相同類 型的對象並通過一個名稱來引用這個集合,數組是參考型別。
聲明方法:
聲明一: int x[];
聲明二:int [] x=new int[3];
聲明三:int[]x=new int[]{3,4,5};
數組複製的方法是使用System類提供的arraycopy()方法,其文法如下:
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
System.arraycopy(源數組,源數組中的起始位置,目標數組,目標資料中的起始位置,要複製的數組元素的數量);
public class T {
public static void main(String args[]){
int arr1[] = {1,2,3,4,5};
int arr2[] = new int[5];
System.arraycopy(arr1, 0, arr2, 0, 5);
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
}
}
Arrays類
對數組的一些基本操作,像排序、搜尋與比較等都是很常見的。在java中提供了Array是類可以協助您作這幾個操作,Array是類位於java.util包中,他提供了幾個方法可以直接使用。
sort() 協助您對指定的數組排序,所使用的是快速排序法
binarySearch() 讓您對已排序的數組進行二元搜尋,如果找到指定的值就返回該值所在的索引,否則就返回負值
fill() 當您配置一個數組之後,會依據資料類型來給定預設值。例如整數數組就初始值為0,可以使用Arrays.fill()方法將所有的元素設定為指定的值
equals() 比較兩個數組中的元素值是否全部相等,如果是將返回true,否則返回false
繼承
public class Employee {
String name;
Date hireDate;
Date dateOfBirth;
String jobTitle; int grade;
... }
public class Manager extends Employee {
String department;
Employee[] subordinates;
... }
在這樣的定義中,Manager 類被定義,具有 Employee 所擁有的所有變數及方法。所有 這些變數和方法都是從父類的定義中繼承來的。
關鍵字是extends.
在 Java 程式設計語言中,對象的初始化是非常結構化的,這樣做是為了保證安全。在前面 的模組中,看到了當一個特定對象被建立時發生了什麼。由於繼承性,對象被完成,而且下 述行為按順序發生:
(1)儲存空間被分配並初始化到 0 值
(2)進行顯式初始化
(3)調用構造方法
關鍵字 super
關鍵字 super 可被用來引用該類的父類,它被用來引用父類的成員變數或方法。父類行 為被調用,就好象該行為是本類的行為一樣,而且調用行為不必發生在父類中,它能自動向 上層類追溯。
super 關鍵字的功能:
(1):點取父類中被子類隱藏了的資料成員
(2):點取已經覆蓋了的方法
(3):作為方法名表示父類構造方法
例如:
public class Employee {
private String name;
private int salary;
public String getDetails() {
return "Name: " + name + "\nSalary: " + salary; }
}
public class Manager extends Employee {
private String department;
public String getDetails() {
return super.getDetails() + // 調用父類的方法 "\nDepartment: " + department;
}
}
構造方法不能被繼承
儘管一個子類從父類繼承所有的方法和變數,但 它不繼承構造方法,掌握這一點很重要。 一個類能得到構造方法,只有兩個辦法。或者寫構造方法,或者根本沒有寫構造方法, 類有一個預設的構造方法。
調用父類構造方法
在許多情況下,使用預設構造方法來對父類對象進行初始化。 當然也可以使用 super 來顯示調用父類的構造方法。
public class Employee {
String name;
public Employee(String n) {
name = n;
}
}
public class Manager extends Employee {
String department;
public Manager(String s, String d) {
super(s);
department = d;
}
}
注意:無論是 super 還是 this,都必須放在構造方法的第一行。
單繼承性
單繼承性:當一個類從一個唯一的類繼承時,被稱做單繼承性。單繼承性使代碼更可靠。 介面提供多繼承性的好處,而且沒有(多繼承的)缺點。 Java 程式設計語言允許一個類僅能繼承一個其它類,即一個類只能有一個父類。這個限制 被稱做單繼承性。單繼承性與多繼承性的優點是物件導向程式員之間廣泛討論的話題。Java 程式設計語言加強了單繼承性限制而使代碼更為可靠,儘管這樣有時會增加程式員的工作。後面 會學到一個被叫做介面(interface)的語言特徵,它允許多繼承性的大部分好處,而不受 其缺點的影響。
調試斷點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( );
Java學習總結1