1. 程式人生 > 資訊 >【IT 之家開箱】Redmi 曲面顯示器圖賞:30 英寸 21:9 WFHD 超寬頻魚屏

【IT 之家開箱】Redmi 曲面顯示器圖賞:30 英寸 21:9 WFHD 超寬頻魚屏

java語法

流程控制

Scanner物件

用來獲取使用者的輸入

Scanner s = new Scanner(System.in);

String str = s.nextLine(System.in);

獲取字串:nex()、nextLine()

判斷是否還有輸入的資料:hasNext()、hasNestLine() 一般在讀取資料前判斷

用完之後要關掉:s.close();

增強For迴圈

迴圈陣列和集合

for (宣告語句:表示式){

}

int[] numbers = {10,20,30,42};
for(int x:numvers){
    System.out.println(x);
}

方法

public static void Hello(){
    System.out.prinln("Hello World!");
}

public 公共的

static 靜態方法:獨立該類的任何物件,不依賴類特定的例項,被類的所有例項共享

  • 能直接呼叫,不是static方法則需要例項化才能呼叫
  • static方法不能呼叫非static方法 (static方法與類同時載入,非static方法在類例項化之後才載入)
  • void 返回值
  • 值傳遞:複製實參的值給形參
  • 引用傳遞:對於物件,可以改變物件的屬性,本質還是值傳遞

方法的過載

方法名相同,但形參不同

  • 方法名相同
  • 引數列表不同
  • 返回型別可以相同可以不同
  • 僅僅返回型別不同不足以成為方法的過載

方法名相同時,編譯器根據呼叫方法的引數個數、型別等去匹配對應的方法

命令列傳參

cmd:java檔案路徑下編譯檔案 -> 退回到src檔案下執行(eg:java com.method.Demo01)並傳參

可變引數

在方法宣告中,在指定引數後加省略號

一個方法只能指定一個可變引數且必須時方法的最後一個引數

public static int add(int... num){
    
}

陣列

建立:dateType[] arrayRefVar = new dateType[arraySize];

Arrays類

面向物件

實質:以類的方式組織程式碼,以物件的組織(封裝)資料

一個類中只能有一個public

建立物件

使用new關鍵字建立物件

public class Student{
    String name;
    int age;
    public void study(){
        System.out.println(this.name+"在學習");
    }
}
public class Application{
    public static void main(String[] args){
        Student lihua = new Student;
        System.out.println(lihua.name);
        lihua.study();
    }
}

類的構造器(構造方法)

  • 例項化時會自動隱式定義,也可顯示定義
    • 必須與類的名稱相同
    • 沒有返回型別(不是void)
  • 能例項化初始值
  • 定義了有參構造,無參構造就必須顯示定義(儘量把無參構造顯化)

封裝

高內聚,低耦合

資料的隱藏

  • 屬性私有:private關鍵字
private int name;
  • get/set方法:可以操作私有屬性
public String getName{
    return this.name;
}
public void setName(String name){
    this.name = name;
}

繼承

對一批類的抽象

拓展:extends

public class Person{
    
}
public class Student extends Person(){
    
}

類只有單繼承,沒有多繼承

java中所有的類都預設繼承Object類

  • this關鍵字:引用當前物件
  • super關鍵字:引用父類物件

構造器

子類構造器預設呼叫父類構造器

呼叫構造器必須是建構函式主體的第一條語句(this()、super())

public class Person{
    
}
public class Student extends Person(){
    public Student(){
        //super();預設呼叫父類構造器
    }
}

方法的重寫

重寫(Override)都是方法的重寫,與屬性無關

public class B(){
    public static void text{
        System.out.println("B->text()");
    }
}
public class A extends B{
    public static void text(){
        System.out.println("A->text()");
    }
}
public class A extends B{
    public static void main(String[] args){
        A a = new A();
        a.text();/*靜態方法:A->text()
        		   非靜態方法:A->text()
        		  */
        
        B b = new A();//父類的引用指向了子類
        b.text();/*靜態方法:B->text()
        		   非靜態方法:A->text()
        		  */
    }
}
  • 靜態方法:方法呼叫只和定義的資料型別有關
  • 非靜態方法:重寫了父類的方法,呼叫時使用的是重寫了之後的方法(需要用public)
  • 修飾符:public > protected > default(預設) > private(範圍可以擴大但不能縮小)

多型

同一方法可以根據傳送物件的不同而採用不同的行為方式

一個物件的實際型別是確定的,指向的引用型別不確定

Student s1 = new Student();
Person s2 = new Student();
Object s3 = new Student();
  • 物件能執行的方法主要看定義的型別

  • 多型存在的必要條件

    • 繼承
    • 重寫
    • 父類引用指向子類物件
  • 關鍵字instanceof:a instanceof b判斷兩個物件之間是否存在父子關係(a(a的實際型別)是否是b的子類)

static

類載入時static方法就載入

public class Demo{
    static{}//靜態程式碼塊,最先載入,只執行一次
    {}//匿名程式碼塊,其次載入,可以用來賦初值
    public Demo(){}//構造器,最後載入
}
  • 靜態匯入包:可以直接使用方法
import static java.lang.Math.random;

抽象類

  • 關鍵字:abstract

不能new抽象類

抽象類裡可以寫普通方法

抽象方法必須在抽象類中

//抽象類
public abstract class Action{
    //約束,抽象方法
    public abstract void doSomething();
}

繼承了抽象類的子類必須實現抽象類的方法,除非子類也是抽象類

抽象類也存在構造器

介面

只有規範,不能寫方法,實現約束和實現分離:面向介面程式設計

  • 關鍵字:interface
public interface UserService{
    //介面中的所有定義都是抽象的:public abstract(方法)、public static final(屬性)
    void add();
}
public interface TimeService{
    void time();
}
  • 介面都需要有實現類

介面可以多繼承

//命名規則:介面名加Impl,用關鍵字implements實現
public UserServiceImpl implements UserService,TimeService{
    public void add(){
        
    }
    public void time(){
        
    }
}

內部類

成員內部類,靜態內部類

public class Outer{
    private int id;
    public void out(){
        System.out.println("外部");
    }
    public class Inner{
        public void in(){
            System.out.println("內部");
        }
        //能獲得外部類的私有屬性,加static之後(靜態內部類)則不能獲得
        public void getID(){
            System.out.println(id);
        }
    }
}
//例項化
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
public class Demo01{
    
}
//一個類檔案中只能有一個public類
class Demo02{
    
}

區域性內部類

public class Demo01{
    public void method(){
        class Inner{
            public void in(){
                
            }
        }
    }
}

匿名內部類

public class Demo01{
    public void run(){
        
    }
}
new.Demo01().run();//沒有名字

異常

把異常當做物件處理,並定義一個基類java.lang.Throwable作為所有異常的超類

  • 關鍵字:try、catch、finally、throw、throws
public class Demo01{
    public static void main(String[] args) {
        int a=1;
        int b=0;

        try{//try監控異常
            System.out.println(a/b);
        }catch (ArithmeticException e){//catch(捕獲的異常型別)捕獲異常,可以寫多個,捕獲多個異常
            System.out.println("0");
        }finally{//善後,可以不使用,一般用於釋放資源
            System.out.println("finally");
        }
    }
    public void add(int a,int b) throws ArithmeticException{//方法上丟擲異常
        if(b==0){
            throw new ArithmeticException();//主動丟擲異常,一般在方法中使用
        }
    }

}

自定義異常:自定義異常類並繼承Exception類