這篇文章帶給大家的內容是關於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中文網其他相關文章!

JVM通過JavaNativeInterface(JNI)和Java標準庫處理操作系統API差異:1.JNI允許Java代碼調用本地代碼,直接與操作系統API交互。 2.Java標準庫提供統一API,內部映射到不同操作系統API,確保代碼跨平台運行。

modularitydoesnotdirectlyaffectJava'splatformindependence.Java'splatformindependenceismaintainedbytheJVM,butmodularityinfluencesapplicationstructureandmanagement,indirectlyimpactingplatformindependence.1)Deploymentanddistributionbecomemoreefficientwi

BytecodeinJavaistheintermediaterepresentationthatenablesplatformindependence.1)Javacodeiscompiledintobytecodestoredin.classfiles.2)TheJVMinterpretsorcompilesthisbytecodeintomachinecodeatruntime,allowingthesamebytecodetorunonanydevicewithaJVM,thusfulf

javaachievesplatformIndependencEthroughThoJavavIrtualMachine(JVM),wodecutesbytecodeonyanydenanydevicewithajvm.1)javacodeiscompiledintobytecode.2)

JavaGUI開發中的平台獨立性面臨挑戰,但可以通過使用Swing、JavaFX,統一外觀,性能優化,第三方庫和跨平台測試來應對。 JavaGUI開發依賴於AWT和Swing,Swing旨在提供跨平台一致性,但實際效果因操作系統不同而異。解決方案包括:1)使用Swing和JavaFX作為GUI工具包;2)通過UIManager.setLookAndFeel()統一外觀;3)優化性能以適應不同平台;4)使用如ApachePivot或SWT的第三方庫;5)進行跨平台測試以確保一致性。

JavadevelovermentIrelyPlatForm-DeTueTososeVeralFactors.1)JVMVariationsAffectPerformanceNandBehaviorAcroSsdifferentos.2)Nativelibrariesviajnijniiniininiinniinindrododerplatefform.3)

Java代碼在不同平台上運行時會有性能差異。 1)JVM的實現和優化策略不同,如OracleJDK和OpenJDK。 2)操作系統的特性,如內存管理和線程調度,也會影響性能。 3)可以通過選擇合適的JVM、調整JVM參數和代碼優化來提升性能。

Java'splatFormentenceHaslimitations不包括PerformanceOverhead,versionCompatibilityIsissues,挑戰WithnativelibraryIntegration,Platform-SpecificFeatures,andjvminstallation/jvminstallation/jvmintenance/jeartenance.therefactorscomplicatorscomplicatethe“ writeOnce”


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

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

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

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),