小編給大家分享一下Java中static修飾屬性的案例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
站在用戶的角度思考問題,與客戶深入溝通,找到成縣網(wǎng)站設(shè)計與成縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋成縣地區(qū)。static 關(guān)鍵字,我們在開發(fā)用的還是比較多的。在《Java編程思想》有下面一段話
static 方法就是沒有 this 的方法。在 static 方法內(nèi)部不能調(diào)用非靜態(tài)方法,反過來是可以的。而且可以在沒有創(chuàng)建任何對象的前提下,僅僅通過類本身來調(diào)用 static 方法。這實際上正是 static 方法的主要用途。
static 的用法比較廣泛:靜態(tài)變量、靜態(tài)成員、靜態(tài)函數(shù)等。我們在使用單列模式的時候,就會用到它。并且 static 數(shù)據(jù)成員存儲在靜態(tài)存儲區(qū),只存儲一次,可以節(jié)省內(nèi)存。
static 聲明屬性
static 修飾成員變量
當我們需要在一個類(class)中定義一個屬性為公共的屬性
,就好比說我們需要這個屬性是所有類都是共有的,并且這個屬性的值是同一個。
Test.java
class Book{ // 設(shè)置一個默認的值 static String pub = "清華大學出版社"; // 用來和 static 作為對比 String description = "描述"; // Book 類正常的屬性 private String title; private double price; // Book 的構(gòu)造類 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開發(fā)實戰(zhàn)", 69.8); Book book2 = new Book("Java EE開發(fā)實戰(zhàn)", 49.8); Book book3 = new Book("Java 開發(fā)教程", 79.8); // 在沒有設(shè)置 pub 屬性的情況下輸出 book1.getInfo(); book2.getInfo(); book3.getInfo(); System.out.println("————————————————————無敵分割線————————————————————"); // 我們給 book1 設(shè)置一個 pub 屬性 book1.pub = "中信出版社"; book1.description = "這本書很牛逼,看了你就知道"; book1.getInfo(); book2.getInfo(); book3.getInfo(); } }
控制臺輸出
圖書名稱:Android開發(fā)實戰(zhàn),價格為:69.8,出版社為:清華大學出版社,描述 描述 圖書名稱:Java EE開發(fā)實戰(zhàn),價格為:49.8,出版社為:清華大學出版社,描述 描述 圖書名稱:Java 開發(fā)教程,價格為:79.8,出版社為:清華大學出版社,描述 描述 ————————————————————無敵分割線———————————————————— 圖書名稱:Android開發(fā)實戰(zhàn),價格為:69.8,出版社為:中信出版社,描述 這本書很牛逼,看了你就知道 圖書名稱:Java EE開發(fā)實戰(zhàn),價格為:49.8,出版社為:中信出版社,描述 描述 圖書名稱:Java 開發(fā)教程,價格為:79.8,出版社為:中信出版社,描述 描述
從控制臺輸出的結(jié)果,可以看到:
如果給 屬性 賦默認值,在上面的例子中是(description 和 pub),輸出的結(jié)果為都是默認的。
當我們修改了類中 static 關(guān)鍵字聲明的屬性,那么只要修改了一次,那么其他所有的對象的這個屬性都配修改了。
但是基于上面的代碼,我們發(fā)現(xiàn)如果是其中的一個類對象就改變了所有的對象的屬性,這樣子操作是不是感覺不是特別好?然后在Java中,如果是使用 static 聲明的屬性值,是可以直接通過類調(diào)用的。
public class Test { public static void main(String[] args) { // 實例化三個Book類 Book book1 = new Book("Android開發(fā)實戰(zhàn)", 69.8); Book book2 = new Book("Java EE開發(fā)實戰(zhàn)", 49.8); Book book3 = new Book("Java 開發(fā)教程", 79.8); // 在沒有設(shè)置 pub 屬性的情況下輸出 book1.getInfo(); book2.getInfo(); book3.getInfo(); System.out.println("————————————————————無敵分割線————————————————————"); // 我們使用 Book 類直接調(diào)用pub Book.pub = "中信出版社"; book1.description = "這本書很牛逼,看了你就知道"; book1.getInfo(); book2.getInfo(); book3.getInfo(); } }沒有實例化類時,調(diào)用 static 屬性
Test.java
class Book{ // 設(shè)置一個默認的值 static String pub = "清華大學出版社"; // 用來和 static 作為對比 String description = "描述"; // Book 類正常的屬性 private String title; private double price; // Book 的構(gòu)造類 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) { // 在沒有實例化對象時,就調(diào)用 System.out.println(Book.pub); // 沒事實例化對象的時候,去給static屬性賦值上默認值 Book.pub = "北京大學出版社"; System.out.println(Book.pub); // 新建一個類,輸入 pub 屬性 Book book = new Book("Java", 88); book.getInfo(); } }
控制臺輸出
清華大學出版社 北京大學出版社 圖書名稱:Java,價格為:88.0,出版社為:北京大學出版社,描述 描述
由此,我們看出,在沒有實例化對象的時候,就可以直接通過類去掉用 static屬性,并且還可以修改 static 的屬性。static 屬性聲明雖然是在類的結(jié)構(gòu)中,但是并不受到對象的控制,是獨立存在的。
static 屬性與非 static 屬性的區(qū)別static 聲明的屬性和普通屬性(非 static 屬性)大的區(qū)別在于保存的內(nèi)存區(qū)域不同。static 所修飾的在靜態(tài)數(shù)據(jù)區(qū)。而不是在堆和棧。
static 屬性與非 static 屬性還有一個大的區(qū)別,就是在于所有非 static 屬性必須產(chǎn)生實例化之后才可以訪問,但是static 屬性不受實例化對象的控制。也就是說,在沒有產(chǎn)生實例化對象的情況下,依然可以使用 static 對象。
以上是Java中static修飾屬性的案例的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!