1靜態變量
靜態變量是屬於類的,和對象沒有關係
非靜態變量是屬於某個對象的,每個對象都有該數據的副本,而靜態變量只有一個
2靜態方法
用static修飾的方法爲靜態方法。
訪問靜態方法是通過(類名.變量名)
使用注意:
1、靜態方法不能訪問非靜態變量
2、非靜態方法可以訪問靜態變量
靜態屬性或者方法是在類加載的時候產生的
非靜態的屬性或者方法是在new的時候產生的。
靜態變量比非靜態變量先加載到類存中,非靜態變量在new對象的時候才加載進到類存中。
3靜態常量
Public static final int x=12345;
package com.java2006;
public class StaticTest {
//定義普通變量
int commobint=0;
//定義靜態變量
static int statint=0;
//定義一個構造方法
StaticTest(int x){
this.commobint=x;
}
public static void main(String[] args) {
StaticTest s1=new StaticTest(1);
StaticTest s2=new StaticTest(2);
System.out.print("s1.commobint的值是:"+s1.commobint+"。");
System.out.print("s2.commobint的值是:"+s2.commobint);
s1.statint=88;
System.out.print("*******打印開始*********");
System.out.print("statint1的值是:"+s1.statint);
System.out.print("statint2的值是:"+s2.statint);
System.out.print("*******打印結束*********");
/*
s1.commobint的值是:1。
s2.commobint的值是:2*******
打印開始*********statint1的值是:88statint2的值是:88*******打印結束
*/
}
}
package com.java2006;
public class Demo {
static int x = 0;
static {
x = 100;
}
// 如果值爲0說明static int x=0先執行
// 如果是100說明構造器先執行,static 方法變量是優先放到內存中的,程序運行結果是100
Demo() {
System.out.print(x);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Demo();
}
}