成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

修飾符final和static淺析

BigTomato / 3273人閱讀

摘要:三類的初始化時機(jī)類的初始化即虛擬機(jī)為類的靜態(tài)變量賦予初始值這和準(zhǔn)備階段設(shè)置默認(rèn)初始值為是不一樣的。類的主動使用種創(chuàng)建類的實(shí)例用語句創(chuàng)建實(shí)例調(diào)用類的靜態(tài)變量或?qū)o態(tài)變量賦值這和是有區(qū)別的在定義一個類的時候里面只能放方法和屬性,這是規(guī)定死了的。

一般在進(jìn)行分析的時候,會從三個方面進(jìn)行分析:類、方法(構(gòu)造方法、成員方法)、變量(成員變量(靜態(tài)變量、實(shí)例變量)、局部變量)。

一、static修飾符:

被static修飾的變量和方法,被類的所有實(shí)例所共享。加載類時只分配一次內(nèi)存。

靜態(tài)變量:可以直接通過類名來訪問 Person.a;

靜態(tài)方法:可以直接通過類名來訪問 Person.say();靜態(tài)方法內(nèi),可以訪問靜態(tài)變量,但是不能使用this關(guān)鍵字不能訪問實(shí)例變量,因?yàn)楸凰袑?shí)例所共有,無法判斷屬于哪個實(shí)例對象

靜態(tài)代碼塊:java虛擬機(jī)在加載類時就執(zhí)行代碼塊

二、final修飾符:

有final修飾表示最終(不可再修改)的意思:

final類:不能被繼承(即沒有子類);

final方法:不能被子類的方法覆蓋(final不用來修飾構(gòu)造方法,父類與子類之間的構(gòu)造方法不存在覆蓋關(guān)系,final修飾是沒有意義的);

final修飾的變量:即常量,常量只能被賦值一次,之后不能改變。(以下靜態(tài)常量屬于編譯時常量(final static int a=2*3;在編譯的時就能計算出具體的值),在編譯的時候?qū)⑦@個值就放入到常量池中,a被訪問時類是不會被初始化的(這是類的被動使用)。訪問類的靜態(tài)變量或靜態(tài)方法的時候類會被初始化(這是類的主動使用)。但只有static修飾的常量,只會在類初始化的時候才會賦值)。具體細(xì)節(jié)請參考“類的生命周期”---加載(堆區(qū)、方法區(qū))--連接(驗(yàn)證、準(zhǔn)備(靜態(tài)變量分配內(nèi)存、設(shè)置默認(rèn)初始值為0)、解析(符號引用替換為直接引用,即指針指向方法區(qū)的內(nèi)存位置))--初始化(程序?qū)︻惢蚪涌?b>主動使用的時候才會被初始化)。

三、類的初始化時機(jī):

類的初始化即java虛擬機(jī)為類的static靜態(tài)變量賦予初始值(這和準(zhǔn)備階段設(shè)置默認(rèn)初始值為0是不一樣的)。只有類的主動使用才會初始化類。

1.類的主動使用(6種):

創(chuàng)建類的實(shí)例:用new語句創(chuàng)建實(shí)例 Person ps=new Person();

調(diào)用類的靜態(tài)變量或?qū)o態(tài)變量賦值:

public class Person{ 
static int a=2*3;  //這和final static int a=2*3;是有區(qū)別的
static{  //Java在定義一個類的時候里面只能放方法和屬性,這是規(guī)定死了的。System.out.println()是在調(diào)用一個叫println的函數(shù),這里是函數(shù)的調(diào)用而不是類里面定義一個函數(shù)。所以需要用static代碼塊
    System.out.println("init Person"); //static聲明的靜態(tài)代碼塊,使得類在初始化的時候會被調(diào)用而不需要創(chuàng)建實(shí)例對象。它這時候就不在任何一個方法中。
} 
} 

調(diào)用的時候?qū)懀?/p>

System.out.println("a="+Person.a); //這樣就可以在不new一個Person實(shí)例的情況下,來初始化Person類了。

調(diào)用類的靜態(tài)方法

調(diào)用java API中的反射方法:Class.forName("Person");

初始化子類的時候會先初始化父類(但"父類"是接口的時候,不會先初始化它所實(shí)現(xiàn)的接口的,只有在程序在使用接口的靜態(tài)變量時才會使靜態(tài)接口初始化)

java虛擬機(jī)啟動時被標(biāo)明為啟動類的類

2.類的被使用:

final類型的靜態(tài)變量在編譯的時候能計算出值(即編譯時常量,在編譯的時候?qū)⑦@個值就放入到常量池中了):
注: final類型的靜態(tài)變量在編譯的時候不能計算出變量的值的時候是會被初始化的

  final static int a=2*3;                 //變量a是編譯時常量
  final static int a=(int)Math.random();  //變量a不是是編譯時常量

"父類"是接口的時候,不會先初始化它所實(shí)現(xiàn)的接口的,只有在程序在使用接口的靜態(tài)變量時才會使靜態(tài)接口初始化

ClassLoader類的loadClass("Person")方法的時候,只是對類的加載,不是初始化。Class.forName("Person");才會初始化

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68132.html

相關(guān)文章

  • 修飾finalstatic淺析

    摘要:三類的初始化時機(jī)類的初始化即虛擬機(jī)為類的靜態(tài)變量賦予初始值這和準(zhǔn)備階段設(shè)置默認(rèn)初始值為是不一樣的。類的主動使用種創(chuàng)建類的實(shí)例用語句創(chuàng)建實(shí)例調(diào)用類的靜態(tài)變量或?qū)o態(tài)變量賦值這和是有區(qū)別的在定義一個類的時候里面只能放方法和屬性,這是規(guī)定死了的。 一般在進(jìn)行分析的時候,會從三個方面進(jìn)行分析:類、方法(構(gòu)造方法、成員方法)、變量(成員變量(靜態(tài)變量、實(shí)例變量)、局部變量)。 一、static修...

    mtunique 評論0 收藏0
  • java程序入口main()方法淺析

    摘要:程序入口方法淺析方法的方法簽名方法簽名講解修飾符類由虛擬機(jī)調(diào)用,為了沒有限制可以自由的調(diào)用,所以采用修飾符。返回值主方法被調(diào)用,將返回值返回給沒有任何意義,因此該方法沒有返回值,所以使用。 java程序入口main()方法淺析 main()方法的方法簽名 public static void main(String[] args) 方法簽名講解 ?public修飾符:java類由jav...

    YFan 評論0 收藏0
  • java修飾使用指南

    摘要:應(yīng)用在修飾類名,類成員,方法,參數(shù),構(gòu)造器中。接口修飾符構(gòu)造器修飾符方法修飾符字段修飾符參數(shù)修飾符最基本的修飾符作用在類上當(dāng)此修飾符修飾類。作用在構(gòu)造器上在構(gòu)造器上,只允許使用三種修飾符,。當(dāng)此修飾符修飾構(gòu)造器。 1、什么是修飾符? 指的是一種標(biāo)識類型以及類型成員的訪問范圍的聲明。 應(yīng)用在修飾類名,類成員,方法,參數(shù),構(gòu)造器中。 2、修飾符的有幾種? ...

    elva 評論0 收藏0
  • Java編程基礎(chǔ)11——面向?qū)ο骭包&權(quán)限修飾&匿名內(nèi)部類

    摘要:外部類要訪問內(nèi)部類的成員,必須創(chuàng)建對象。前提存在一個類或者接口這里的類可以是具體類也可以是抽象類。 1.package關(guān)鍵字的概述及作用(了解) A:為什么要有包 將字節(jié)碼(.class)進(jìn)行分類存放 包其實(shí)就是文件夾 B:包的概述 舉例: 學(xué)生:增加,刪除,修改,查詢 老師:增加,刪除,修改,查詢 ... 方案1:按照功能分 com.heima.add ...

    Bryan 評論0 收藏0
  • 第五章-Java修飾#yyds干貨盤點(diǎn)#

    摘要:修飾符包包的概述和使用其實(shí)就是文件夾作用對類進(jìn)行分類管理包的定義格式格式包名多級包用分開范例帶包的類編譯和執(zhí)行手動建包按照以前的格式編譯文件手動創(chuàng)建包建立文件夾然后在下建立文件夾把文件放到包的最里面把文件放到下的這個文件夾下帶包 1 修飾符1.1 包1.1.1 包的概述和使用其實(shí)就是文件夾作用:對類進(jìn)行分類管理...

    caspar 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<