導航:首頁 > 安裝方法 > java中靜態方法存在哪裡

java中靜態方法存在哪裡

發布時間:2022-01-07 03:08:09

❶ java中static變數放在哪

static區,就是類載入就純在的。方法區,是載入這個方法時才有的、

❷ JAVA中使用靜態方法

編程時我們心裡一定要清楚靜態方法和類的非靜態方法方法的區別:
最根本區別從編譯角度來說吧:
1)靜態(static)方法是編譯時直接載入載入到內存中(離cpu最近的一塊內存區域也稱為堆棧),比如程序的public static main(args []){}方法,你能實例話嗎?
靜態方法不能被實例化,也不允許被實例化!
現在很多Java集成工具邊寫邊編譯的
因此 你可以通過「類名」+「.」+「靜態方法的名()」來調用
2)非靜態方法(類的非靜態方法)通過關鍵字 「new」 字來實例化一個對象(object),這個對象放在 內存的另一塊區域 堆(heap)中。
也就是說編譯時,非靜態方法必須先實例化類的一個對象,通過「對象名」+「非靜態方法名()」來調用;
public class Student
{
private String name;
/************************************************************
*下面兩個方法是類的非靜態方法封裝 屬性name,看一下在 main()
*如何調用
************************************************************/
public set(string init_name)
{
this.name = init_name;
}
publc String get()
{
return this.name;
}
//構造函數
public Student(){}
public Student(String init_name)
{
this.name = init_name;
}

//下面是一個靜態方法,看一下它在main()中如何調用
public static void PrintClassName()
{
System.out.print("該類的名字:Student");
}
}
//MainClass類
pubic class MainClass
{
public static void main(args[])
{
//先調用靜態方法,不需要實例化對象
Student.PrintClassName();
//現在調用非靜態方法,一定要實例化對象
Student stu1 = new Student();
stu1.set("Join");
String stu1_name = stu1.get();
}

}

❸ java中的方法代碼存在了哪裡

類的實例方法在內存中是只有一份,不過肯定不會是第一個對象中,如果是第一個對象的話,那麼當第一個對象被銷毀的時候,那麼後面的對象就永遠無法調用了...
類的實例方法存在一個專門的區叫方法區,事實上類剛裝載的時候就被裝載好了,不過它們在"睡眠",只是這些方法必須當有對象產生的時候才會"蘇醒".(比如,一個輸出類的成員變數的方法,如果連對象都沒有,何來的輸出成員變數).所以,方法在裝載的時候就有了,但是不可用,因為它沒有指象任何一個對象。

而靜態的又不一樣了,靜態的東西存在靜態區,他們和類是一個等級的,就是說只要類被裝載,它們就可以直接用.(用類名來調用).他們不依賴與任何對象,所以也不能輸出任何對象的成員屬性.(除非成員屬性也是靜態的).

而你最後的一句話也是錯的,"類的所有數據在內存中只有靜態的才又空間".
當然不是,每個對象在new的時候都會在堆區中開辟內存,用來保存對象的屬性和方法.(實際上方法保存的只是方法區的引用,如果保存的是方法本身,那麼試想一下,有多少個對象就得有多少個方法,那麼又和第一點中"實例方法在內存中只有一份拷貝"相矛盾了)

好了,事實上內存圖很復雜和麻煩,算比較深的東西了,很多用JAVA多年的人也不太了解其原理,因為開發也不要用..

更多的問題可以去遠標培訓去問技術老師。

❹ java的靜態方法

若類的方法前加了static關鍵字,則該方法稱為靜態方法,反之為實例方法。靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。但一般提倡通過類名來使用,因為靜態方法只要定義了類,不必建立類的實例就可使用。靜態方法只能用類的靜態成員。 實例方法必須通過類的實例來使用。實例方法可以使用類的非靜態成員,也可以使用類的靜態成員。 類的靜態方法,靜態變數是在類裝載的時候裝載的。但是要特別注意,類的靜態變數是該類的對象所共有的,即是所有對象共享變數。所以建議盡量少用靜態變數。盡量在靜態方法中使用內部變數。
舉個例子吧
public class Hibernate
{
public static int Hibernate_Object;

public Hibernate()
{
System.out.println("創建了一個對象");
}

}

public static void main(String args[])
{

Hibernate myHibarnate = new Hibernate();
Hibernate.Hibernate_Object++;

……
System.out.println("hibernate 類 一共 創建了"+Hibernate.Hibernate_Object+「個實例」);

}

❺ Java中的靜態方法是什麼

靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。

靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。

我們之前一直寫的mian方法仔細看看,它就是一個靜態方法,靜態方法使用如下:

❻ java中 static變數和方法到底是存在內存什麼區域

JVM內存總體一共分為了
4個部分(stack segment、heap segment、code segment、data segment)
當我們在程序中,申明一個局部變數的時候,此變數就存放在了 stack segment(棧)當中;
當new 一個對象的時候,此對象放在了heap segment(堆)當中;
而static 的變數或者字元串常量 則存在在 data segment(數據區)中;
那麼類中方法的話,是存在在 code segment(代碼區)中了。

❼ java中,靜態變數存儲在哪個區啊,堆還是棧啊,或者說其他地方,謝謝

首先,java裡面是沒有靜態變數這個概念的,不信你自己在方法裡面定義一個static
int
i
=0;java里只有靜態成員變數。它屬於類的屬性。至於他放在那裡?樓上說的是靜態區。我不知道到底有沒有這個翻譯。但是
深入jvm里是是翻譯為方法區的。虛擬機的體系結構:堆,方法區,本地方法棧,pc寄存器。而方法區保存的就是一個類的模板,堆是放類的實例的。棧是一般來用來函數計算的。隨便找本計算機底層的書都知道了。棧里的數據,函數執行完就不會存儲了。這就是為什麼局部變數每一次都是一樣的。就算給他加一後,下次執行函數的時候還是原來的樣子。

❽ java 靜態方法很多,靜態方法是存儲在哪個代里

我問題是這樣的: 問題補充:我的問題是既然,manager是單例的,那寫成靜態方法的調用又有何不可,從內存的角度分析看?java的gc角度看?能不能詳細說一下 問題補充:suziwen 寫道DAO,MANAGER寫成靜態的是實現 單例,那樣才更省內存。。。我的問題是既然,manager是單例的,那寫成靜態方法的調用又有何不可,從內存的角度分析看?java的gc角度看?能不能詳細說一下 問題補充:yqin 寫道從JVM內存管理的角度談談靜態方法和靜態屬性 我直接用靜態方法得了。

❾ JAVA靜態方法 會存儲在硬碟還是內存,靜態變數的初始銷毀時間在什麼時候

你們麻煩說清楚點,不要誤人

java的static方法變數,在程序運行前,保存在文件中(硬碟),以class文件中中間碼存在,在編譯時確定內存地址
程序運行時,就將地址映射到內存,等於就進入內存。
DLL原理你看看

❿ JAVA的靜態成員靜態方法存儲在哪兒

T.i,但是靜態變數得有初始值,否則會報錯吧,我記得是,靜態變數可以類名打點直接調用

閱讀全文

與java中靜態方法存在哪裡相關的資料

熱點內容
塑身機使用方法 瀏覽:680
代購郵費的計算方法 瀏覽:433
班主任教學方法的好處 瀏覽:120
硫酸根計算方法毫克每升 瀏覽:549
熱熔塗料標線計算方法 瀏覽:58
冬天用暖氣片的最佳方法 瀏覽:595
現在人們用什麼方法來凈化空氣 瀏覽:124
鈴木國四瑞夢電腦復位方法 瀏覽:509
學滑板的最佳方法 瀏覽:386
正弦規使用方法 瀏覽:35
電飯煲的使用方法圖解 瀏覽:684
12556的簡便計算方法是什麼 瀏覽:673
有什麼推遲大姨媽的方法 瀏覽:201
小兒齲齒治療方法 瀏覽:484
金字塔型的鍛煉方法 瀏覽:133
怎麼用配方法求解二次函數 瀏覽:868
人民調解員的常用技巧和方法 瀏覽:705
用什麼方法去除脖頸小肉粒 瀏覽:813
可以讓自己快速消瘦的方法 瀏覽:509
氯環己烯鑒別方法 瀏覽:66