Heim > Java > javaLernprogramm > Analyse statisch geänderter Attribute in Java (Codebeispiel)

Analyse statisch geänderter Attribute in Java (Codebeispiel)

不言
Freigeben: 2018-11-16 15:51:54
nach vorne
2453 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Analyse statischer modifizierter Attribute in Java (Codebeispiele). Ich hoffe, dass er für Sie hilfreich ist.

statisches Schlüsselwort, wir verwenden es immer noch ziemlich oft in der Entwicklung. Es gibt die folgende Passage in „Java Programming Thoughts“

Eine statische Methode ist eine Methode ohne dies. Nicht-statische Methoden können nicht innerhalb statischer Methoden aufgerufen werden, aber das Gegenteil ist möglich. Und Sie können statische Methoden einfach über die Klasse selbst aufrufen, ohne Objekte zu erstellen. Dies ist eigentlich der Hauptzweck statischer Methoden.

statisch wird häufig verwendet: statische Variablen, statische Mitglieder, statische Funktionen usw. Wir werden es verwenden, wenn wir den Einzelspaltenmodus verwenden. Und statische Datenelemente werden im statischen Speicherbereich gespeichert und nur einmal gespeichert, wodurch Speicher gespart werden kann.

statisch Attribute deklarieren

statisch Mitgliedsvariablen ändern

Wenn wir 定义一个属性为公共的属性 in einer Klasse müssen, ist das so, als würden wir sagen, wir brauchen dieses Attribut allen Klassen gemeinsam und der Wert dieses Attributs ist derselbe.

Test.java

class Book{
    
    // 设置一个默认的值
    static String pub = "清华大学出版社";
    
    // 用来和 static 作为对比
    String description = "描述";
    
    // Book 类正常的属性
    private String title;
    private double price;
    
    // Book 的构造类
    public Book(String title, double price) {
        this.title = title;
        this.price = price;
    }
    
    // 获取 Book 的信息
    public void getInfo(){
        System.out.println("图书名称:"+ this.title + ",价格为:"+ this.price + ",出版社为:"+ this.pub + ",描述 "+ this.description);
    }
}

public class Test {

    public static void main(String[] args) {
        // 实例化三个Book类
        Book book1 = new Book("Android开发实战", 69.8);
        Book book2 = new Book("Java EE开发实战", 49.8);
        Book book3 = new Book("Java 开发教程", 79.8);
        
        // 在没有设置 pub 属性的情况下输出
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
        
        System.out.println("————————————————————无敌分割线————————————————————");
        
        // 我们给 book1 设置一个 pub 属性
        book1.pub = "中信出版社";
        book1.description = "这本书很牛逼,看了你就知道";
        
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
    }
}
Nach dem Login kopieren

Konsolenausgabe

图书名称:Android开发实战,价格为:69.8,出版社为:清华大学出版社,描述 描述
图书名称:Java EE开发实战,价格为:49.8,出版社为:清华大学出版社,描述 描述
图书名称:Java 开发教程,价格为:79.8,出版社为:清华大学出版社,描述 描述
————————————————————无敌分割线————————————————————
图书名称:Android开发实战,价格为:69.8,出版社为:中信出版社,描述 这本书很牛逼,看了你就知道
图书名称:Java EE开发实战,价格为:49.8,出版社为:中信出版社,描述 描述
图书名称:Java 开发教程,价格为:79.8,出版社为:中信出版社,描述 描述
Nach dem Login kopieren

Die von der Konsole ausgegebenen Ergebnisse können Sie sehen:

  • Wenn Sie Attributen Standardwerte zuweisen, im obigen Beispiel (Beschreibung und Pub), sind die Ausgabeergebnisse alle Standardwerte.

  • Wenn wir das durch das Schlüsselwort static in der Klasse deklarierte Attribut ändern, wird dieses Attribut aller anderen Objekte geändert, solange es einmal geändert wird.

Rufen Sie die statisch deklarierten Attribute über die Klasse auf

Aber basierend auf dem obigen Code haben wir festgestellt, dass, wenn es sich um eines der Klassenobjekte handelt, die Attribute aller Objekte wird geändert, also fühlt sich die Unteroperation nicht besonders gut an? Wenn der Attributwert dann in Java mit Static deklariert wird, kann er direkt über die Klasse aufgerufen werden.

public class Test {

    public static void main(String[] args) {
        // 实例化三个Book类
        Book book1 = new Book("Android开发实战", 69.8);
        Book book2 = new Book("Java EE开发实战", 49.8);
        Book book3 = new Book("Java 开发教程", 79.8);
        
        // 在没有设置 pub 属性的情况下输出
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
        
        System.out.println("————————————————————无敌分割线————————————————————");
        
        // 我们使用 Book 类直接调用pub
        Book.pub = "中信出版社";
        
        book1.description = "这本书很牛逼,看了你就知道";
        
        book1.getInfo();
        book2.getInfo();
        book3.getInfo();
    }
}
Nach dem Login kopieren

Wenn keine instanziierte Klasse vorhanden ist, rufen Sie das statische Attribut auf

Test.java

class Book{
    
    // 设置一个默认的值
    static String pub = "清华大学出版社";
    
    // 用来和 static 作为对比
    String description = "描述";
    
    // Book 类正常的属性
    private String title;
    private double price;
    
    // Book 的构造类
    public Book(String title, double price) {
        this.title = title;
        this.price = price;
    }
    
    // 获取 Book 的信息
    public void getInfo(){
        System.out.println("图书名称:"+ this.title + ",价格为:"+ this.price + ",出版社为:"+ this.pub + ",描述 "+ this.description);
    }
}

public class Test {

    public static void main(String[] args) {
        // 在没有实例化对象时,就调用
        System.out.println(Book.pub);
        
        // 没事实例化对象的时候,去给static属性赋值上默认值
        Book.pub = "北京大学出版社";
        System.out.println(Book.pub);
        
        // 新建一个类,输入 pub 属性
        Book book = new Book("Java", 88);
        book.getInfo();
    }
}
Nach dem Login kopieren

Konsolenausgabe

清华大学出版社
北京大学出版社
图书名称:Java,价格为:88.0,出版社为:北京大学出版社,描述 描述
Nach dem Login kopieren

Daraus können wir ersehen, dass das statische Attribut direkt über die Klasse entfernt und das statische Attribut auch geändert werden kann, wenn das Objekt nicht instanziiert wird. Obwohl sich die Deklaration statischer Eigenschaften in der Klassenstruktur befindet, wird sie nicht vom Objekt gesteuert und existiert unabhängig.

Der Unterschied zwischen statischen Attributen und nicht-statischen Attributen

  • Der größte Unterschied zwischen statisch deklarierten Attributen und gewöhnlichen Attributen (nicht-statische Attribute) besteht in den unterschiedlichen gespeicherten Speicherbereichen . Was durch Static geändert wird, befindet sich im statischen Datenbereich. Statt auf dem Heap und Stack.

  • Der größte Unterschied zwischen statischen Eigenschaften und nicht statischen Eigenschaften besteht darin, dass alle nicht statischen Eigenschaften instanziiert werden müssen, bevor auf sie zugegriffen werden kann, statische Eigenschaften jedoch nicht durch das instanziierte Objekt gesteuert werden. . Mit anderen Worten: Statische Objekte können weiterhin verwendet werden, ohne Objekte zu instanziieren.

Das obige ist der detaillierte Inhalt vonAnalyse statisch geänderter Attribute in Java (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage