日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java引用变量_java代码声明引用变量经验

發布時間:2024/9/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java引用变量_java代码声明引用变量经验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.static只能修飾類的成員變量,不能修飾方法里的局部變量。

因為static是在類加載時候將成員變量存儲進方法區的。

加載類的時候,是不去執行方法里的函數的。所以不會館方法里的代碼,自然就不會讀取到static變量了。

如,這個代碼就是錯誤的

classStudent{private stringname;public void setName(stringstr)

{static int a = 1;//這里錯誤,static只能修飾類的成員變量

}

}

2.new一個對象或者加載一個類的時候,是不是執行方法里的代碼的。

而且new的對象,在堆中的存儲空間就是成員變量的存儲空間。

方法函數是不占代碼的,方法里的代碼全都存儲在方法區里面。只有在執行方法時,才會找到方法區的代碼,放到cpu里執行

3.java對垃圾回收是通引用變量來管理內存的。引用變量分為靜態引用變量,成員變量,局部變量。

三種變量意味三種不同的生命周期對象。

局部變量,意味著方法執行時創建,執行完成后銷毀。其生命周期和方法一樣。

成員變量,意味著隨著此類被new創建時而創建,此對象被銷毀后跟隨銷毀,與對象的生命周期一樣。

static變量,意味著生命周期最長,隨著類被加載而創建,只要不認為控制垃圾回收,靜態變量是一直生存的。

4.非靜態方法可以調用靜態方法,靜態方法不能調用非靜態方法。

什么意思?答:因為靜態方法是在類加載時被存儲進方法區的,而非靜態方法是在程序執行時才調用的。一前一后,程序總是先加載后執行的,所以倆生命周期不一致,

只能后面的訪問前面的,即非靜態方法可以調用靜態方法。但靜態方法不能訪問非靜態方法,因為加載時,非靜態方法還沒被執行呢。

5.方法區的數據是線程共享的,每個線程都可以訪問修改方法區數據。所以要給設置static變量的static方法加鎖,以保證static變量的線程安全。

1.這里的synchronized鎖住的是Student.class這個對象。因為方法是靜態static的。

public classStudent {public static String name = "abc";public static String age = "123";

synchronizedpublic static void set(String name1,String age1) {

Student.name=name1;

Student.age=age1;

}

}

2.如果不加static,方法變為synchronized public ?void set(String name1,String age1) {}。鎖住的是這個對象的鎖。

public classStudent {public static String name = "abc";public static String age = "123";

synchronizedpublic void set(String name1,String age1) {

Student.name=name1;

Student.age=age1;

}

}

6.static變量設置private或者public問題。為了保證static變量線程安全,一般設置static變量的訪問屬性為private,然后再static變量的set方法設置為public并加鎖,以保證線程安全。

如:

public classStudent {private static String name = "abc";//private 修飾private static String age = "123";

synchronizedpublic static void set(String name1,String age1) {

Student.name=name1;

Student.age=age1;

}

}

7.局部變量的生命周期是在一個大括號內,即一個所處塊結束。如循環體內定義的int j;

java 是塊作用域

一個?{}?就是一個獨立的作用域空間

每次循環的時候,都會有一個新的作用域空間

你在for循環體外是看不到my的,也是因為超出了作用域空間。

循環第二次的時候,就有一個重名的my了呀?為什么還是能正常運行,不報錯?

總結

以上是生活随笔為你收集整理的java引用变量_java代码声明引用变量经验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。