package mk.bigdata.java8;
/*
*
* 類的成員之四:代碼塊(或初始化塊)
*
* 1.代碼塊的作用: 用來初始化類、對象
* 2.代碼塊如果有修飾的話,只能使用static
* 3.分類:靜態代碼塊 vs 非靜態代碼塊
*
* 4.靜態代碼塊
* >內部可以有輸出語句
* >隨着累的加載而執行,而且只執行一次
* >作用:初始化類的信息
* >如果一個類中定義了多個靜態代碼塊,則按照聲明的先後順序執行
* >靜態代碼塊的執行要優先於非靜態代碼塊的執行
* >靜態代碼塊內只能調用靜態的屬性、靜態的方法,不能調用非靜態的結構
*
*
* 5.非靜態代碼塊
* >內部可以有輸出語句
* >隨着對象的創建而執行
* >每創建一個對象,就執行一次非靜態代碼塊
* >作用:可以在創建對象時,對對象的屬性等進行初始化
* >如果一個類中定義了多個非靜態代碼塊,則按照聲明的先後順序執行
* >非靜態代碼塊內可以調用靜態的屬性、靜態的方法、或費靜態的屬性、非靜態的方法
*
*
* 對屬性可以賦值的位置:
* ①默認初始化
* ②顯式初始化
* ③構造器中初始化
* ④有了對象以後,可以通過"對象.屬性" 或 "對象.方法"的方式,進行賦值
* ⑤在代碼塊中賦值
*
*
* */
public class BlookTest {
public static void main(String[] args) {
String desc = Person.desc;
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1.age);
Person.info();
}
}
class Person{
//屬性
String name;
int age ;
static String desc = "我是一個人";
//構造器
public Person(){
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//static代碼塊
static{
System.out.println("hello,static block-1");
}
static{
System.out.println("hello,static block-2");
}
//非static代碼塊
{
System.out.println("hello, block");
age = 1;
}
public void eat(){
System.out.println("喫飯");
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void info(){
System.out.println("我是一個快樂的人");
}
}
Java語言基礎-類中代碼塊結構的使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.