Java基礎(三)
1、構造方法
當一個對象被創建時候,構造方法用來初始化該對象,給對象的成員變量賦初始值。
小貼士:無論你與否自定義構造方法,所有的類都有構造方法,因為Java自動提供了一個無參數構造方法,一旦自己定義了構造方法,Java自動提供的默認無參數構造方法就會失效。
格式
修飾符 構造方法名(參數列表){ // 方法體 }
構造方法的寫法上,方法名與它所在的類名相同。它沒有返回值,所以不需要返回值類型,甚至不需要void。使用
構造方法後,代碼如下:
public class Student { private String name; private int age; // 無參數構造方法public Student() {} // 有參數構造方法 public Student(String name,int age) { this.name = name; this.age = age; } }
註意事項
1. 如果你不提供構造方法,系統會給出無參數構造方法。
2. 如果你提供了構造方法,系統將不再提供無參數構造方法。
3. 構造方法是可以重載的,既可以定義參數,也可以不定義參數。
標準代碼——JavaBean
public class ClassName{ //成員變量 //構造方法 //無參構造方法【必須】 //有參構造方法【建議】//成員方法 //getXxx() //setXxx() }
public class Student { //成員變量 private String name; private int age; //構造方法 public Student() {} public Student(String name,int age) { this.name = name; this.age = age; } //成員方法 publicvoid setName(String name) { this.name = name; } public String getName() {例子return name; } publicvoid setAge(int age) { this.age = age; } publicint getAge() { return age; } } public class TestStudent { public static void main(String[] args) { //無參構造使用 Student s= new Student(); s.setName("柳巖"); s.setAge(18); System.out.println(s.getName()+"‐‐‐"+s.getAge()); //帶參構造使用 Student s2= new Student("趙麗穎",18); System.out.println(s2.getName()+"‐‐‐"+s2.getAge()); } }
2、ArrayList使用步驟
java.util.ArrayList <E> :該類需要 import導入使後使用。
<E> ,表示一種指定的數據類型,叫做泛型。 E ,取自Element(元素)的首字母。在出現 E 的地方,我們使
用一種引用數據類型將其替換即可,表示我們將存儲哪種引用類型的元素。代碼如下:
ArrayList<String>,ArrayList<Student>
基本格式:
ArrayList<String> list = new ArrayList<String>();
在JDK 7後,右側泛型的尖括號之內可以留空,但是<>仍然要寫。簡化格式:
ArrayList<String> list = new ArrayList<>();
查看成員方法
public boolean add(E e) : 將指定的元素添加到此集合的尾部
對於元素的操作,基本體現在——增、刪、查。常用的方法有:
public boolean add(E e) :將指定的元素添加到此集合的尾部。
public E remove(int index) :移除此集合中指定位置上的元素。返回被刪除的元素。
public E get(int index) :返回此集合中指定位置上的元素。返回獲取的元素。
public int size() :返回此集合中的元素數。遍歷集合時,可以控制索引範圍,防止越界。
如何存儲基本數據類型
ArrayList對象不能存儲基本類型,只能存儲引用類型的數據。類似 <int> 不能寫,但是存儲基本數據類型對應的
包裝類型是可以的。所以,想要存儲基本類型數據, <> 中的數據類型,必須轉換後才能編寫,轉換寫法如下:
基本類型 基本類型包裝類
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
3、筆記
1、用private關鍵字將需要保護的成員變量進行修飾。 一旦使用了private進行修飾,那麽本類當中仍然可以隨意訪問。 但是!超出了本類範圍之外就不能再直接訪問了。 間接訪問private成員變量,就是定義一對兒Getter/Setter方法 ---> (像Python的__set__和__get__) 必須叫setXxx或者是getXxx命名規則。 對於Getter來說,不能有參數,返回值類型和成員變量對應; 對於Setter來說,不能有返回值,參數類型和成員變量對應。 註意事項:對於基本類型當中的boolean值,Getter方法一定要寫成isXxx的形式,而setXxx規則不變。 2、 當方法的局部變量和類的成員變量重名的時候,根據“就近原則”,優先使用局部變量。 如果需要訪問本類當中的成員變量,需要使用格式: this.成員變量名 “通過誰調用的方法,誰就是this。” 3、構造方法是專門用來創建對象的方法,當我們通過關鍵字new來創建對象時,其實就是在調用構造方法。 格式: public 類名稱(參數類型 參數名稱) { 方法體 } 註意事項: 1. 構造方法的名稱必須和所在的類名稱完全一樣,就連大小寫也要一樣 2. 構造方法不要寫返回值類型,連void都不寫 3. 構造方法不能return一個具體的返回值 4. 如果沒有編寫任何構造方法,那麽編譯器將會默認贈送一個構造方法,沒有參數、方法體什麽事情都不做。 public Student() {} 5. 一旦編寫了至少一個構造方法,那麽編譯器將不再贈送。 6. 構造方法也是可以進行重載的。 重載:方法名稱相同,參數列表不同。 4、一個標準的類通常要擁有下面四個組成部分: 1. 所有的成員變量都要使用private關鍵字修飾 2. 為每一個成員變量編寫一對兒Getter/Setter方法 3. 編寫一個無參數的構造方法 4. 編寫一個全參數的構造方法 這樣標準的類也叫做Java Bean 5、Scanner類的功能:可以實現鍵盤輸入數據,到程序當中。 引用類型的一般使用步驟: 1. 導包 import 包路徑.類名稱; 如果需要使用的目標類,和當前類位於同一個包下,則可以省略導包語句不寫。 只有java.lang包下的內容不需要導包,其他的包都需要import語句。 2. 創建 類名稱 對象名 = new 類名稱(); 3. 使用 對象名.成員方法名() 獲取鍵盤輸入的一個int數字:int num = sc.nextInt(); 獲取鍵盤輸入的一個字符串:String str = sc.next(); 6、創建對象的標準格式: 類名稱 對象名 = new 類名稱(); 匿名對象就是只有右邊的對象,沒有左邊的名字和賦值運算符。 new 類名稱(參數列表); 註意事項:匿名對象只能使用唯一的一次,下次再用不得不再創建一個新對象。 使用建議:如果確定有一個對象只需要使用唯一的一次,就可以用匿名對象。 7、Random類用來生成隨機數字。使用起來也是三個步驟: 1. 導包 import java.util.Random; 2. 創建 Random r = new Random(); // 小括號當中留空即可 3. 使用 獲取一個隨機的int數字(範圍是int所有範圍,有正負兩種):int num = r.nextInt() 獲取一個隨機的int數字(參數代表了範圍,左閉右開區間):int num = r.nextInt(3) 實際上代表的含義是:[0,3),也就是0~2 8、java.lang.String類代表字符串。 API當中說:Java 程序中的所有字符串字面值(如 "abc" )都作為此類的實例實現。 其實就是說:程序當中所有的雙引號字符串,都是String類的對象。(就算沒有new,也照樣是。) 字符串的特點: 1. 字符串的內容永不可變。【重點】 2. 正是因為字符串不可改變,所以字符串是可以共享使用的。 3. 字符串效果上相當於是char[]字符數組,但是底層原理是byte[]字節數組。 創建字符串的常見3+1種方式。 三種構造方法: public String():創建一個空白字符串,不含有任何內容。 public String(char[] array):根據字符數組的內容,來創建對應的字符串。 public String(byte[] array):根據字節數組的內容,來創建對應的字符串。 一種直接創建: String str = "Hello"; // 右邊直接用雙引號 註意:直接寫上雙引號,就是字符串對象。 9、字符串常量池:程序當中直接寫上的雙引號字符串,就在字符串常量池中。 對於基本類型來說,==是進行數值的比較。 對於引用類型來說,==是進行【地址值】的比較。 10、==是進行對象的地址值比較,如果確實需要字符串的內容比較,可以使用兩個方法: public boolean equals(Object obj):參數可以是任何對象,只有參數是一個字符串並且內容相同的才會給true;否則返回false。 註意事項: 1. 任何對象都能用Object進行接收。 2. equals方法具有對稱性,也就是a.equals(b)和b.equals(a)效果一樣。 3. 如果比較雙方一個常量一個變量,推薦把常量字符串寫在前面。 推薦:"abc".equals(str) 不推薦:str.equals("abc") ---> 當str為null時,str.equals()報錯 public boolean equalsIgnoreCase(String str):忽略大小寫,進行內容比較。 11、String當中與獲取相關的常用方法有: public int length():獲取字符串當中含有的字符個數,拿到字符串長度。 public String concat(String str):將當前字符串和參數字符串拼接成為返回值新的字符串。 public char charAt(int index):獲取指定索引位置的單個字符。(索引從0開始。) public int indexOf(String str):查找參數字符串在本字符串當中首次出現的索引位置,如果沒有返回-1值。 12、字符串的截取方法: public String substring(int index):截取從參數位置一直到字符串末尾,返回新字符串。 public String substring(int begin, int end):截取從begin開始,一直到end結束,中間的字符串。 備註:[begin,end),包含左邊,不包含右邊。
Java基礎(三)