1. 程式人生 > 實用技巧 >Java學習歷程記錄(一)

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、構造方法的注意事項以及標準程式碼

注意事項:

  1. 如果你不提供構造方法,系統會自動給出一個無參構造方法。
  2. 如果你寫了構造方法,系統不再提供無參構造方法。
  3. 構造方法是可以過載的,既可以定義引數,也可以不定義引數

標準程式碼——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、異常注意事項

  1. 多個異常分別處理。
  2. 多個異常一次捕獲,多次處理。
  3. 多個異常一次捕獲一次處理
  • 執行時異常被丟擲可以不處理。即不捕獲也不宣告丟擲。
  • 如果finally有return語句,永遠返回finally中的結果,避免該情況.
  • 如果父類丟擲了多個異常,子類重寫父類方法時,丟擲和父類相同的異常或者是父類異常的子類或者不丟擲異常
  • 父類方法沒有丟擲異常,子類重寫父類該方法時也不可丟擲異常。此時子類產生該異常,只能捕獲處理,不能宣告丟擲

4、自定義異常

二十七、執行緒

1、執行緒與程序

2、併發與並行

後繼

Lambda表示式、反射、註解、IO流