bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

java怎么構(gòu)造代碼塊,java構(gòu)造方法代碼

Java中,構(gòu)造代碼塊和構(gòu)造函數(shù)有什么區(qū)別?

構(gòu)造代碼塊:是給所有的對(duì)象進(jìn)行初始化,也就是說,所有的對(duì)象都會(huì)調(diào)用一個(gè)代碼塊,只要對(duì)象一建立,就會(huì)調(diào)用這個(gè)代碼塊。

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及成都PE包裝袋等,在網(wǎng)站建設(shè)公司營銷型網(wǎng)站、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。

構(gòu)造函數(shù):是給與之對(duì)應(yīng)的對(duì)象進(jìn)行初始化,它具有針對(duì)性。

Java的靜態(tài)塊和初始化塊分別何時(shí)執(zhí)行?有什么區(qū)別?

靜態(tài)初始化塊:當(dāng)類第一次加載時(shí)執(zhí)行。

非靜態(tài)初始化塊:非靜態(tài)初始化塊會(huì)在構(gòu)造函數(shù)執(zhí)行時(shí),且在構(gòu)造函數(shù)主體代碼執(zhí)行之前被執(zhí)行。

區(qū)別如下:

1、執(zhí)行次數(shù)不同

靜態(tài)塊只執(zhí)行一次,初始化塊可以執(zhí)行多次。

2、作用不同

靜態(tài)初始化塊僅能初始化類變量,即static修飾的數(shù)據(jù)成員。

非靜態(tài)初始化塊可以初始化類的實(shí)例變量。

擴(kuò)展資料:

使用Java靜態(tài)代碼塊注意事項(xiàng):

1、它是隨著類的加載而執(zhí)行,只執(zhí)行一次,并優(yōu)先于主函數(shù)。具體說,靜態(tài)代碼塊是由類調(diào)用的。類調(diào)用時(shí),先執(zhí)行靜態(tài)代碼塊,然后才執(zhí)行主函數(shù)的。

2、靜態(tài)代碼塊其實(shí)就是給類初始化的,而構(gòu)造代碼塊是給對(duì)象初始化的。

3、靜態(tài)代碼塊中的變量是局部變量,與普通函數(shù)中的局部變量性質(zhì)沒有區(qū)別。

4、一個(gè)類中可以有多個(gè)靜態(tài)代碼塊。

5、對(duì)于靜態(tài)變量、靜態(tài)初始化塊、變量、初始化塊、構(gòu)造器,它們的初始化順序依次是(靜態(tài)變量、靜態(tài)初始化塊)(變量、初始化塊)構(gòu)造器。

Java構(gòu)造函數(shù),構(gòu)造代碼塊和靜態(tài)代碼塊的區(qū)別

構(gòu)造函數(shù):執(zhí)行時(shí)間比構(gòu)造代碼塊時(shí)間晚,也是在對(duì)象初始化的時(shí)候運(yùn)行。沒有返回值,構(gòu)造函數(shù)名稱和類名一致。

構(gòu)造代碼塊:執(zhí)行時(shí)間比靜態(tài)代碼塊晚,比構(gòu)造函數(shù)早,和構(gòu)造函數(shù)一樣,只在對(duì)象初始化的時(shí)候運(yùn)行。沒有名字、參數(shù)和返回值。

靜態(tài)代碼塊:最早執(zhí)行,類被載入內(nèi)存時(shí)執(zhí)行,只執(zhí)行一次。沒有名字、參數(shù)和返回值,有關(guān)鍵字static。

靜態(tài)代碼塊只會(huì)在類被載入內(nèi)存時(shí)加載一次,是最先執(zhí)行的,然后是構(gòu)造代碼塊,最后才是構(gòu)造函數(shù)。構(gòu)造代碼塊和構(gòu)造函數(shù)都是在對(duì)象創(chuàng)建的時(shí)候執(zhí)行,有幾個(gè)對(duì)象就會(huì)執(zhí)行幾次。

JAVA構(gòu)造代碼塊所在區(qū)域

一.簡介

首先說一下,Java中有哪些代碼塊.

普通代碼塊

就是在方法后面使用"{}"括起來的代碼片段,不能單獨(dú)執(zhí)行,必須調(diào)下其方法名才可以執(zhí)行.12

靜態(tài)代碼塊

在類中使用static修飾,并使用"{}"括起來的代碼片段,用于靜態(tài)變量的初始化或?qū)ο髣?chuàng)建前的環(huán)境初始化.12

同步代碼塊

使用synchronize關(guān)鍵字修飾,并使用"{}"括起來的代碼片段.它表示在同一時(shí)間只能有一個(gè)線程進(jìn)入到該方法快中,是一種多線程保護(hù)機(jī)制.12

構(gòu)造代碼塊

在類中沒與任何的前綴或后綴,并使用"{}"括起來的代碼片段.12

簡單的例子:

public class Client {

{//構(gòu)造代碼塊

System.out.println("執(zhí)行構(gòu)造代碼塊");

} public Client() {

System.out.println("執(zhí)行無參構(gòu)造函數(shù)");

} public Client(String string) {

System.out.println("執(zhí)行有參構(gòu)造函數(shù)");

}

}12345678910111213

這是一丟按非常簡單的代碼,它包含了構(gòu)造代碼塊,無參構(gòu)造,有參構(gòu)造.我先看一個(gè)問題,我們知道代碼塊不具有獨(dú)立執(zhí)行的能力,那么編譯器是如何處理構(gòu)造代碼塊的呢?很簡單,編譯器會(huì)把構(gòu)造代碼塊插入到每個(gè)構(gòu)造函數(shù)的最前端.這樣 上面的代碼就等同于:

public class Client { public Client() {

System.out.println("執(zhí)行構(gòu)造代碼塊");

System.out.println("執(zhí)行無參構(gòu)造函數(shù)");

} public Client(String string) {

System.out.println("執(zhí)行構(gòu)造代碼塊");

System.out.println("執(zhí)行有參構(gòu)造函數(shù)");

}

}12345678910111213

二.特性與應(yīng)用

基本的理解后,我們?cè)賮砜聪缕浜蜆?gòu)造函數(shù)的執(zhí)行順序.由于是插入到構(gòu)造函數(shù)的的前面,自然在通過new關(guān)鍵字生成一個(gè)實(shí)例的時(shí)候會(huì)先執(zhí)行構(gòu)造代碼塊,然后在執(zhí)行其他代碼(注意:構(gòu)造代碼塊不是在構(gòu)造函數(shù)之前運(yùn)行,而是依托于構(gòu)造函數(shù)).接著我們來看一下兩個(gè)主要的應(yīng)用場景:

1.初始化實(shí)例變量

如果每個(gè)構(gòu)造函數(shù)都需要初始化變量,即可通過構(gòu)造代碼塊來實(shí)現(xiàn).從而取代在每個(gè)構(gòu)造函數(shù)調(diào)用初始化實(shí)例變量的方法.12

2.初始化實(shí)例環(huán)境

一個(gè)對(duì)象必須在適當(dāng)?shù)膱鼍跋虏拍艽嬖?如果沒有適當(dāng)?shù)膱鼍?則就需要在創(chuàng)建對(duì)象的時(shí)候創(chuàng)建此場景.12

以上兩個(gè)場景都是利用了構(gòu)造代碼塊的兩個(gè)特性:

1.在每個(gè)構(gòu)造函數(shù)中都運(yùn)行

2.在構(gòu)造函數(shù)中它會(huì)首先運(yùn)行123

三.構(gòu)造代碼塊足夠聰明

首先看一段代碼,使用構(gòu)造代碼塊做對(duì)象計(jì)數(shù)器.

public class Client { public static int count = 0;

{

count++;

} public Client() {

} public Client(int i) { this();

} public Client(String string) {

} public static void main(String[] args) { new Client(); new Client(1); new Client("1");

System.out.println(Client.count);

}

}123456789101112131415161718192021222324

這個(gè)代碼真的達(dá)到我們預(yù)期的效果嗎?你可能會(huì)對(duì)this()產(chǎn)生了質(zhì)疑.

答案是:3.

顯然Java編譯器是足夠聰明的.這是因?yàn)?在插入到每個(gè)構(gòu)造函數(shù)中的時(shí)候,有個(gè)例外,就是如果遇到this關(guān)鍵字(也就是構(gòu)造函數(shù)調(diào)用自身其他的構(gòu)造函數(shù)時(shí))不插入構(gòu)造代碼塊.

那為什么編譯器這么聰明呢?這是因?yàn)闃?gòu)造代碼塊的出現(xiàn)就是為了提取構(gòu)造函數(shù)的共同量,減少各個(gè)構(gòu)造函數(shù)的代碼而產(chǎn)生的.

四.總結(jié)

靈活適當(dāng)?shù)氖褂脴?gòu)造代碼塊會(huì)讓你的代碼更加的簡約和清晰.代碼的質(zhì)量自然很高很多,逼格也高了許多,有沒有.

最后還有一點(diǎn)需要注意的,千萬不要認(rèn)為this是特殊情況,那super也會(huì)類似處理.其實(shí)不會(huì),在構(gòu)造代碼塊的處理上,super方法沒有任何特殊的地方.編譯器只是把構(gòu)造代碼塊插入到super方法之后執(zhí)行而已.

java構(gòu)造代碼塊的作用是什么?

//構(gòu)造塊:直接在類中定義且沒有加static關(guān)鍵字的代碼塊稱為{}構(gòu)造代碼塊。構(gòu)造代碼塊在創(chuàng)建對(duì)象時(shí)被調(diào)用,每次創(chuàng)建對(duì)象都會(huì)被調(diào)用,并且構(gòu)造代碼塊的執(zhí)行次序優(yōu)先于類構(gòu)造函數(shù)。

public class CodeBlock02

{

{

System.out.println("第一代碼塊");

}

public CodeBlock02(){

System.out.println("構(gòu)造方法");

}

{

System.out.println("第二構(gòu)造塊");

}

public static void main(String[] args){

new CodeBlock02();

new CodeBlock02();

new CodeBlock02();

}

}

/**

執(zhí)行結(jié)果:

第一代碼塊

第二構(gòu)造塊

構(gòu)造方法

第一代碼塊

第二構(gòu)造塊

構(gòu)造方法

第一代碼塊

第二構(gòu)造塊

構(gòu)造方法*/

Java常見代碼塊的作用與區(qū)別

1. 局部代碼塊

作用在方法當(dāng)中,作用是控制變量的生命周期:

public void show(){

{

System.out.println("局部代碼塊運(yùn)行!");

}

}123456

在程序中當(dāng)我們定義完成一個(gè)局部變量x之后,并且在接下來的代碼中,不想再用到它時(shí),那么就沒必要讓x在內(nèi)存中繼續(xù)占用空間。因此就有了局部代碼塊。

2. 構(gòu)造代碼塊

作用在類的定義Body中,作用是給類的部分字段統(tǒng)一初始化:

public class Apple {

private String size;

//構(gòu)造代碼塊

{

System.out.println("構(gòu)造代碼塊運(yùn)行!");

size = "E";

}

}

12345678910

構(gòu)造代碼塊與構(gòu)造函數(shù)的區(qū)別是:構(gòu)造代碼塊是給所有對(duì)象進(jìn)行統(tǒng)一初始化,而構(gòu)造函數(shù)是給對(duì)應(yīng)的對(duì)象初始化,因?yàn)闃?gòu)造函數(shù)是可以多個(gè)的,運(yùn)行哪個(gè)構(gòu)造函數(shù)就會(huì)建立什么樣的對(duì)象,但無論建立哪個(gè)對(duì)象,都會(huì)先執(zhí)行相同的構(gòu)造代碼塊。也就是說,構(gòu)造代碼塊中定義的是不同對(duì)象共性的初始化內(nèi)容。所以理所當(dāng)然的,構(gòu)造代碼塊在構(gòu)造函數(shù)之前執(zhí)行。

3. 靜態(tài)代碼塊

作用有兩個(gè):

(1)給類的靜態(tài)變量賦值;

(2)聲明靜態(tài)變量;

作用在類的Body中,對(duì)類中的靜態(tài)變量初始化:

public class APP {

static int x, y; // 靜態(tài)變量

static {

x = 5; // 給靜態(tài)變量x賦值

}

public static void myMethod() {

y = x++ + ++x; // x++ 先使用x的值再加1;++x先加1再使用x的值

}

public static void main(String[] args) {

x--;

myMethod();

System.out.println(x + y + ++x);

}

}

輸出:23

網(wǎng)站名稱:java怎么構(gòu)造代碼塊,java構(gòu)造方法代碼
標(biāo)題鏈接:http://vcdvsql.cn/article12/dsiigdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化網(wǎng)站排名域名注冊(cè)關(guān)鍵詞優(yōu)化網(wǎng)站營銷云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司