Java中static修飾屬性的解析(程式碼範例)
這篇文章帶給大家的內容是關於Java中static修飾屬性的解析(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
static 關鍵字,我們在開發用的還是比較多的。在《Java程式設計思想》有下面一段話
static 方法就是沒有 this 的方法。在 static 方法內部不能呼叫非靜態方法,反過來是可以的。而且可以在沒有創建任何物件的前提下,僅僅透過類別本身來呼叫 static 方法。這其實正是 static 方法的主要用途。
static 的用法比較廣泛:靜態變數、靜態成員、靜態函數等。我們在使用單列模式的時候,就會用到它。且 static 資料成員儲存在靜態儲存區,只儲存一次,可以節省記憶體。
static 宣告屬性
static 修飾成員變數
當我們需要在一個類別(class)中定義一個屬性為公共的屬性
,就好比說我們需要這個屬性是所有類別都是共有的,而這個屬性的值是同一個。
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(); } }
控制台輸出
图书名称:Android开发实战,价格为:69.8,出版社为:清华大学出版社,描述 描述 图书名称:Java EE开发实战,价格为:49.8,出版社为:清华大学出版社,描述 描述 图书名称:Java 开发教程,价格为:79.8,出版社为:清华大学出版社,描述 描述 ————————————————————无敌分割线———————————————————— 图书名称:Android开发实战,价格为:69.8,出版社为:中信出版社,描述 这本书很牛逼,看了你就知道 图书名称:Java EE开发实战,价格为:49.8,出版社为:中信出版社,描述 描述 图书名称:Java 开发教程,价格为:79.8,出版社为:中信出版社,描述 描述
從控制台輸出的結果,可以看到:
如果給屬性賦預設值,在上面的例子中是(description 和pub),輸出的結果都是預設的。
當我們修改了類別中 static 關鍵字聲明的屬性,那麼只要修改了一次,那麼其他所有的物件的這個屬性都配修改了。
透過類別呼叫static 宣告的屬性
但是基於上面的程式碼,我們發現如果是其中的一個類別物件就改變了所有的物件的屬性,這樣子操作是不是感覺不是特別好?然後在Java中,如果是使用 static 聲明的屬性值,是可以直接透過類別呼叫的。
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(); } }
沒有實例化類別時,呼叫static 屬性
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(); } }
「控制台輸出
清华大学出版社 北京大学出版社 图书名称:Java,价格为:88.0,出版社为:北京大学出版社,描述 描述
由此,我們看出,在沒有實例化物件的時候,就可以直接透過類別去掉用static屬性,也可以修改static 的屬性。 static 屬性宣告雖然是在類別的結構中,但是並不受物件的控制,是獨立存在的。
static 屬性與非 static 屬性的差異
static 宣告的屬性和普通屬性(非 static 屬性)最大的差異在於已儲存的記憶體區域不同。 static 所修飾的在靜態資料區。而不是在堆疊和棧。
static 屬性與非static 屬性還有一個最大的區別,就是在於所有非static 屬性必須產生實例化之後才可以訪問,但是static 屬性不受實例化物件的控制。也就是說,在沒有產生實例化物件的情況下,依然可以使用 static 物件。
以上是Java中static修飾屬性的解析(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
