国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

? Java Java???? ?? ???? ?? ?? ??

?? ???? ?? ?? ??

Nov 27, 2019 pm 04:15 PM
java static

?? ???? ?? ?? ??

??? ?? ????? ?? ???? ??? ????? ????.

public class Test {
     
    static{
        System.out.println("test static 1");
    }
  
    static{
        System.out.println("test static 2");
    }
    
    public static void main(String[] args) {
         
    }
}

????? ?? ? Xiaobai Tongxiao? ??? ?? ?????. ??? ?????? main ????? ???? ???, ??? ??? ? ???? ??? ??? ?????...

運行結(jié)果:
test static 1
test static 2

????? ???: ?? ?...????... ???? ?? ???? ????...

?? ? ??? ??? ??? code ?? ???? ?? ??, ???? ??? ??? ??? ???? ?? ????. ?? ???? JVM ??? ??? ???? ?? ?????! ??, ?? ? ??? ??? ??? ???? ????. ? ????? ???? ? ??? ?? ?? ? ??? ??? ? ? ????. 1. ?? ??? ?? ??? ???? ??? ?? ?? ???? ???? ????. ?? ???.

??? ???? ??? ??? ???? ???? ??? ? ????! ?? ???? ? ?? ?? ???

???? ??? ????? ?? ?? ?? ??? ???? ? ?????. ?? ??? ???? ?? ???? ??? ? ???, ????? ?? ?? ??? ?? ? ????. ???? ?? ???? ? ?? ??? ?? ??? ???? ???? ? ?? ?????. ?? ??? ???? ???? ??? ???? ? ?? ??? ? ?? ?????. ???? ??? ? ? ?? ?????. ??? ? ?? ???? ?? ?? ??? ??? ?? ?? ???? ?????.

[?? ??: java ??? ????]

2. static

1? ??? ??? static? ?? ??? ??? ???? ???? ?? ??? ??????. ??? ???

? ?? ???? ???? ??? ??? ???? ???? ??? ?? ?????.

"???? ???? ??? ???"??? ??? ??? ??????? ?, ???? ?? ??? ?? ???? ????. [?? ??? ? ???? ?? ?? ????? ?????. ?? ??? ???? ?? ????? ?? ? ??? ?? ?? ????. ], ??? ?? ???? ?? ?? ??? ??? ????? [self? ? ???? ?? ???? ??? ?????]... ?? ???? ?? ? ????. ???????

2. ???? ?? ???? static?? ??? ??? ????, ???? ?? ??? ?? ???? ??????. ???? ????? ?? ??? ??? ?? ?? ??? ? ????. 3. ?? ?? ?? ???? ??? ? ??? ???? ??? ??? ??? ??? ? ?? ???? ????. ?? ???? ??? ??? ? ????!

4. ??? ?? ??? ??? ???? ???? ?????. ?, ???? ??? ??? ??? ???? ??? ???? ? ????.

3. ?? ?? ????

??? ???? ???? ???? ?????

?? ???? ?? ??? ???? ?? ? ?? ??? ?? ??? ???? ???. ? ???? ?? ?????? ????? ??? ????.

1. ?? ?? ??2. ???? ??? ??3. ?? ?? ??4. ?? ???? ??? ? ????. ]

5 , ?? ???? ???

?? ?? ????? ???? ?????...




4 ?? ??? ???? ??? ??

?? ??:

???? ??? ?? ??? ??? ????. ?? ??(??? ????? ?)?? ?? ?? ??? ??? ?? ? ???? ????.

???? ??: ???? ???? ?? ?? ??? ???? ???? ???. ? ???? ??? ???? ?????. ? ?? ??? ??:

static? ?? ??? ???? ? ??? ? ????

, ??? ?? ???. Java? ???? ?? ?????!


5. ?? ??? ???? ??? ??? [?? ???? ??] ?? ??:

?? ??? ?? ???? ???? ??? ?? ???? ???? ??? ???? ???. ?? ???? ?? JVM? ?? ??? ?? ??? ??? ? ?? ?????. ???? ??: ??? ??? ??? ? ???? ?? ?? ??? ??? ?????. ???? ??? ???? ??? ???, ????? ??? ?? ? ??? ? ?? ?? ?? ??? ?? ???. .

?? ?? ??? IQ? ??? IQ?? ??? ???, ?? ?? ?? ????? ???. ??? ?? ??? ??? ?? ????. ?? ?? ?? ????? ?? ???? ????? ???.

怎么理解呢?打個比喻吧...就比方說程序員小王是一個比較溫柔陽光的男孩子,這1024的這一天,老板閑的沒事,非要拉著程序員小王來玩耍,怎么個玩法呢?老板和小王一人拿著一把菜刀,規(guī)則很簡單,互相傷害,一人一刀,你一刀,我一刀....游戲一開始,老板二話不說,跳起來就是一刀,程序員小王二話也沒說反手就是一菜刀回去,這個時候老板發(fā)飆了,雙眼瞪得忒大,跳起來又是一刀,這個時候程序員小王不敢還手了,就沒動手。沒想到老板越來越生猛,左一刀右一刀全程下來差不多砍個半個時....程序員小王一直沒有還過手,因為小王知道他是老板...

這個程序員小王只會在老板第一次揮刀的時候,回老板一刀,之后就不還手了,這個時候我們把程序員小王看做是靜態(tài)變量,把老板第一次向小王揮刀看做是類加載,把小王回老板一刀看出是分配內(nèi)存空間,而一人一刀這個回合過程看成是類加載的過程,之后老板的每一刀都看成是創(chuàng)建一次對象。

連貫起來就是static變量值在類第一次加載的時候分配空間,以后創(chuàng)建類對象的時候不會重新分配

之后這個老板挨了一刀之后躺醫(yī)院了一年,一出院回到公司第一件事就是拉程序員宜春出來玩耍,老板殊不知其然,這個博主程序員宜春性格異常暴躁,老板遞給程序員宜春一把菜刀,博主宜春一接過菜刀,猝不及防的被老板跳起來就是一刀,程序員宜春痛的嗷了一聲,暴躁的程序員宜春還沒嗷完,在嗷的同時跳起來就是給老板一刀,接著老板跳起來又是一刀,程序員宜春嗷的一聲又是回一刀,老板跳起來又一刀,程序員宜春嗷的一聲又是回一刀,只要老板沒停程序員宜春就沒停,因為程序員宜春知道,就自己這曝脾氣,暴躁起來si都敢摸,肯定有幾個老鐵知道....

程序員宜春就類似實例變量,每次創(chuàng)建對象,都會為每個對象分配成員變量內(nèi)存空間,就像老板來一刀,程序員宜春都會回一刀這樣子的...

6、訪問靜態(tài)變量和實例變量的兩種方式

我們都知道靜態(tài)變量是屬于這個類,而不是屬于是對象,static獨立于對象。

但是各位有木有想過:靜態(tài)成員變量雖然獨立于對象,但是不代表不可以通過對象去訪問,所有的靜態(tài)方法和靜態(tài)變量都可以通過對象訪問【只要訪問權(quán)限足夠允許就行】,不理解沒關(guān)系,來個代碼就理解了

public class StaticDemo {

        static int value = 666;

        public static void main(String[] args) throws Exception{
            new StaticDemo().method();
        }

        private void method(){
            int value = 123;
            System.out.println(this.value);
        }

}

猜想一下結(jié)果,我猜你的結(jié)果是123,哈哈是咩?其實

運行結(jié)果: 666

回過頭再去品味一下上面的那段話,你就能非??陀^明了了,這個思想概念要有只是這種用法不推薦!

因此小結(jié)一下訪問靜態(tài)變量和實例變量的兩種方法:

靜態(tài)變量:

類名.靜態(tài)變量

對象.靜態(tài)變量(不推薦)

靜態(tài)方法:

類名.靜態(tài)方法

對象.靜態(tài)方法(不推薦)

7、static靜態(tài)方法

static修飾的方法也叫做靜態(tài)方法,不知道各位發(fā)現(xiàn)咩有,其實我們最熟悉的static靜態(tài)方法就是main方法了~小白童鞋:喔好像真的是哦~。由于對于靜態(tài)方法來說是不屬于任何實例對象的,this指的是當前對象,因為static靜態(tài)方法不屬于任何對象,所以就談不上this了。

還有一點就是:構(gòu)造方法不是靜態(tài)方法!

8、static靜態(tài)代碼塊

先看個程序吧,看看自個是否掌握了static代碼塊,下面程序代碼繼承關(guān)系為 BaseThree——> BaseTwo——> BaseOne

BaseOne類

package com.gx.initializationblock;

public class BaseOne {

    public BaseOne() {
        System.out.println("BaseOne構(gòu)造器");
    }

    {
        System.out.println("BaseOne初始化塊");
        System.out.println();
    }

    static {
        System.out.println("BaseOne靜態(tài)初始化塊");

    }

}

BaseTwo類

package com.gx.initializationblock;

public class BaseTwo extends BaseOne {
    public BaseTwo() {
        System.out.println("BaseTwo構(gòu)造器");
    }

    {
        System.out.println("BaseTwo初始化塊");
    }

    static {
        System.out.println("BaseTwo靜態(tài)初始化塊");
    }
}

BaseThree 類

package com.gx.initializationblock;

public class BaseThree extends BaseTwo {
    public BaseThree() {
        System.out.println("BaseThree構(gòu)造器");
    }

    {
        System.out.println("BaseThree初始化塊");
    }

    static {
        System.out.println("BaseThree靜態(tài)初始化塊");
    }
}

測試demo2類

package com.gx.initializationblock;

/*
     注:這里的ABC對應(yīng)BaseOne、BaseTwo、BaseThree 
 * 多個類的繼承中初始化塊、靜態(tài)初始化塊、構(gòu)造器的執(zhí)行順序
     在繼承中,先后執(zhí)行父類A的靜態(tài)塊,父類B的靜態(tài)塊,最后子類的靜態(tài)塊,
     然后再執(zhí)行父類A的非靜態(tài)塊和構(gòu)造器,然后是B類的非靜態(tài)塊和構(gòu)造器,最后執(zhí)行子類的非靜態(tài)塊和構(gòu)造器
 */
public class Demo2 {
    public static void main(String[] args) {
        BaseThree baseThree = new BaseThree();
        System.out.println("-----");
        BaseThree baseThree2 = new BaseThree();

    }
}

運行結(jié)果

BaseOne靜態(tài)初始化塊
BaseTwo靜態(tài)初始化塊
BaseThree靜態(tài)初始化塊
BaseOne初始化塊

BaseOne構(gòu)造器
BaseTwo初始化塊
BaseTwo構(gòu)造器
BaseThree初始化塊
BaseThree構(gòu)造器
-----
BaseOne初始化塊

BaseOne構(gòu)造器
BaseTwo初始化塊
BaseTwo構(gòu)造器
BaseThree初始化塊
BaseThree構(gòu)造器

至于static代碼塊運行結(jié)果不是很清晰的童鞋,詳細講解請看這篇Static靜態(tài)代碼塊以及各代碼塊之間的執(zhí)行順序

以上僅僅是讓各位明確代碼塊之間的運行順序,顯然還是不夠的,靜態(tài)代碼塊通常用來對靜態(tài)變量進行一些初始化操作,比如定義枚舉類,代碼如下:

public enum WeekDayEnum {
    MONDAY(1,"周一"),
    TUESDAY(2, "周二"),
    WEDNESDAY(3, "周三"),
    THURSDAY(4, "周四"),
    FRIDAY(5, "周五"),
    SATURDAY(6, "周六"),
    SUNDAY(7, "周日");
 
    private int code;
    private String desc;
 
    WeekDayEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }
 
    private static final Map<Integer, WeekDayEnum> WEEK_ENUM_MAP = new HashMap<Integer, WeekDayEnum>();
 
    // 對map進行初始化
    static {
        for (WeekDayEnum weekDay : WeekDayEnum.values()) {
            WEEK_ENUM_MAP.put(weekDay.getCode(), weekDay);
        }
    }
 
    public static WeekDayEnum findByCode(int code) {
        return WEEK_ENUM_MAP.get(code);
    }
 
    public int getCode() {
        return code;
    }
 
    public void setCode(int code) {
        this.code = code;
    }
 
    public String getDesc() {
        return desc;
    }
 
    public void setDesc(String desc) {
        this.desc = desc;
    }
} 

當然不僅僅是枚舉這一方面,還有我們熟悉的單例模式同樣也用到了靜態(tài)代碼塊,如下:

public class Singleton {
    private static Singleton instance;
 
    static {
        instance = new Singleton();
    }
 
    private Singleton() {}
 
    public static Singleton getInstance() {
        return instance;
    }
}

9、static變量與普通變量區(qū)別

static變量也稱作靜態(tài)變量,靜態(tài)變量和非靜態(tài)變量的區(qū)別是:靜態(tài)變量被所有的對象所共享,在內(nèi)存中只有一個副本,它當且僅當在類初次加載時會被初始化。而非靜態(tài)變量是對象所擁有的,在創(chuàng)建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。

還有一點就是static成員變量的初始化順序按照定義的順序進行初始化。

10、靜態(tài)內(nèi)部類

靜態(tài)內(nèi)部類與非靜態(tài)內(nèi)部類之間存在一個最大的區(qū)別,我們知道非靜態(tài)內(nèi)部類在編譯完成之后會隱含地保存著一個引用,該引用是指向創(chuàng)建它的外圍內(nèi),但是靜態(tài)內(nèi)部類卻沒有。沒有這個引用就意味著:

1、它的創(chuàng)建是不需要依賴外圍類的創(chuàng)建。
2、它不能使用任何外圍類的非static成員變量和方法。

代碼舉例(靜態(tài)內(nèi)部類實現(xiàn)單例模式)

public class Singleton {
    
   // 聲明為 private 避免調(diào)用默認構(gòu)造方法創(chuàng)建對象
    private Singleton() {
    }
    
   // 聲明為 private 表明靜態(tài)內(nèi)部該類只能在該 Singleton 類中被訪問
    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getUniqueInstance() {
        return SingletonHolder.INSTANCE;
    }
}

Singleton 類加載時,靜態(tài)內(nèi)部類 SingletonHolder 沒有被加載進內(nèi)存。只有當調(diào)用 getUniqueInstance()方法從而觸發(fā) SingletonHolder.INSTANCESingletonHolder 才會被加載,此時初始化 INSTANCE 實例,并且 JVM 能確保 INSTANCE 只被實例化一次。

這種方式不僅具有延遲初始化的好處,而且由 JVM 提供了對線程安全的支持。

11、靜態(tài)導(dǎo)包

靜態(tài)導(dǎo)包格式:import static

這兩個關(guān)鍵字連用可以指定導(dǎo)入某個類中的指定靜態(tài)資源,并且不需要使用類名調(diào)用類中靜態(tài)成員,可以直接使用類中靜態(tài)成員變量和成員方法

//  Math. --- 將Math中的所有靜態(tài)資源導(dǎo)入,這時候可以直接使用里面的靜態(tài)方法,而不用通過類名進行調(diào)用
//  如果只想導(dǎo)入單一某個靜態(tài)方法,只需要將換成對應(yīng)的方法名即可
 
import static java.lang.Math.;
//  換成import static java.lang.Math.max;具有一樣的效果
 
public class Demo {
    public static void main(String[] args) {
 
        int max = max(1,2);
        System.out.println(max);
    }
}

靜態(tài)導(dǎo)包在書寫代碼的時候確實能省一點代碼,可以直接調(diào)用里面的靜態(tài)成員,但是會影響代碼可讀性,所以開發(fā)中一般情況下不建議這么使用。

12、static注意事項

1、靜態(tài)只能訪問靜態(tài)。
2、非靜態(tài)既可以訪問非靜態(tài)的,也可以訪問靜態(tài)的。

13、final與static的藕斷絲連

到這里文章本該結(jié)束了的,但是static的使用始終離不開final字眼,二者可謂藕斷絲連,常常繁見,我覺得還是很有必要講講,那么一起來看看下面這個程序吧。

package Demo;

class FinalDemo {
    public final double i = Math.random();
    public static double t = Math.random();
}

public class DemoDemo {
    public static void main(String[] args) {

        FinalDemo demo1 = new FinalDemo();
        FinalDemo demo2 = new FinalDemo();
        System.out.println("final修飾的  i=" + demo1.i);
        System.out.println("static修飾的 t=" + demo1.t);
        System.out.println("final修飾的  i=" + demo2.i);
        System.out.println("static修飾的 t=" + demo2.t);

        System.out.println("t+1= "+ ++demo2.t );
//      System.out.println( ++demo2.i );//編譯失敗
      }
}
運行結(jié)果:
    final修飾的  i=0.7282093281367935
    static修飾的 t=0.30720545678577604
    final修飾的  i=0.8106990945706758
    static修飾的 t=0.30720545678577604
    t+1= 1.307205456785776

static修飾的變量沒有發(fā)生變化是因為static作用于成員變量只是用來表示保存一份副本,其不會發(fā)生變化。怎么理解這個副本呢?其實static修飾的在類加載的時候就加載完成了(初始化),而且只會加載一次也就是說初始化一次,所以不會發(fā)生變化!

至于final修飾的反而發(fā)生變化了?是不是巔覆你對final的看法?關(guān)于final詳細講解博主也準備好了一篇文章程序員你真的理解final關(guān)鍵字嗎?

ok,文章就先到這里了,希望這篇文章能夠幫助到你對static的認識,若有不足或者不正之處,希望諒解并歡迎批評指正!

本文來自?java入門?欄目,歡迎學(xué)習(xí)!

? ??? ?? ???? ?? ?? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???
JDBC? Java? ??? ???? ??? ?????? JDBC? Java? ??? ???? ??? ?????? Aug 02, 2025 pm 12:29 PM

JDBC ????? ???? ????? ?? ?? ?? ??? ?? ?? ??? ?? ? ?? ??? ?? ?? ?? ??? ???????. 1. ????? ????? Conn.SetAutoCommit (False)?? ??????. 2. ??? ? ????? ?? ?? SQL ??? ?????. 3. ?? ??? ??? ?? Conn.commit ()?? ???? ??? ???? ???? ?? ??? ???? Conn.Rollback ()?? ??????. ???, ? ??? ???? ????, ??? ???? ????, ?? ??? ??? ?? ??? ??? ???? ? ???????. ?? ?? ?? ???? ????? ??? ???? ?? ?? ???? ???? ??? ????? ?? ??? ??? ? ?? ???? ?? ????.

Java? ??? ?? ??? ?????? Java? ??? ?? ??? ?????? Aug 02, 2025 am 02:38 AM

?? ?? ? ?? ???? ???? ?? Java.Time ???? ???? ??????. 2. LocalDate, LocalDateTime ? LocalTime? ?? ?? ??? ??? ?????. 3. () ???? ???? ?? ??? ??? ????. 4. ???/???? ??? ???? ??? ????? ??? ??????. 5. ZonedDateTime ? Zoneid? ???? ???? ??????. 6. DateTimeFormatter? ?? ?? ? ?? ?? ?? ???; 7. ??? ?? ?? ?? ??? ????? ?? ??????. ?? Java? ?? ??? ???? ??? ??? ???? Java.Timeapi ??? ?? ??? ???????.

Java ??? ?? ?? : Spring Boot vs Quarkus vs Micronaut Java ??? ?? ?? : Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-FormancetArtUptimeMoryUsage, Quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusoftenperforminglightbetterine serverless sinarios.2.thyvelopecosyste,

???? ?? ? ??? ?? ???? ?? ? ??? ?? Aug 01, 2025 am 06:40 AM

NetworkPortSandfirewallsworkTogetToenableCommunication whileensuringsecurity.1.networkportSarevirtualendpointsnumbered0–65535, Withwell-nownports like80 (http), 443 (https), 22 (ssh) ? 25 (smtp) ?? (specservices

??? ??? Java?? ??? ?????? ??? ??? Java?? ??? ?????? Aug 02, 2025 pm 01:55 PM

Java 's Garbage Collection (GC)? ???? ???? ???? ??????, ?? ? ??? ??? ? ??? ??? ??? ??? ????. 1.GC? ?? ?? (? : ?? ??, ?? ???, ?? ?? ?)?? ??? ???? ????, ?? ? ??? ??? ???? ?????. 2. ?? ???? ????? ????, ?? ?? ??? ??? ???? ?? ??? ??????. 3. ?? ?? ?? ?? : ??? ?? (Eden, S0, S1)? ?? ????? ?????. ??? ??? ?? ? MajorGC? ???? ? ??? ? ????. Metaspace? ??? ?? ???? ?????. 4. JVM? ??? GC ??? ?????. SerialGC? ??? ?? ????? ?????. ParallelGC? ???? ??????. CMS? ?? ???

??? ???? html` ?? '??? ????? ??? ???? html` ?? '??? ????? Aug 03, 2025 am 11:07 AM

??? htmlinput ??? ???? ??? ???? ????? ??? ??? ?? ??? ???? ???? ? ????. 1. ???, ???, ??, ?? ? ??? ?? ??? ??? ?? ?? ?? ??? ???? ???? ??? ? ???? ??? ? ????. 2. HTML5? ?????? ??? ? ?? ?? ??? ?? ? ??? URL, ??, ?? ? ??? ?? ??? ??? ??????. 3. ?? ?? ? ? ??? ??? ???? ?? ??? ???? ???? ?? ???? ?? ???? ???? ?? ? ? ??? ?? ???????.

Java ?? ?? ?? : Maven vs. Gradle Java ?? ?? ?? : Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

GradleisBetTerChoiceFormostNewProjectSduetoitssuperiorflexible, Performance, and ModernToolingsupport.1.Gradle'Sgroovy/kotlindslismoreConcisENDEXPRESSIVETHANMAVEN'SVOSEXML.2.GradleOutsMaveninbuildweedweedweedweedweedweedweedweedweedweedweedweedweedweede

??? ????. ?? ??? ?? ??? ????. ?? ??? ?? Aug 02, 2025 am 06:26 AM

DEFER? ??? ???? ?? ??? ??? ???? ? ?????. ?? ??? ?? ? ? ?? ????, ??? ??? ? ?? ?? (LIFO)? ??? ?????. 1. ?? ??? ??? ? ??? ?????. 2. ?? ??? ?? ??? ??? ????? ?????. 3. ?? ? ?? ?? ??? ? ????. 4. ??? ?????? ??? ??? ???? ?????. 5. ?? ??? ???? ?? ??? ?? ??? ?????. ??? ??? ?? ?? ? ???? ???? ? ????.

See all articles