久久亚洲中文字幕精_精品国产一区二区三区不卡_99久久久无码国产精品免费手机_国产亚洲精品久久久久动漫

將想法與焦點和您一起共享

Java中靜態(tài)變量的適用場景發(fā)布者:本站     時間:2020-05-06 15:05:06

Java類中的靜態(tài)變量在程序運行期間,其內存空間對所有該類的對象實例而言是共享的,有些時候可以認為是全局變量。因此在某些時候為了節(jié)省系統內存開銷、共享資源,可以將類中的一些變量聲明為靜態(tài)變量,通過下面的例子,你可以發(fā)現合理應用靜態(tài)變量帶來的好處:

Java代碼


public class WeekA{
static class Data {
private int week;
private String name;
Data(int i, String s) {
week= i;
name = s;
}
}
Data weeks[] = {
new Data(1, "Monday"), new Data(2, "Tuesay"), new Data(3, "Wednesday"), new Data(4, "Thursday"), new Data(5, "Friday"), new Data(6, "Saturday"), new Data(7, "Sunday")
};
public static void main(String args[]) {
final int N = 10000;
WeekA weekinstance;
for (int i = 1; i <= N; i++){
weekinstance = new WeekA ();
}
}
}
public class WeekA{
static class Data {
private int week;
private String name;
Data(int i, String s) {
week= i;
name = s;
}
}
Data weeks[] = {
new Data(1, "Monday"), new Data(2, "Tuesay"), new Data(3, "Wednesday"), new Data(4, "Thursday"), new Data(5, "Friday"), new Data(6, "Saturday"), new Data(7, "Sunday")
};
public static void main(String args[]) {
final int N = 10000;
WeekA weekinstance;
for (int i = 1; i <= N; i++){
weekinstance = new WeekA ();
}
}
}


在上面這段代碼中,沒有將Data weeks聲明為靜態(tài)變量,因此當創(chuàng)建WeekA對象時將會得到10 000個weeks對象的副本,這些對象被保存在內存中,但是weeks對象中的數據卻從來沒有被更改過,而且十分穩(wěn)定。因此,如果能使所有對象共享該數據對象是個不錯的解決辦法,請看下面的代碼:
Java代碼


public class WeekB{
static class Data {
private int week;
private String name;
Data(int i, String s) {
week= i;
name = s;
}
}
static Data weeks[] = {
new Data(1, "Monday"), new Data(2, "Tuesay"), new Data(3, "Wednesday"), new Data(4, "Thursday"), new Data(5, "Friday"), new Data(6, "Saturday"), new Data(7, "Sunday")
};
public static void main(String args[]) {
final int N = 10000;
WeekB weekinstance;
for (int i = 1; i <= N; i++){
weekinstance = new WeekB ();
}
}
}
public class WeekB{
static class Data {
private int week;
private String name;
Data(int i, String s) {
week= i;
name = s;
}
}
static Data weeks[] = {
new Data(1, "Monday"), new Data(2, "Tuesay"), new Data(3, "Wednesday"), new Data(4, "Thursday"), new Data(5, "Friday"), new Data(6, "Saturday"), new Data(7, "Sunday")
};
public static void main(String args[]) {
final int N = 10000;
WeekB weekinstance;
for (int i = 1; i <= N; i++){
weekinstance = new WeekB ();
}
}
}


請注意在類WeekB中,在Data weeks[]之前添加了static關鍵字,將該對象變量聲明為靜態(tài)的,因此當你創(chuàng)建10 000個WeekB對象時系統中只保存著該對象的一份拷貝,而且該類的所有對象實例共享這份拷貝,這無疑節(jié)約了大量的不必要的內存開銷,同時實現了要完成的系統功能。

那么是不是我們應該盡量地多使用靜態(tài)變量呢?其實不是這樣的,因為靜態(tài)變量生命周期較長,而且不易被系統回收,因此如果不能合理地使用靜態(tài)變量,就會適得其反,造成大量的內存浪費,所謂過猶不及。因此,建議在具備下列全部條件的情況下,盡量使用靜態(tài)變量:

(1)變量所包含的對象體積較大,占用內存較多。

(2)變量所包含的對象生命周期較長。

(3)變量所包含的對象數據穩(wěn)定。

(4)該類的對象實例有對該變量所包含的對象的共享需求。

如果變量不具備上述特點建議你不要輕易地使用靜態(tài)變量,以免弄巧成拙。



選擇我們,優(yōu)質服務,不容錯過
1. 優(yōu)秀的網絡資源,強大的網站優(yōu)化技術,穩(wěn)定的網站和速度保證
2. 15年上海網站建設經驗,優(yōu)秀的技術和設計水平,更放心
3. 全程省心服務,不必擔心自己不懂網絡,更省心。
------------------------------------------------------------
24小時聯系電話:021-58370032
建湖县| 麦盖提县| 光山县| 察雅县| 洮南市| 竹北市| 皋兰县| 淄博市| 邵阳市| 崇信县| 榆树市| 华亭县| 永康市| 三门峡市| 湘乡市| 五原县| 宿松县| 南充市| 都昌县| 府谷县| 龙江县| 佛教| 德令哈市| 观塘区| 顺平县| 黄石市| 宜丰县| 襄垣县| 大埔区| 聊城市| 和平区| 泰兴市| 甘谷县| 望都县| 武定县| 甘孜县| 永德县| 蓬溪县| 博野县| 兰坪| 保定市|