1. 程式人生 > >06.Java面向物件——static關鍵字

06.Java面向物件——static關鍵字

一、關於new

在定義一個類時,只是在描述某類事物的特徵和行為,並沒有產生具體的資料。只有通過new關鍵字建立該類的例項物件後,系統才會為每個物件分配空間儲存各自的資料

二、靜態變數

static只能修飾成員變數,不能修飾區域性變數

class Student {
	static String schoolName; // 定義靜態變數schoolName
}

public class Example12 {
	public static void main(String[] args) {
		Student stu1 = new Student(); // 建立學生物件
		Student stu2 = new Student();
		Student.schoolName = "傳智播客"; // 為靜態變數賦值
		System.out.println("我的學校是" + stu1.schoolName); // 列印第一個學生物件的學校
		System.out.println("我的學校是" + stu2.schoolName); // 列印第二個學生物件的學校
	}
}

Student類中定義了一個靜態變數,被所有例項所共享。“schoolName”這類特定的資料 在記憶體中僅需要存一份。

【為什麼是傳智播客,因為我自學看的書,就是他們寫的這一本《Java基礎案例教程》,寫的真的好。我這些都是看這本書的筆記,並再次向大家推薦這本書《Java基礎案例教程》黑馬程式設計師編著】

三、靜態方法

可以不用先建立物件而直接呼叫靜態方法。

class Person {
	public static void sayHello() { // 定義靜態方法
		System.out.println("hello");
	}
}

class Example13 {
	public static void main(String[] args) {
		//1.類名.方法的方式呼叫靜態方法
		Person.sayHello();
		//2.例項化物件的方式來呼叫靜態方法
		Person p = new Person();
		p.sayHello(); 
	}
}

Person.sayHello()——通過靜態方法,不需建立物件就呼叫;

下一行通過例項化物件來呼叫

四、靜態程式碼塊

什麼叫程式碼塊?

{
    //大括號裡的就叫程式碼塊
}

用靜態程式碼塊對類成員變數進行初始化,類只加載一次>>靜態程式碼塊只執行一次

static{
    System.out.println("執行了靜態程式碼塊");
}

靜態程式碼塊,只會在第一次被載入時使用,且只會載入一次