話不多說,直接上代碼
import static java.lang.System.out;
import static java.lang.Math.*;
import static com.ufgov.controller.base02.name;
/**
* static 關鍵字作用就是在不用創建對象的情況下進行(方法/變量)的調用
* static 不依賴對象進行訪問,只要類被加載了,就可直接使用
* static 用途:1,修飾成員變量
* 2,修飾方法
* 3,靜態代碼塊
* 4,靜態導入
*/
public class base01 {
public static void main(String[] args) {
//靜態變量直接調用
System.out.println(base02.name);//輸出:xiaohei
//靜態方法直接調用
System.out.println(base02.getName(base02.name));//輸出:xiaohei1
//在添加靜態代碼塊後執行main方法,打印出
/**
* 靜態代碼塊執行
* xiaohei
* xiaohei1
*/
//靜態代碼塊在類加載的時候就執行,所以更多的是用來優化程序,或者是加載資源
/**
* import static 包名.類名.靜態成員變量;
* import static 包名.類名.靜態成員函數;
*
* import static java.lang.System.out;
* import static java.lang.Math.*;
*
* 靜態導入就是把包中
*/
out.println(name); //xiaohei name就是導入的靜態變量
System.out.println("靜態導入"+round(100));//靜態導入100 round是導入的靜態方法
}
}
class base02{
/**
* static修飾的變量爲靜態變量,靜態變量與成員變量的區別爲:
* 靜態變量在內存中只存在一個,所有被所有對象共享,在類加載的時候進行初始化
* 成員變量在每次創建對象時都含有一個此成員變量的副本,互不影響
*/
public static String name="xiaohei";
public String address;
/**
* 靜態方法不依賴於任何對象就可以進行訪問,因此對於靜態方法來說,是沒有this的,(this代表的是當前的類對象)
*/
public static String getName(String name){
return name+1;
}
/**
* 此段代碼報錯,因爲靜態方法中引用了非靜態的成員變量
* 靜態方法調用直接object.method調用,不用創建對象,既然沒有創建對象,那麼沒有類的成員變量address,所以報錯
*/
/*public static String getAddress(String address){
return this.address+2;
} */
static{
System.out.println("靜態代碼塊執行");
}
}
//https://www.cnblogs.com/dolphin0520/p/3799052.html 也可參照此篇博文加深理解