1. java中靜態類能否實例化
靜態類,一般使用在某個類的內容,簡稱靜態內部類。
靜態Static又有全局的意思,對於一般的public定義的外部類,沒有必要static關鍵詞,因為可以直接導入包得到該類的引用(只是在訪問其非靜態成員時需要實例化它);
而在一個類內部定義另一個類,如果該內部類不是靜態的,需要實例化它,就得先有一個外部類的對象,
如:public class A{
public class B{}
}
實例化B:
A a = new A();
B b = a.new B();
如果B是靜態的(全局的),即如下:
public class A{
public static class B{}
}
實例化B:
B b = A.new B();或者B b = new A.B();
2. Java中單例模式和靜態類的區別
單例模式:
在框架中通過反射機制在程序運行時由框架生成一個類的實例,該實例是由框架負責維護;當然我們自己也可以實例化這個類,此時我們自己實例化的對象和框架維護的實例是互不影響的;
類的實例對象是由引用指向堆中保存的,單例是由框架中的引用指向堆中的一個實例,而我們自己創建的對象是另一個指向堆中的實例兩個互不幹擾;但是在使用起來,我們在不同地方改變單例全局的單例都變了,看起來好像靜態一樣但是實際上我們使用的只不過都是框架維護的一個實例而已;
舉例:
@Component
publicclassPerson{
privateStringname;
PrivateIntegerage;
//getset方法...省略不想寫;
}
在框架啟動時,我們就獲得了一個Person類的實例,這個實例由框架內部一個引用指向,在程序使用時我們只需把地址賦於需要的地方,也就是說實際上大家用的都是一個對象;
就在這時,我們自己開心的new 了一個Person對象;此時我們通過set方法改變該對象不影響其他指向單例對象的變數;
靜態類:
首先java中的靜態類指的大多數是內部類;作為一個成員變數它靜態才有意義,此時無論程序中的任何部分調用了該靜態類的外部類,並通過方法改變了內部類的數據;此時該程序中的所有該內部類的實例都改變了,互相影響;因為靜態變數是存儲在方法區內的,而且就一份,無論誰使用該靜態變數都是去方法區查詢該對象的狀態,所以互相干擾;
3. java的靜態類型有什麼特點
靜態屬性:隨著類的載入而載入,該屬性不屬於某個對象,屬於整個類
靜態方法:直接使用類名調用,靜態方法里不能訪問非靜態成員變數
靜態類:不能直接創建對象,不可被繼承
4. java 靜態類和非靜態類的區別
靜態類和非靜態類的主要區別:
主要區別在於靜態類不能實例化,靜態類編譯器能夠執行檢查確保不是偶然的添加實例成員,C#編譯器會自動把它標記為sealed,靜態類中不能創建非靜態的方法,即靜態方法中只能創建靜態方法,但在非靜態類中可以調用靜態方法。
靜態類的主要特性:
1:僅包含靜態成員。
2:無法實例化。
3:是密封的。
4:不能包含實例構造函數。
5:非靜態類可以包含靜態的方法、欄位、屬性或事件;
6:靜態方法和屬性不能訪問其包含類型中的非靜態欄位和事件
7:靜態方法只能被重載,而不能被重寫,因為靜態方法不屬於類的實例成員;
8:C# 不支持靜態局部變數(在方法內部定義靜態變數)。
非靜態類在使用時必須要實例化,每次使用時都要進行實例化,一般情況下使用比較頻繁的類,可以使用靜態類,比如LogClass,ConfigClass等等。
5. java中靜態類和動態類的區別的什麼
區別如下:
static 表示靜態的,從始至終只獲得一塊內存空間。而且這塊空間的資源還具有「全局性」,就是說所有的成員都可以無條件引用,另外,static修飾的不用程序調用,只要該類被執行,static修飾的也被執行。
如最常見的,Public static void main(){};又巧衫如 static int a;那麼所有的成員都可以引用a.
final 表示最終的,它修飾的類不能有子類。它修飾的變數是不可變的常數,所以final的變數要立刻賦值。如:class final A {}類A就不能被別的類繼承;final String a=「abc」;那麼a永遠只能是abc.
fianl static String a=「abc」,那麼a不但是一個常數,還是一個全局常數。
6. java 靜態類是什麼意思 有什麼特點
java沒有直接的靜態類這種東西,一個類可以為static的情況只是他作為另一個類的成員,static表明他可以不用建立實例被訪問而已,這樣的內部類完全沒有內部類的特點
1 內部類可以訪問所在外部類的成員變數和方法,而靜態內部類卻不能
2 內部類可以使用Outter.this作為外部類引用,但靜態內部類不能使用
3 靜態內部類就如同外部類的一個靜態成員,他只能訪問外部類的靜態成員和靜態方法
4 在外部類外必須使用Outter.Inner外部類名和內部類名都要使用,樓上所說的不需要建立對象, 指的是不需要建立外部類實例,
比如BigOuter.Nested n = New BigOuter.Nested();
7. java 有沒有靜態類
java有靜態內部類
Java語言允許在類中再定義類,這種在其它類內部定義的類就叫內部類。內部類又分為:常規內部類、局部內部類、匿名內部類和靜態嵌套類四種。
8. java中靜態內部類是怎麼定義的
需要了解2個概念:內部類和靜態修飾符static
1)首先,用內部類是因為內部類與所在外部類有一定的關系,往往只有該外部類調用此內部類。所以沒有必要專門用一個Java文件存放這個類。
2)靜態都是用來修飾類的內部成員的。比如靜態方法,靜態成員變數,靜態常量。它唯一的作用就是隨著類的載入(而不是隨著對象的產生)而產生,以致可以用類名+靜態成員名直接獲得。
這樣靜態內部類就可以理解了,因為這個類沒有必要單獨存放一個文件,它一般來說只被所在外部類使用。並且它可以直接被用
外部類名+內部類名
獲得。
以下舉例說明怎麼使用:
Student類有個叫School的內部類(非靜態)
Student
stu
=
new
Student();
stu.School
sch
=
new
stu.School();
sch就是School的一個對象。
假如School是內部靜態類:
Student.School
sch
=
new
Student.School();