摘要:三類的初始化時(shí)機(jī)類的初始化即虛擬機(jī)為類的靜態(tài)變量賦予初始值這和準(zhǔn)備階段設(shè)置默認(rèn)初始值為是不一樣的。類的主動(dòng)使用種創(chuàng)建類的實(shí)例用語句創(chuàng)建實(shí)例調(diào)用類的靜態(tài)變量或?qū)o態(tài)變量賦值這和是有區(qū)別的在定義一個(gè)類的時(shí)候里面只能放方法和屬性,這是規(guī)定死了的。
一般在進(jìn)行分析的時(shí)候,會(huì)從三個(gè)方面進(jìn)行分析:類、方法(構(gòu)造方法、成員方法)、變量(成員變量(靜態(tài)變量、實(shí)例變量)、局部變量)。
一、static修飾符:被static修飾的變量和方法,被類的所有實(shí)例所共享。加載類時(shí)只分配一次內(nèi)存。
靜態(tài)變量:可以直接通過類名來訪問 Person.a;
靜態(tài)方法:可以直接通過類名來訪問 Person.say();靜態(tài)方法內(nèi),可以訪問靜態(tài)變量,但是不能使用this關(guān)鍵字且不能訪問實(shí)例變量,因?yàn)楸凰袑?shí)例所共有,無法判斷屬于哪個(gè)實(shí)例對(duì)象
靜態(tài)代碼塊:java虛擬機(jī)在加載類時(shí)就執(zhí)行代碼塊
二、final修飾符:有final修飾表示最終(不可再修改)的意思:
final類:不能被繼承(即沒有子類);
final方法:不能被子類的方法覆蓋(final不用來修飾構(gòu)造方法,父類與子類之間的構(gòu)造方法不存在覆蓋關(guān)系,final修飾是沒有意義的);
final修飾的變量:即常量,常量只能被賦值一次,之后不能改變。(以下靜態(tài)常量屬于編譯時(shí)常量(final static int a=2*3;在編譯的時(shí)就能計(jì)算出具體的值),在編譯的時(shí)候?qū)⑦@個(gè)值就放入到常量池中,a被訪問時(shí)類是不會(huì)被初始化的(這是類的被動(dòng)使用)。訪問類的靜態(tài)變量或靜態(tài)方法的時(shí)候類會(huì)被初始化(這是類的主動(dòng)使用)。但只有static修飾的常量,只會(huì)在類初始化的時(shí)候才會(huì)賦值)。具體細(xì)節(jié)請(qǐng)參考“類的生命周期”---加載(堆區(qū)、方法區(qū))--連接(驗(yàn)證、準(zhǔn)備(靜態(tài)變量分配內(nèi)存、設(shè)置默認(rèn)初始值為0)、解析(符號(hào)引用替換為直接引用,即指針指向方法區(qū)的內(nèi)存位置))--初始化(程序?qū)︻惢蚪涌?b>主動(dòng)使用的時(shí)候才會(huì)被初始化)。
三、類的初始化時(shí)機(jī):類的初始化即java虛擬機(jī)為類的static靜態(tài)變量賦予初始值(這和準(zhǔn)備階段設(shè)置默認(rèn)初始值為0是不一樣的)。只有類的主動(dòng)使用才會(huì)初始化類。
1.類的主動(dòng)使用(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在定義一個(gè)類的時(shí)候里面只能放方法和屬性,這是規(guī)定死了的。System.out.println()是在調(diào)用一個(gè)叫println的函數(shù),這里是函數(shù)的調(diào)用而不是類里面定義一個(gè)函數(shù)。所以需要用static代碼塊 System.out.println("init Person"); //static聲明的靜態(tài)代碼塊,使得類在初始化的時(shí)候會(huì)被調(diào)用而不需要?jiǎng)?chuàng)建實(shí)例對(duì)象。它這時(shí)候就不在任何一個(gè)方法中。 } }
調(diào)用的時(shí)候?qū)懀?/p>
System.out.println("a="+Person.a); //這樣就可以在不new一個(gè)Person實(shí)例的情況下,來初始化Person類了。
調(diào)用類的靜態(tài)方法
調(diào)用java API中的反射方法:Class.forName("Person");
初始化子類的時(shí)候會(huì)先初始化父類(但"父類"是接口的時(shí)候,不會(huì)先初始化它所實(shí)現(xiàn)的接口的,只有在程序在使用接口的靜態(tài)變量時(shí)才會(huì)使靜態(tài)接口初始化)
java虛擬機(jī)啟動(dòng)時(shí)被標(biāo)明為啟動(dòng)類的類
2.類的被使用:
final類型的靜態(tài)變量在編譯的時(shí)候能計(jì)算出值(即編譯時(shí)常量,在編譯的時(shí)候?qū)⑦@個(gè)值就放入到常量池中了):
注: final類型的靜態(tài)變量在編譯的時(shí)候不能計(jì)算出變量的值的時(shí)候是會(huì)被初始化的
final static int a=2*3; //變量a是編譯時(shí)常量 final static int a=(int)Math.random(); //變量a不是是編譯時(shí)常量
"父類"是接口的時(shí)候,不會(huì)先初始化它所實(shí)現(xiàn)的接口的,只有在程序在使用接口的靜態(tài)變量時(shí)才會(huì)使靜態(tài)接口初始化
ClassLoader類的loadClass("Person")方法的時(shí)候,只是對(duì)類的加載,不是初始化。Class.forName("Person");才會(huì)初始化
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/68132.html
摘要:三類的初始化時(shí)機(jī)類的初始化即虛擬機(jī)為類的靜態(tài)變量賦予初始值這和準(zhǔn)備階段設(shè)置默認(rèn)初始值為是不一樣的。類的主動(dòng)使用種創(chuàng)建類的實(shí)例用語句創(chuàng)建實(shí)例調(diào)用類的靜態(tài)變量或?qū)o態(tài)變量賦值這和是有區(qū)別的在定義一個(gè)類的時(shí)候里面只能放方法和屬性,這是規(guī)定死了的。 一般在進(jìn)行分析的時(shí)候,會(huì)從三個(gè)方面進(jìn)行分析:類、方法(構(gòu)造方法、成員方法)、變量(成員變量(靜態(tài)變量、實(shí)例變量)、局部變量)。 一、static修...
摘要:程序入口方法淺析方法的方法簽名方法簽名講解修飾符類由虛擬機(jī)調(diào)用,為了沒有限制可以自由的調(diào)用,所以采用修飾符。返回值主方法被調(diào)用,將返回值返回給沒有任何意義,因此該方法沒有返回值,所以使用。 java程序入口main()方法淺析 main()方法的方法簽名 public static void main(String[] args) 方法簽名講解 ?public修飾符:java類由jav...
摘要:應(yīng)用在修飾類名,類成員,方法,參數(shù),構(gòu)造器中。接口修飾符構(gòu)造器修飾符方法修飾符字段修飾符參數(shù)修飾符最基本的修飾符作用在類上當(dāng)此修飾符修飾類。作用在構(gòu)造器上在構(gòu)造器上,只允許使用三種修飾符,。當(dāng)此修飾符修飾構(gòu)造器。 1、什么是修飾符? 指的是一種標(biāo)識(shí)類型以及類型成員的訪問范圍的聲明。 應(yīng)用在修飾類名,類成員,方法,參數(shù),構(gòu)造器中。 2、修飾符的有幾種? ...
摘要:外部類要訪問內(nèi)部類的成員,必須創(chuàng)建對(duì)象。前提存在一個(gè)類或者接口這里的類可以是具體類也可以是抽象類。 1.package關(guān)鍵字的概述及作用(了解) A:為什么要有包 將字節(jié)碼(.class)進(jìn)行分類存放 包其實(shí)就是文件夾 B:包的概述 舉例: 學(xué)生:增加,刪除,修改,查詢 老師:增加,刪除,修改,查詢 ... 方案1:按照功能分 com.heima.add ...
摘要:修飾符包包的概述和使用其實(shí)就是文件夾作用對(duì)類進(jìn)行分類管理包的定義格式格式包名多級(jí)包用分開范例帶包的類編譯和執(zhí)行手動(dòng)建包按照以前的格式編譯文件手動(dòng)創(chuàng)建包建立文件夾然后在下建立文件夾把文件放到包的最里面把文件放到下的這個(gè)文件夾下帶包 1 修飾符1.1 包1.1.1 包的概述和使用其實(shí)就是文件夾作用:對(duì)類進(jìn)行分類管理...
閱讀 1165·2021-11-24 09:39
閱讀 3632·2021-09-02 15:21
閱讀 2174·2021-08-24 10:01
閱讀 735·2021-08-19 10:55
閱讀 2459·2019-08-30 15:55
閱讀 1221·2019-08-30 14:16
閱讀 3005·2019-08-29 15:17
閱讀 3245·2019-08-29 13:53