欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Java培訓(xùn)面試題之static關(guān)鍵字詳解

2019-07-16 09:36:07 7351瀏覽

今天千鋒扣丁學(xué)堂Java培訓(xùn)老師給大家分享一篇關(guān)于Java面試題static關(guān)鍵字的詳細(xì)介紹,文中通過示例代碼介紹的非常詳細(xì),下面我們一起來看一下吧。



問題:面試官Q(mào)1請(qǐng)說說static關(guān)鍵字,你在項(xiàng)目中是怎么使用的?

static關(guān)鍵字可以用來修飾:屬性、方法、內(nèi)部類、代碼塊;

static修飾的資源屬于類級(jí)別,是全體對(duì)象實(shí)例共享的資源;

使用static修飾的屬性,靜態(tài)屬性是在類的加載期間初始化的,使用類名.屬性訪問

案例說明

①修飾成員變量

package com.ant.param;
 public class StaticFieldDemo {
  public static void main(String[] args) {
   Foo f1 = new Foo();
   Foo f2 = new Foo();
   Foo f3 = new Foo();
   System.out.println(f1.id + " " + f2.id + " " + f3.id );
  }
 }
class Foo{
 int id;
}

運(yùn)行結(jié)果如下:

000

上面的代碼我們很熟悉,根據(jù)Foo構(gòu)造出的每一個(gè)對(duì)象都是獨(dú)立存在的,保存有自己獨(dú)立的成員變量,相互不會(huì)影響,他們?cè)趦?nèi)存中的示意如下:



從上圖中可以看出,f1、f2和f3三個(gè)變量引用的對(duì)象分別存儲(chǔ)在內(nèi)存中堆區(qū)域的不同地址中,所以他們之間相互不會(huì)干擾。對(duì)象的成員屬性都在這了,由每個(gè)對(duì)象自己保存。f1.id、f2.id、f3.id相當(dāng)于“每個(gè)人一個(gè)水杯”。

我們對(duì)上面的代碼,做如下修改:

package com.ant.param;
 public class StaticFieldDemo {
  public static void main(String[] args) {
   Foo f1 = new Foo();
   Foo f2 = new Foo();
   Foo f3 = new Foo();
   System.out.println(f1.id + " " + f2.id + " " +
   f3.id + " " + Foo.i);
  }
}
class Foo{
 int id;
 static int i=0;
 public Foo(){
  id = i++;
 }
}
運(yùn)行結(jié)果如下:
0 1 2 3

程序執(zhí)行過程內(nèi)存圖如下所示:



第1步:加載類

static修飾的變量在類加載期間初始化,且在方法區(qū)中分配,屬于線程共享區(qū),所有的對(duì)象實(shí)例共享一份數(shù)據(jù)。

第2步:繼續(xù)加載類



第3步:繼續(xù)加載類



最終加載結(jié)果如上述三個(gè)步驟

②修飾成員方法

static的另一個(gè)作用,就是修飾成員方法。相比于修飾成員屬性,修飾成員方法對(duì)于數(shù)據(jù)的存儲(chǔ)上面并沒有多大的變化,因?yàn)槲覀儚纳厦婵梢钥闯?,方法本來就是存放在類的定義當(dāng)中的(方法區(qū))。static修飾成員方法最大的作用,就是可以使用"類名.方法名"的方式操作方法,避免了先要new出對(duì)象的繁瑣和資源消耗,我們可能會(huì)經(jīng)常在幫助類中看到它的使用:

package com.ant.param;
  
 public class StaticFieldDemo {
  private static void print(){
   System.out.println("hello");
  }
  public static void main(String[] args) {
   StaticFieldDemo.print();
  }
}

③修飾靜態(tài)代碼塊

靜態(tài)代碼塊是在類加載期間運(yùn)行的代碼塊,由于類只加載一次,所以靜態(tài)代碼塊只執(zhí)行一次!靜態(tài)代碼塊用途很常見,一般用來在類加載以后初始化一些靜態(tài)資源時(shí)候使用。如:加載配置文件等

package com.ant.param;
  
 public class StaticBlockDemo {
  public static void main(String[] args) {
   Foo foo = new Foo();
  }
 }
  
 class Foo{
 //代碼塊,在創(chuàng)建對(duì)象的時(shí)候執(zhí)行,使用很少,和構(gòu)造器差不多
 {
  System.out.println("創(chuàng)建對(duì)象了!");
 }
 //靜態(tài)代碼塊,在類加載期間執(zhí)行,用于加載配置文件或者其他信息等
 static{
  System.out.println("類加載了!");
 }
 public Foo(){
  System.out.println("調(diào)用了構(gòu)造器!");
 }
}

靜態(tài)塊用法:將多個(gè)類成員放在一起初始化,使得程序更加規(guī)整,對(duì)理解對(duì)象的初始化過程非常關(guān)鍵;

以上就是關(guān)于千鋒扣丁學(xué)堂Java培訓(xùn)面試題之static關(guān)鍵字詳解的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,想要了解更多關(guān)于Java方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的Java視頻,Java培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會(huì)越來越好的,扣丁學(xué)堂老師精心推出的Java視頻教程定能讓你快速掌握J(rèn)ava從入門到精通開發(fā)實(shí)戰(zhàn)技能。扣丁學(xué)堂Java技術(shù)交流群:850353792。


                        JavaEE/微服務(wù)/源碼解析/分布式/企業(yè)級(jí)架構(gòu)【VIP體驗(yàn)課】


     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】       【掃碼進(jìn)入JavaEE/微服務(wù)VIP免費(fèi)公開課】  



查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 Java開發(fā)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部