大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

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

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

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

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

image.png

從上圖我們可以發(fā)現(xiàn),靜態(tài)變量存放在方法區(qū)中,并且是被所有線程所共享的。這里要說一下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ì)象引用)都是私有的,其他棧不能訪問。
  • 棧分為3個(gè)部分:基本類型變量區(qū)、執(zhí)行環(huán)境上下文、操作指令區(qū)(存放操作指令)。

3.方法區(qū)

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

下面通過一個(gè)案例說明一下,從內(nè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();
}
}
//輸出。小明、阿麗

接下來我們從內(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)方法只能訪問靜態(tài)成員。(非靜態(tài)既可以訪問靜態(tài),又可以訪問非靜態(tài))
  • 靜態(tài)方法中不可以使用this或者super關(guān)鍵字。
  • 主函數(shù)是靜態(tài)的

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

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

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产97在线 | 亚洲 | 天天摸夜夜摸爽爽狠狠婷婷97 | 伊人免费视频 | 久久久久毛片免费观看 | 最新中文字幕在线播放 | 天天干天天摸天天操 | 精品一区二区三区免费观看 | 天天爱天天做天天爽天天躁 | 亚洲国产精品成人综合久久久 | 国内精品小视频 | 亚洲综合精品一区二区三区中文 | 99精品久久99久久久久 | 手机看片99 | 亚洲欧美人成综合在线最新 | 亚洲视频在线精品 | 成人欧美视频在线观看 | 国产人做人爱视频精品 | 日本中文在线 | 二级片在线 | 久久久久久久久久免观看 | 亚洲免费高清视频 | 国内精品久久久久久久亚洲 | 日韩特黄| 成人毛片免费看 | www.青草视频 | 综合图色| 久久六视频 | 国产成人在线免费观看 | 看免费的毛片 | 免费一看一级毛片人 | 日韩激情中文字幕一区二区 | 色视频在线免费看 | 97影院理论午夜论不卡 | 国产在线欧美日韩一区二区 | 亚洲国产精品日韩在线观看 | 欧洲一级黄色片 | 午夜欧美 | 国产真实乱子伦精品视 | 久久精品国产99国产精品亚洲 | 国产精品视频福利一区二区 | 看全色黄大色黄大片爽一下 |