Java中的关于static的解释和应用
1.什么是高級類的特性修飾符?分別可以修飾哪些內容?
??答:1). static: 修飾屬性、方法、塊、內部類
?????2). final: 修飾類、常量屬性、方法、局部常量
?????3). abstract: 修飾類、方法
?????4). synchronized: 修飾方法、同步代碼塊
2.什么是static?
???答:static被稱為靜態,可以用來修飾類的屬性和方法。
3.什么是static屬性?
???答:如果類的某個屬性,不管創建多少個對象,屬性的存儲空間只有唯一的一個,那么這個屬性就應該用static修飾,被static修飾的屬性被稱為靜態屬性。
*static屬性可以使用對象調用,也可以直接用類名調用。
*靜態屬性是類的所有對象共享的,即不管創建多少個對象,靜態屬性在內存中只有一個。
例:public class Employee{
非靜態 private string name;
?屬性 ?private double salary;
屬性 ??private static int count;
4.什么是靜態方法? 并且舉例說明各部分是什么?
???答:如果某個方法不需要與某個特定的對象綁定,那么該方法可以使用static修飾,被static修飾的方法稱為靜態方法。
???例:
?
??????Public ?static ?void ??sellticket(){
?????????System.out.println(“所有火車票都是12306賣的”);
????????}
?
?
5.如何使用static 方法?
???答:如果某個方法與實例無關,也就是說不管哪個對象調用這個方法,都執行相同的操作,與對象沒有關系,則應該定義為靜態方法。不需要創建對象后再使用該方法。
????例:API中的Math類,都是靜態方法,因為進行數學運算時,與Math對象本身無關,使用類直接調用即可。
??**1.任何方法都可以直接調用靜態方法。
????2.靜態方法不能直接調用非靜態方法,需要創建對象,用方法名調用非靜態方法。
???6.什么是static 塊?如何在編譯器中使用?請舉例說明。還有哪些注意事項?
????答:static塊和static的屬性以及方法的性質是相同的,用static修飾的代碼塊表示靜態代碼塊,當Java虛擬機加載類時,就會執行該代碼塊。
?????例:直接在代碼塊前,加上關鍵字static即成為靜態塊。
?????Static{
??????????System.out.println(“123”);
??????????System.out.println(“123”);
??????????System.out.println(“123”);
}
????注意:1).靜態塊只有在類加載的時候被執行一次,不管創建多少個對象,都不會再執行。
??????????2). 如果一個類加載的時候,總要預先做一些事情,則可以放在靜態塊中,例如,讀取一個屬性文件,進行一些常規配置,寫一些日志等。
???????????3).一個類中可以有多個靜態塊,按照順序執行。
?7. 什么是final?如何使用final?
???????答:final用于聲明屬性,方法和類
??????????1).屬性:定義就必須直接賦值或者在構造方法中進行賦值,并且后期不能修改。
??????????2).方法:定義必須有實現代碼,并且子類里不可被覆蓋。
???????????3).類:不能被定義為抽象類或是接口,不可被繼承。
? 8.如何使用final修飾屬性?
????????答:當final修飾屬性時,基本數據類型的屬性將成為常量,不能被修改。
????????例:* π= 3.14159265358979
???????????????E= 2.718281828459045
?9.如何給final屬性賦值?
?????????答:1).在聲明時同時賦值,往往與static一起使用
例:private int index;
????private static final double pai = 3.14;
????private final int level;
?
????2).聲明時不賦值,必須在構造方法中逐一賦值
????Public Test(){
????Level = 0;
} ?
??????????????
? ? ?3).總的原則:保證創建每一個對象的時候,final屬性的值是確定的。
? ? ? ?public Test(int index){
? ? ? ?this.index = index;
? ? ? ?Level = 1;
}
? ?10.如何使用final修飾參數?
? ? 答:在方法參數前面加final關鍵字,為了防止數據在方法體中被修改。
???????????????public class Ex{
????????????????????private int a = 1;
????????????????????private String b;
??????????????????Public void ww(final int a){
a = 12;
}
}
???????????????11.如何在編譯器中使用變量和常量?
?????????????????答:按作用域區分
?????????????????Public class Employee{
?????????????????Private String name;
?????????????????Private double salary;
?????????????????Private static int count;
?
?????????????????Public void work(String leader){
String taskname = null;
?
?????????????????//1).在類中聲明的變量或常量叫屬性,或者叫成員變量,如:name,salary,count
??????????????????2).屬性可以使用static修飾,局部變量不可以。
??????????????????3).屬性的生命周期很長,隨著類加載或者創建對象被初始化,直到沒有對象引用才回收。
??????????????????
4).在方法中聲明的變量叫局部變量,或者臨時變量。
?5).屬性可以使用四種權限修飾符修飾局部變量不可以。
?6).屬性可以使用final修飾,局部變量也可以
?7).局部變量生命周期很短,執行某個方法時臨時被初始化,方法結束即被回收。
?8).如果局部變量與屬性重名,則遵守就近原則,可以使用this區分。
??9).屬性可以在整個類中使用,局部變量只在當前方法中使用
??10).屬性都有默認的初始化值,如引用類型都是null,整型是0等,局部變量不被自動初始化,必須手工初始化,如taskname手工指定為null才為null,而屬性name默認就為null
}
}
? ? ?
轉載于:https://www.cnblogs.com/Chenglei789/p/7562553.html
總結
以上是生活随笔為你收集整理的Java中的关于static的解释和应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习之路-12 (递归)
- 下一篇: Swig在Mac OS X上的安装