Java學習歷程記錄(一)
一、類與物件
1、建立類
建立一個學生類、並且創造成員變數和方法
public class student{
String name;
int age;
public void study(引數列表){
…………
}
}
2、物件的使用
注:new 出來的東西都在堆當中
類名 物件名 = new 類名();
例:student stu = new student();
3、使用物件訪問成員
訪問成員方法: 物件.成員方法();
例: stu.study();
訪問成員變數: 物件.成員變數;
例: stu.name;
二、封裝
1、private關鍵字
private 資料型別 變數名;
2、如何訪問成員變數
提供getXxx、setXxx方法 例: public class student{ private String name; private int age; public void setName(String n){ name = n; } public String getName(){ return name; } public void setAge(int a){ age = a; } public int getName(){ return age; } }
3、封裝優化(一)之this關鍵字
注:this代表所在類的當前物件的引用(地址值);即誰在呼叫,就代表誰
public class student{ private String name; private int age; public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public int age(){ return age; } }
4、封裝優化(二)之構造方法
注:當一個物件初始化時,構造方法用來初始化該物件,給物件的成員變數賦初值。
且構造方法的類名與它所在類名相同,且沒有返回值型別,且不需要void。
public class student{
private String name;
private int age;
public student(){}
public student(String name,int age){
this.name = name;
this.age = age;
}
}
5、構造方法的注意事項以及標準程式碼
注意事項:
- 如果你不提供構造方法,系統會自動給出一個無參構造方法。
- 如果你寫了構造方法,系統不再提供無參構造方法。
- 構造方法是可以過載的,既可以定義引數,也可以不定義引數
標準程式碼——JavaBean:
它是Java語言編寫類的一種標準規範,符合JavaBean的類必須是具體的且公共的,並且具有無參構造方法,提供用來操作成員變數的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;
}
//成員方法
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
三、Scanner類
1、具體實現
//導包
import java.util.Scanner;
public class student{
public static void main(String[] args){
//建立一個鍵盤錄入資料的物件
Scanner sc = new Scanner(System.in);
//System.in 表示通過鍵盤錄入資料
int a = sc.nextInt();
//表示通過物件來呼叫成員方法
//nextInt 表示將下一條標記為int
String b = sc.next();
//查詢並返回掃描器的下一個完整令牌
}
}
2、匿名物件
new Scanner(System.in).nextInt();
注意事項:
建立匿名物件直接呼叫方法,並沒有變數名
一旦呼叫了兩次方法,就建立了兩個物件,導致空間的浪費
匿名物件也可以作為方法的引數和返回值列表
四、Random類
1、具體實現
//導包
import java.util.Random;
public class student{
public static void main(String[] args){
Random r = new Random();
//產生一百以內的隨機數
for(int i=0;i<100;i++){
int num = r.nextInt();
//每呼叫一次nextInt方法,就會出現一個新的隨機數
System.out.println("隨機數:"+ num );
}
}
}
五、ArrayList類
1、具體實現
//導包
import java.util.ArrayList;
public class student(){
public static void main(String[] args){
//建立一個數組
ArrayList<String> list = new ArrayList<>();\
//從JDK7之後,右側泛型可以留空,但“<>”必須寫上
//建立學生物件
String n1 ="小杜";
String n2 ="小王";
String n3 ="小張";
//把建立的學生元素新增到集合當中,利用ArrayList這個類的方法
list.add(n1);
list.add(n2);
list.add(n3);
System.out.println(list);
//最後列印輸出
}
}
2、常用的方法
public boolean add(E e);將指定的元素新增到此集合的尾部
public E remove(int index);移除把此集合中指定位置的元素,返回被刪除的元素
public E get (index);返回此集合中指定位置的元素,返回獲取的元素
public int size();返回此集合中的元素數,遍歷集合時可以控制索引範圍,防止越界。
六、String類
1、特點
- 字串的值在建立之後不可改變。
- 因為字串String物件是不可變的,所以它們可以被共享。
- "abc" = char[] data{"a","b","c"}
2、常用的方法
判斷功能的方法:equals和equalsIgnoreCase
獲取功能的方法:length、concat、charAt、indexOf、subString
轉換功能的方法:tocharArray、getByte、replace
分割功能的方法:split
七、static關鍵字
靜態方法
靜態原理
靜態程式碼塊
八、Array類
1、運算元組的方法
public static String toString;返回指定陣列內容的字串表示形式。
public static void sort();對指定的陣列進行升序排列;
九、Math類
1、基本運算方法
public static double abs();返回double數值的絕對值
public static double ceil();返回大於等於引數的最小整數
十、繼承
1、概述
:其中多個類可稱為子類,單獨的一個類可以稱為父類、超類或者基類
2、表示形式:
class 子類 extends 父類{……}
3、成員方法重寫
: @override
4、繼承後的特點——構造方法
5、super和this關鍵字
6、繼承的特點:
- 繼承只支援單繼承,不支援多繼承。
- 繼承可以多層繼承(有體系結構)
- 子類和父類是相對概念
十一、抽象類
1、表示形式
注:修飾符和引數列表要注意
抽象類:public abstract class 類名{}
抽象方法:public abstract void 方法名();
2、注意事項
- 抽象類不能建立物件,也就是不能例項化,否則編譯不通過,但是可以建立子類繼承
- 抽象類中,可以有構造方法,是供子類建立物件時,初始化父類成員使用的
- 抽象類中不一定有抽象方法,但有抽象方法的一定是抽象類
- 抽象類的子類必須重寫父類的所有方法,否則編譯也不通過,除非子類也是抽象類
十二、介面
1、定義與實現方式
public interface 介面名{}
class 類名 implments 介面名{
//重寫介面中的抽象方法(必須)
//重寫介面中的預設方法(可選)
}
2、基本實現和多實現
注:類與介面的關係是實現關係,即類實現介面,該類可以稱為介面的實現類或者子類
抽象方法
預設方法
靜態方法
私有方法
十三、多型
1、體現
父類型別 變數名 = new 子類物件;
2、向上轉型和向下轉型
向上轉型:父類型別 變數名 = new 子類物件;
向下轉型:父類型別 變數名 = (子類型別) 子類物件;
十四、final關鍵字
十五、許可權修飾符
十六、內部類
1、概念
:如果在A類中新建一個B類,那麼就稱B類是內部類,A類是外部類
2、訪問特點
- 內部類可以訪問外部類成員,包括私有方法
- 外部類要想訪問內部類,必須得新建一個內部類的物件
3、匿名內部類(重點)
- 是內部類的簡化寫法——new 父類名或介面名();
- 匿名內部類必須是實現一個父介面或者繼承一個父類
- 也可以做為函式引數傳遞
十七、引用型別用法
1、class做為成員變數
2、interface做為成員變數
3、interface做為方法引數與返回值型別
十八、Object類、時期時間類
1、Object類
2、Date類
常用方法:
public long getTime() ;把日期時間轉換成對應毫秒值
3、DateFormat類
常用方法:
public String format();把日期格式化字串
public Date parse();把字串轉換成為Date物件
4、Calendar類
常用方法:
get和set方法
add和getTime方法
十九、System類
1、常用方法:
currentTimeMills方法
:獲取當前系統時間與1970年01月01日00:00點之間的毫秒差值
arraycopy方法
:將陣列中指定的資料拷貝到另一個數組中。
二十、StringBuilder類
1、常用方法
append方法:新增任意型別資料的字串形式,並返回當前物件自身
toString方法:將當前StringBuilder物件轉換為String物件
二十一、包裝類
基本型別 | java.lang中的包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
注:從JDK5開始就自動完成裝箱和拆箱動作
二十二、Collection介面
1、集合類的繼承體系
2、Collection常用功能
public boolean add(E e)
: 把給定的物件新增到當前集合中 。public void clear()
:清空集合中所有的元素。public boolean remove(E e)
: 把給定的物件在當前集合中刪除。public boolean contains(E e)
: 判斷當前集合中是否包含給定的物件。public boolean isEmpty()
: 判斷當前集合是否為空。public int size()
: 返回集合中元素的個數。public Object[] toArray()
: 把集合中的元素,儲存到陣列中。
List集合
1、常用方法
:get、add、remove、set方法
2、List子類
- ArrayList集合
- LinkList集合
Set介面
1、兩個集合
- HashSet集合
- LinkedHashSet集合
Colletions集合工具類
二十三、Map集合
1、常用的集合
- HashMap集合
- LinkedHashMap集合
2、Map介面中常用的方法
public V put(K key, V value)
: 把指定的鍵與指定的值新增到Map集合中。public V remove(Object key)
: 把指定的鍵 所對應的鍵值對元素 在Map集合中刪除,返回被刪除元素的值。public V get(Object key)
根據指定的鍵,在Map集合中獲取對應的值。boolean containsKey(Object key)
判斷集合中是否包含指定的鍵。public Set<K> keySet()
: 獲取Map集合中所有的鍵,儲存到Set集合中。public Set<Map.Entry<K,V>> entrySet()
: 獲取到Map集合中所有的鍵值對物件的集合(Set集合)。
二十四、泛型
1、定義格式
修飾符 class 類名<代表泛型的變數> { }
二十五、Iterator迭代器
1、常用方法
public E next();返回迭代的下一個元素。
public boolean hasNext() ;如果任有元素要返回的話,則返回ture
二十六、異常
1、異常體系
:異常的的根類是java.lang.throwable,其下有兩個子類java.lang.Exception和java.lang.Erro
2、異常處理
- 丟擲異常throw
使用格式: 在方法內——thorw new 異常類名(引數)
- Objects非空判斷
public static <T> T requireNonNull(T obj):檢視指定引用物件不是null
- 宣告異常throws
修飾符 返回值型別 方法名(引數) throws 異常類名1,異常類名2…{ }
- 捕獲異常try……catch
try{
編寫可能會出現異常的程式碼
}catch(異常型別 e){
處理異常的程式碼
//記錄日誌/列印異常資訊/繼續丟擲異常
}
- finally程式碼塊
3、異常注意事項
- 多個異常分別處理。
- 多個異常一次捕獲,多次處理。
- 多個異常一次捕獲一次處理
- 執行時異常被丟擲可以不處理。即不捕獲也不宣告丟擲。
- 如果finally有return語句,永遠返回finally中的結果,避免該情況.
- 如果父類丟擲了多個異常,子類重寫父類方法時,丟擲和父類相同的異常或者是父類異常的子類或者不丟擲異常。
- 父類方法沒有丟擲異常,子類重寫父類該方法時也不可丟擲異常。此時子類產生該異常,只能捕獲處理,不能宣告丟擲
4、自定義異常
二十七、執行緒
1、執行緒與程序
2、併發與並行
後繼
Lambda表示式、反射、註解、IO流