1. 程式人生 > >java筆記(二)

java筆記(二)

類和物件

類:類是模子,確定物件將會擁有的特徵(屬性)和行為(方法)。

類的特點:類是物件的型別(物件是具體的資料資訊),是具有相同屬性和方法的一組物件的集合。

屬性:物件具有的各種特徵(有什麼、特定值),每個物件的每個屬性都擁有特定值。

方法:物件執行的操作(能幹什麼)

  • 定義一個類
//1、定義一個類
public class demoClass {
    //2、屬性  (成員變數) 有什麼
    String name = "bob";
    int age = 22;
    //3、方法  幹什麼
    void getName(){
        System.out.println("我的名字是bob");
    }
    void getAge(){
        System.out.println("我的年齡是22");
    }
}
  • 如何使用類( 使用物件的步驟)
 //1.建立物件
    demoClass hello = new demoClass();
//2.使用物件
    hello.getName();
  • 成員變數和區域性變數

    1、成員變數:在類中定義, 作用域為整個方法內部;初始值預設為0

    2、區域性變數:在類的方法中定義,在方法中臨時儲存證據; 作用域僅限於本方法;定義時要賦值(沒有初始值),否則報錯;不同方法內可有同名區域性變數

    3、兩個變數名相同時,會取區域性變數中的值

  • 構造方法

    1、構造方法沒有返回值,名稱與類名相同;

    2、有引數的構造方法的功能就是建立例項同時給成員變數初始化(引數列表的引數是給成員變數初始化用的);

    3、當然也可以在構造方法中進行輸出操作;也可在構造方法中進行一些判斷,判斷引數是否合理,若不合理還可以進行更多的騷操作;

    4、當類中無定義構造方法時,系統預設新增無參的構造方法,當定義了構造方法時,無論是帶參的還是不帶參的,都不會自動新增無參的構造方法,所以若在類中定義了帶參的構造方法,最好也把無參的構造方法寫上;

    栗子

**建立類**
package com.test;
public class Telphone {
    public Telphone(){
        System.out.println("輸出了無引數的構造方法");
    }
    public Telphone(int num1 ,int num2){
        System.out.println( "有引數的構造方法,值為" +  num1 + "和" + num2 );
    }
}

**入口類**
package com.test;
public class testTel {
    public static void main(String [] args){
        int a1 = 21;
        int a2 = 22;
        // 五引數的構造方法
        Telphone hello = new Telphone();  //輸出了無引數的構造方法
        //有引數的構造方法
        Telphone hello2 = new Telphone(a1,a2); // 有引數的構造方法,值為21和22
    }
}

  • 靜態方法
    Java 中被 static 修飾的成員稱為靜態成員或類成員。它屬於整個類所有,而不是某個物件所有,即被類的所有物件所共享。靜態成員可以使用類名直接訪問,也可以使用物件名進行訪問。當然,鑑於他作用的特殊性更推薦用類名訪問~~我們可以基於一個類建立多個該類的物件,每個物件都擁有自己的成員,互相獨立。我們也可以建立static 靜態變數讓 該類所有的物件共用。
    栗子
public class staticVarFun {
    //定義一個靜態變數
    static String  firstName = "bob";
    //定義一個靜態方法
    public static String getName(String name){
        return name;
    }
    //入口方法
    public static void main(String [] args){
        //類名直接呼叫靜態變數
        System.out.println(staticVarFun.firstName);  //bob
        //建立類的物件
        staticVarFun hello = new staticVarFun();
        //使用物件名的形式修改靜態變數的值
        hello.firstName = "polly";
        System.out.println( hello.firstName); //polly
        System.out.println( staticVarFun.firstName); //polly
        // 呼叫靜態方法getName 
        String allScore = getName( staticVarFun.firstName);
        System.out.println( allScore); //polly
    }
}

  • static 靜態初始化塊 (靜態初始化塊只在類載入時執行,且只會執行一次)

在類的宣告中,可以包含多個初始化塊,當建立類的例項時,就會依次執行這些程式碼塊。如果使用 static 修飾初始化塊,就稱為靜態初始化塊。
需要特別注意:靜態初始化塊只在類載入時執行,且只會執行一次,同時靜態初始化塊只能給靜態變數賦值,不能初始化普通的成員變數。
栗子


public class initializeStatic {
    String name;  //申明變數name
    String sex;//申明變數sex
    static int age;//申明靜態變數age 

    public initializeStatic(){   // 構造方法
        name = "湯姆";
    }
    {
        sex = "男";
    }
    static {
        age = 24;
    }
    public void info(){
        System.out.println("姓名:" + name +" 性別:" + sex + " 年齡:" + age);
    }
    //入口方法
    public static void main(String [] args){
        // 建立物件
        initializeStatic hello = new initializeStatic();
        // 呼叫物件的info方法
        hello.info();  // 姓名:湯姆 性別:男 年齡:24
    }
}