1钧椰、final:
final關(guān)鍵字可用于類粹断、方法、變量前嫡霞。
final修飾的類不可被繼承瓶埋,例如java.lang.Math就是一個(gè) final類,不可被繼承诊沪。
final修飾變量养筒,在顯示初始化后不可改變變量值,用于常量定義端姚。如果final變量是引用變量晕粪,則不可以改變它的引用對(duì)象,但可以改變對(duì)象的數(shù)據(jù)(屬性)渐裸。
final修飾的方法不可被重寫(xiě)巫湘。
錯(cuò)誤案例)
package com.sp;
public final class Fish {
final String name = "魚(yú)";
public void method(){
name = "魚(yú)"; #此時(shí)變量屬性不可再改變
}
}
2、static:
2.1)static關(guān)鍵字用來(lái)修飾變量橄仆、方法剩膘、游離塊和內(nèi)部類,稱這些變量盆顾、方法和內(nèi)部類為靜態(tài)變量怠褐、靜態(tài)方法和靜態(tài)內(nèi)部類。
2.1.1)案例
package com.sp;
import java.util.Calendar;
public class Person {
String name;
static int count ;//人口總數(shù) 靜態(tài)屬性
public Person() {
count++;
}
public static void main(String[] args) {
Person p1 = new Person();
System.out.println("人口總數(shù):"+p1.count);
Person p2 = new Person();
System.out.println("人口總數(shù):"+p2.count);
Person p3 = new Person();
System.out.println("人口總數(shù):"+p3.count);
}
}
2.2)static關(guān)鍵字聲明一個(gè)屬性或方法是和類相關(guān)的您宪,而不是和類的某個(gè)特定的實(shí)例相關(guān)奈懒,因此奠涌,這類屬性或方法也稱為“類屬性”或“類方法”。
2.3)如果訪問(wèn)控制權(quán)限允許磷杏,可不必創(chuàng)建該類對(duì)象而直接使用類名加“調(diào)用溜畅。
2.4)static 不可用于修飾構(gòu)造器
2.5)static修飾的屬性和方法,對(duì)象之間是共享的极祸。
2.6)static修飾的屬性和方法慈格,可以直接用類名調(diào)用。
2.7)static游離塊遥金。
2.7.1)static除了用于修飾變量和方法外浴捆,還可以用于修飾類中的游離塊(自由塊)。
2.7.2)所謂類的“游離塊”稿械,就是在類中用“{}”包含起來(lái)的不屬于任何方法或構(gòu)造器的代碼段选泻。
2.7.3)使用static來(lái)修飾的游離塊只在類加載的時(shí)候執(zhí)行一次,通常用于初始化靜態(tài)變量美莫。
2.7.3.1案例1)
package com.sp;
public class Person {
String name;
static int count ; //人口總數(shù) 靜態(tài)屬性
public Person() {
count++;
System.out.println("執(zhí)行了構(gòu)造器");
}
static {
System.out.println("執(zhí)行了靜態(tài)游離塊");
}
{
System.out.println("執(zhí)行了游離塊");
}
public static void main(String[] args) {
Person p1 = new Person();
}
}
//執(zhí)行了靜態(tài)游離塊页眯,執(zhí)行了游離塊,執(zhí)行了構(gòu)造器厢呵。
2.7.3.2 案例2)
父類:
package com.sp;
public class Anmail {
public Anmail(){
System.out.println("執(zhí)行了父類構(gòu)造器");
}
static {
System.out.println("執(zhí)行了父類靜態(tài)游離塊");
}
{
System.out.println("執(zhí)行了父類游離塊");
}
}
Person類繼承:
package com.sp;
import java.util.Calendar;
public class Person extends Anmail {
String name;
static int count ;//人口總數(shù) 靜態(tài)屬性
public Person() {
count++;
System.out.println("執(zhí)行了子類構(gòu)造器");
}
static {
System.out.println("執(zhí)行了子類靜態(tài)游離塊");
}
{
System.out.println("執(zhí)行了子類游離塊");
}
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
}
}
//執(zhí)行了父類靜態(tài)游離塊
//執(zhí)行了子類靜態(tài)游離塊
//執(zhí)行了父類游離塊
//執(zhí)行了父類構(gòu)造器
//執(zhí)行了子類游離塊
//執(zhí)行了子類構(gòu)造器
由于博主目前在找框架窝撵,很多案例不是很多。如有不足述吸,可指教忿族。
順便在此給大家推薦一個(gè)Java方面的交流學(xué)習(xí)群:957734884,歡迎加群蝌矛,讓我們一起學(xué)習(xí)道批,一起進(jìn)步吧!
原文:https://blog.csdn.net/weixin_44195108/article/details/88090856