在javaEE第一天的課程中我們學了用java輸出"HelloWorld",
他的代碼是,
public class Demo01 {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
那麼這裏就用到了一個static,主方法中就被static修飾過了,那麼這個static是什麼意思,怎麼用,爲什麼要這麼用呢,通過今天的學習可以有深入的瞭解
static是靜態修飾符,一般修飾成員。
被static修飾的成員屬於類,不屬於單個這個類的某個對象。
static修飾的成員被多個對象共享。
被static修飾的成員又叫類成員,不叫對象的成員。
static 使用格式:
類名.靜態成員變量名
類名.靜態成員方法名(參數)
代碼演練
class Demo {
//靜態成員變量
publicstaticintnum = 100;
//靜態方法
publicstaticvoidmethod(){
System.out.println("靜態方法");
}
}
class Test {
publicstaticvoidmain(String[] args) {
System.out.println(Demo.num);
Demo.method();
}
}
Static如果修飾了代碼塊,那麼這個代碼塊就叫做靜態代碼塊
特點:
它優先於主方法執行、優先於構造代碼塊執行,當以任意形式第一次使用到該類時執行。
該類不管創建多少對象,靜態代碼塊只執行一次。
可用於給靜態變量賦值,用來給類進行初始化。
public class Person {
privateString name;
privateint age;
//靜態代碼塊
static{
System.out.println("靜態代碼塊執行了");
}
}
======================================================
final修飾符
final的意思是最終,不可變的,那麼在java中的應用也是顧名思義
final是個修飾符,它可以用來修飾:類、方法、局部變量以及成員變量。
final在使用中的特點和方法
1.1 final的特點
final修飾類
l final修飾類不可以被繼承,但是可以繼承其他類。
class Yy {}
finalclass Fu extends Yy{} //可以繼承Yy類
class Zi extendsFu{} //不能繼承Fu類
final修飾方法
l final修飾的方法不可以被覆蓋,但父類中沒有被final修飾方法,子類覆蓋後可以加final。
class Fu {
// final修飾的方法,不可以被覆蓋,但可以繼承使用
publicfinalvoid method1(){}
publicvoidmethod2(){}
}
class Zi extends Fu {
//重寫method2方法
publicfinalvoid method2(){}
}
final修飾局部變量
l final修飾的變量稱爲常量,這些變量只能賦值一次。
finalinti = 20;
i = 30; //賦值報錯,final修飾的變量只能賦值一次
l 引用類型的變量值爲對象地址值,地址值不能更改,但是地址內的對象屬性值可以修改。
final Person p = new Person();
Person p2 = newPerson();
p = p2; //final修飾的變量p,所記錄的地址值不能改變
p.name = "小明";//可以更改p對象中name屬性值
p不能爲別的對象,而p對象中的name或age屬性值可更改。
final修飾成員變量
l 修飾成員變量,需要在創建對象前賦值,否則報錯。(當沒有顯式賦值時,多個構造方法的均需要爲其賦值。)
class Demo {
//直接賦值
finalintm = 100;
//final修飾的成員變量,需要在創建對象前賦值,否則報錯。
finalintn;
publicDemo(){
//可以在創建對象時所調用的構造方法中,爲變量n賦值
n = 2016;
}
}