黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 深入解析static關(guān)鍵字

深入解析static關(guān)鍵字

更新時(shí)間:2020-11-18 17:20:34 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1407次

static是java語(yǔ)言中的關(guān)鍵字,表示“靜態(tài)的”,它可以用來(lái)修飾變量、方法、代碼塊等,修飾的變量叫做靜態(tài)變量,修飾的方法叫做靜態(tài)方法,修飾的代碼塊叫做靜態(tài)代碼塊。在java語(yǔ)言中凡是用static修飾的都是類相關(guān)的,不需要?jiǎng)?chuàng)建對(duì)象,直接通過(guò)“類名”即可訪問(wèn),即使使用“引用”去訪問(wèn),在運(yùn)行的時(shí)候也和堆內(nèi)存當(dāng)中的對(duì)象無(wú)關(guān)。本文主要來(lái)解析一下static關(guān)鍵字的深層原理。

要理解static關(guān)鍵字為什么會(huì)有上面的特性,首先我們還需要從jvm內(nèi)存說(shuō)起。我們先給出一張java的內(nèi)存結(jié)構(gòu)圖,然后通過(guò)案例描述一下static修飾的變量的存放位置。

image.png

從上圖我們可以發(fā)現(xiàn),靜態(tài)變量存放在方法區(qū)中,并且是被所有線程所共享的。這里要說(shuō)一下java堆,java堆存放的就是我們創(chuàng)建的一個(gè)個(gè)實(shí)例變量。

1.堆區(qū)

  • 存儲(chǔ)的全部是對(duì)象,每個(gè)對(duì)象都包含一個(gè)與之對(duì)應(yīng)的class的信息。(class的目的是得到操作指令)
  • jvm只有一個(gè)堆區(qū)(heap)被所有線程共享,堆中不存放基本類型和對(duì)象引用,只存放對(duì)象本身

2.棧區(qū)

  • 每個(gè)線程包含一個(gè)棧區(qū),棧中只保存基礎(chǔ)數(shù)據(jù)類型的對(duì)象和自定義對(duì)象的引用(不是對(duì)象),對(duì)象都存放在堆區(qū)中
  • 每個(gè)棧中的數(shù)據(jù)(原始類型和對(duì)象引用)都是私有的,其他棧不能訪問(wèn)。
  • 棧分為3個(gè)部分:基本類型變量區(qū)、執(zhí)行環(huán)境上下文、操作指令區(qū)(存放操作指令)。

3.方法區(qū)

  • 又叫靜態(tài)區(qū),跟堆一樣,被所有的線程共享。方法區(qū)包含所有的class和static變量。
  • 方法區(qū)中包含的都是在整個(gè)程序中永遠(yuǎn)唯一的元素,如class,static變量。

下面通過(guò)一個(gè)案例說(shuō)明一下,從內(nèi)存的角度來(lái)看,static關(guān)鍵字為什么會(huì)有這樣的特性。

首先我們定義一個(gè)類

public class Person {
//靜態(tài)變量
static String firstName;
String lastName;
public void showName(){
System.out.println(firstName+lastName);
}
//靜態(tài)方法
public static void viewName(){
System.out.println(firstName);
}
public static void main(String[] args) {
Person p =new Person();
Person.firstName = "小";
p.lastName="明";
p.showName();
Person p2 =new Person();
Person.firstName="阿";
p2.lastName="麗";
p2.showName();
}
}
//輸出。小明、阿麗

接下來(lái)我們從內(nèi)存的角度出發(fā),可以看出我們的方法在調(diào)用的時(shí)候,是從方法區(qū)調(diào)用的,但是堆內(nèi)存不一樣,堆內(nèi)存中的成員變量lastname是隨著對(duì)象的產(chǎn)生而產(chǎn)生。隨著對(duì)象的消失而消失。靜態(tài)變量是所有線程共享的,所以不會(huì)消失。這也就能解釋上面static關(guān)鍵字的真正原因。

我們?cè)谑褂檬褂胹tatic關(guān)鍵字時(shí)需要注意:

  • 靜態(tài)方法只能訪問(wèn)靜態(tài)成員。(非靜態(tài)既可以訪問(wèn)靜態(tài),又可以訪問(wèn)非靜態(tài))
  • 靜態(tài)方法中不可以使用this或者super關(guān)鍵字。
  • 主函數(shù)是靜態(tài)的

最后,我們看完了本文對(duì)static關(guān)鍵字的解析如果還有什么不明白的地方可以觀看本站的Java SE教程,里面對(duì)static關(guān)鍵字的講解更加全面透徹,讓你從無(wú)到有,快速掌握static關(guān)鍵字。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产午夜精品久久理论片小说 | 久久精品综合视频 | 午夜视频在线观看网站 | 国产黄色小视频网站 | 亚洲国产一成人久久精品 | 国产大片在线观看 | 中国黄色在线观看 | 91网站免费看 | 看全色黄大色大片免费久久 | 精品久久久久久中文 | 天天做夜夜做 | 波多野一区二区三区在线 | 色综合久久天天综合绕观看 | 黄色一级片免费观看 | sao虎视频在线精品永久 | 91精品国产闺蜜国产在线 | 免费在线观看黄色网址 | 国产丝袜视频在线 | 美女一级牲交毛片视频 | 久艹在线观看 | 看三级网站 | 2018天天爽天天玩天天拍 | 黄色小视频在线免费看 | 国产区网址 | 免费播放欧美一级特黄 | 欧美午夜久久 | 国产网站免费看 | 天天碰天天摸 | 国产黄色片在线免费观看 | 在线黄站| 老司机午夜性大片免费 | 成人激情在线视频 | 亚洲aⅴ久久久噜噜噜噜 | 三级黄色在线视频 | 亚洲欧美日韩国产精品26u | 亚洲高清在线视频 | 在线观看成人免费视频播放 | 国内精品视频 在线播放 | www.色爱 | 91精品观看91久久久久久 | 黄色免费网站在线观看 |