国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Java基礎(chǔ)知識(shí)整理之static修飾方法

BothEyes1993 / 1966人閱讀

摘要:前面一篇已經(jīng)介紹了部分關(guān)于的用法,主要是介紹的是修飾變量的一些知識(shí)。現(xiàn)在的這篇介紹下修飾方法。方法調(diào)用非方法或者屬性錯(cuò)誤的調(diào)用以下的操作都在下面進(jìn)行的。只能調(diào)用屬性或者方法。所有的定于的結(jié)構(gòu)不受實(shí)例化對(duì)象的控制。

前面一篇已經(jīng)介紹了部分關(guān)于 static 的用法,主要是介紹的是 static 修飾變量的一些知識(shí)。現(xiàn)在的這篇介紹下 static 修飾方法。

static 修飾方法 沒(méi)有實(shí)例化類(lèi)時(shí),調(diào)用 static 方法

Test.java

class Book{
    
    // 設(shè)置一個(gè)默認(rèn)的值
    private static String pub = "清華大學(xué)出版社";
    
    // Book 類(lèi)正常的屬性
    private String title;
    private double price;
    
    // Book 的構(gòu)造類(lèi)
    public Book(String title, double price) {
        this.title = title;
        this.price = price;
    }
    
    public static void setPub(String p){
        // 這里不能使用 this.pub = p, 使用 eclipse 工具的時(shí)候,會(huì)提示  Cannot use this in a static context
        // 因?yàn)?static 聲明的屬性是不受對(duì)象的控制的
        pub = p;
    }
    
    // 獲取 Book 的信息
    public void getInfo(){
        System.out.println("圖書(shū)名稱(chēng):"+ this.title + ",價(jià)格為:"+ this.price + ",出版社為:"+ this.pub );
    }
}

public class Test {

    public static void main(String[] args) {
        
        // 在沒(méi)有實(shí)例化對(duì)象時(shí),調(diào)用static的方法
        Book.setPub("人民日?qǐng)?bào)出版社");
        
        Book book1 = new Book("Android開(kāi)發(fā)實(shí)戰(zhàn)", 69.8);
        Book book2 = new Book("Java EE開(kāi)發(fā)實(shí)戰(zhàn)", 49.8);
        Book book3 = new Book("Java 開(kāi)發(fā)教程", 79.8);
        
        // 在沒(méi)有設(shè)置 pub 屬性的情況下輸出
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
    }
}

控制臺(tái)輸入出

圖書(shū)名稱(chēng):Android開(kāi)發(fā)實(shí)戰(zhàn),價(jià)格為:69.8,出版社為:人民日?qǐng)?bào)出版社
圖書(shū)名稱(chēng):Java EE開(kāi)發(fā)實(shí)戰(zhàn),價(jià)格為:49.8,出版社為:人民日?qǐng)?bào)出版社
圖書(shū)名稱(chēng):Java 開(kāi)發(fā)教程,價(jià)格為:79.8,出版社為:人民日?qǐng)?bào)出版社

我們可以看出來(lái),用 static 聲明的方法和 static 聲明的屬性都不受對(duì)象的控制,即可以不用實(shí)例化對(duì)象就可以調(diào)用。

static 方法調(diào)用非 static方法或者屬性(錯(cuò)誤的調(diào)用)

以下的操作都在 eclipse 下面進(jìn)行的。報(bào)錯(cuò)的提示在代碼的注釋上面。

class Book{
    
    // 設(shè)置一個(gè)默認(rèn)的值
    private static String pub = "清華大學(xué)出版社";
    
    // Book 類(lèi)正常的屬性
    private String title;
    private double price;
    
    // Book 的構(gòu)造類(lèi)
    public Book(String title, double price) {
        this.title = title;
        this.price = price;
    }
    
    public static void setPub(String p){
        // 這里不能使用 this.pub = p, 使用 eclipse 工具的時(shí)候,會(huì)提示  Cannot use this in a static context
        pub = p;
        
        //如果是使用 this.title = "title" 或者 調(diào)用 this.getInfo(),就會(huì)報(bào)錯(cuò): Cannot use this in a static context
        this.title = "title";
        
        // 如果是 title = "title"
        // 就會(huì)報(bào)錯(cuò):Cannot make a static reference to the non-static field title,并且提示 將 title 修為 static
        title = "title";
        
        // 如果是直接調(diào)用 getInfo()
        // 就會(huì)報(bào)錯(cuò) Cannot make a static reference to the non-static method getInfo() from the type Book, 并且提示 將 getInfo() 修為 static 方法
        getInfo();
    }
    
    // 獲取 Book 的信息
    public void getInfo(){
        System.out.println("圖書(shū)名稱(chēng):"+ this.title + ",價(jià)格為:"+ this.price + ",出版社為:"+ this.pub );
    }
}
非 static 方法調(diào)用 static 方法或者屬性

在上面的例子我們發(fā)現(xiàn),在static 方法中有特別多的限制,但是在非static中,調(diào)用 static 屬性或者方法呢?

Test.java

class Book{
    
    // 設(shè)置一個(gè)默認(rèn)的值
    private static String pub = "清華大學(xué)出版社";
    
    // Book 類(lèi)正常的屬性
    private String title;
    private double price;
    
    // Book 的構(gòu)造類(lèi)
    public Book(String title, double price) {
        this.title = title;
        this.price = price;
    }
    
    public static void setPub(String p){
        pub = p;
    }
    
    // 獲取 Book 的信息
    public void getInfo(){
        
        // 調(diào)用static 方法
        setPub("北京大學(xué)");
        
        // 在打印輸出的時(shí),調(diào)用 static屬性
        System.out.println("圖書(shū)名稱(chēng):"+ this.title + ",價(jià)格為:"+ this.price + ",出版社為:"+ pub );
    }
}

public class Test {

    public static void main(String[] args) {
        
        Book book1 = new Book("Android開(kāi)發(fā)實(shí)戰(zhàn)", 69.8);
        Book book2 = new Book("Java EE開(kāi)發(fā)實(shí)戰(zhàn)", 49.8);
        Book book3 = new Book("Java 開(kāi)發(fā)教程", 79.8);
        
        // 在沒(méi)有設(shè)置 pub 屬性的情況下輸出
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
    }
}

控制臺(tái)輸出

圖書(shū)名稱(chēng):Android開(kāi)發(fā)實(shí)戰(zhàn),價(jià)格為:69.8,出版社為:北京大學(xué)
圖書(shū)名稱(chēng):Java EE開(kāi)發(fā)實(shí)戰(zhàn),價(jià)格為:49.8,出版社為:北京大學(xué)
圖書(shū)名稱(chēng):Java 開(kāi)發(fā)教程,價(jià)格為:79.8,出版社為:北京大學(xué)
static 方法 與 非 static 方法的區(qū)別

static 方法不能直接方法 非 static 屬性或者方法。只能調(diào)用 static屬性或者方法。

非 static 屬性或者方法可以方法任何的static 方法或者屬性,不受任何限制。

通過(guò)幾個(gè)例子來(lái)說(shuō)明

我們?cè)谝粋€(gè)類(lèi)中調(diào)用 static 方法的時(shí)候,可以直接調(diào)用 static方法。但是對(duì)于,非static 方法,我們必須要實(shí)例化對(duì)象,才能調(diào)用。

public class Test {

    public static void print() {
        System.out.println("測(cè)試static 方法");
    }
    
    public void printStr() {
        System.out.println("測(cè)試非 static 方法");
    }
    
    public static void main(String[] args) {
        print();
        
        // 對(duì)于非static,我們必須要實(shí)例化對(duì)象了才能調(diào)用
        new Test().printStr();
    }
}

我們?cè)陂_(kāi)發(fā)中,經(jīng)常會(huì)使用到工具類(lèi),我們的工具類(lèi)一般都是按照如下定義的,在這個(gè)類(lèi)中機(jī)會(huì)所有的方法都是 static 的,調(diào)用的時(shí)候就通過(guò) Utils.方法名 直接調(diào)用。

class Utils {

    public static int int2Str(String str) {
        return Integer.valueOf(str);
    }

    public static int add(int x, int y) {
        return x+y;
    }
}

public class Test {

    public static void main(String[] args) {
        System.out.println( Utils.add(0, 1) );
    }
}
分析

所有 非static 定義的結(jié)構(gòu),必須在類(lèi)已經(jīng)明確的產(chǎn)生了實(shí)例化堆空間,才可以使用。

所有的 static 定于的結(jié)構(gòu)不受實(shí)例化對(duì)象的控制。即:在沒(méi)有實(shí)例化對(duì)象的時(shí)候訪(fǎng)問(wèn)。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/72383.html

相關(guān)文章

  • Java基礎(chǔ)知識(shí)整理static修飾屬性

    摘要:屬性聲明雖然是在類(lèi)的結(jié)構(gòu)中,但是并不受到對(duì)象的控制,是獨(dú)立存在的。所修飾的在靜態(tài)數(shù)據(jù)區(qū)。也就是說(shuō),在沒(méi)有產(chǎn)生實(shí)例化對(duì)象的情況下,依然可以使用對(duì)象。 static 關(guān)鍵字,我們?cè)陂_(kāi)發(fā)用的還是比較多的。在《Java編程思想》有下面一段話(huà) static 方法就是沒(méi)有 this 的方法。在 static 方法內(nèi)部不能調(diào)用非靜態(tài)方法,反過(guò)來(lái)是可以的。而且可以在沒(méi)有創(chuàng)建任何對(duì)象的前提下,僅僅通過(guò)類(lèi)...

    張憲坤 評(píng)論0 收藏0
  • Java基礎(chǔ)知識(shí)整理final關(guān)鍵字

    摘要:通過(guò)修飾以后,可以表示其修飾的類(lèi)方法和變量不可改變。如果不希望子類(lèi)重寫(xiě)父類(lèi)的某個(gè)方法,那就使用關(guān)鍵字。在一些時(shí)候由于父類(lèi)中的某些方法具備某些隱藏的特性,那么并且子類(lèi)必須使用此方法操作的時(shí)候,就加上關(guān)鍵字。 簡(jiǎn)介 在 Java 中我們把 final 稱(chēng)為終結(jié)器,在 Java 中可以使用 final 定義類(lèi)、方法、屬性。通過(guò) final 修飾以后,可以表示其修飾的類(lèi)、方法和變量不可改變。 ...

    eccozhou 評(píng)論0 收藏0
  • Java基礎(chǔ)知識(shí)整理注解

    摘要:注解提供了一種安全的類(lèi)似注釋的機(jī)制,用來(lái)將任何的信息或元數(shù)據(jù)與程序元素類(lèi)方法成員變量等進(jìn)行關(guān)聯(lián)。為程序的元素類(lèi)方法成員變量加上更直觀更明了的說(shuō)明,這些說(shuō)明與程序的業(yè)務(wù)邏輯無(wú)關(guān),并且提供給指定的工具或框架使用。 什么是注解? Annotation 是 Java5 之后開(kāi)始引入的新特性,中文為注解。注解提供了一種安全的類(lèi)似注釋的機(jī)制,用來(lái)將任何的信息或元數(shù)據(jù)(metadata)與程序元素(...

    blastz 評(píng)論0 收藏0
  • 死磕 java同步系列volatile解析

    摘要:前半句是指線(xiàn)程內(nèi)表現(xiàn)為串行的語(yǔ)義,后半句是指指令重排序現(xiàn)象和工作內(nèi)存和主內(nèi)存同步延遲現(xiàn)象。關(guān)于內(nèi)存模型的講解請(qǐng)參考死磕同步系列之。目前國(guó)內(nèi)市面上的關(guān)于內(nèi)存屏障的講解基本不會(huì)超過(guò)這三篇文章,包括相關(guān)書(shū)籍中的介紹。問(wèn)題 (1)volatile是如何保證可見(jiàn)性的? (2)volatile是如何禁止重排序的? (3)volatile的實(shí)現(xiàn)原理? (4)volatile的缺陷? 簡(jiǎn)介 volatile...

    番茄西紅柿 評(píng)論0 收藏0
  • 死磕 java同步系列volatile解析

    摘要:前半句是指線(xiàn)程內(nèi)表現(xiàn)為串行的語(yǔ)義,后半句是指指令重排序現(xiàn)象和工作內(nèi)存和主內(nèi)存同步延遲現(xiàn)象。關(guān)于內(nèi)存模型的講解請(qǐng)參考死磕同步系列之。目前國(guó)內(nèi)市面上的關(guān)于內(nèi)存屏障的講解基本不會(huì)超過(guò)這三篇文章,包括相關(guān)書(shū)籍中的介紹。問(wèn)題 (1)volatile是如何保證可見(jiàn)性的? (2)volatile是如何禁止重排序的? (3)volatile的實(shí)現(xiàn)原理? (4)volatile的缺陷? 簡(jiǎn)介 volatile...

    番茄西紅柿 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<