為什麼static不用建立物件就可以被呼叫?
在未建立物件之前,所有靜態屬性或方法都放在元資料區裡,靜態的可透過類別名稱呼叫。
例如:
public class Cat{ public static String name;//静态的,不创建对象都存在 public String color; //动态的,不创建猫的对象不存在这个属性 }
public class Main{ public static void main(String[] args){ Cat c =new Cat(); c.color = "黑色"; c.name = "喵喵"; Cat c1 = new Cat(); c1.color = "蓝"; System.out.println(c1.name); //正确 这是因为name是静态属性 } }
線上教學影片分享:java教學影片
靜態屬性的特徵: 所有在該類別下的物件共享這一個屬性,不創建物件這個屬性依然存在,所以在修改這個屬性時透過類別修改就行了(Cat.name = “小喵”)
動態的屬性只存在於創建的物件裡,只有創建了物件這個屬性才存在。
靜態屬性和動態屬性的區別:
透過堆疊可以找到對象,那麼它能否呼叫元資料區裡的內容? ——可以
那麼能否透過類別呼叫堆裡的內容? ——不行,因為這個過程有一個確定性和不確定性的問題。
透過類別呼叫元資料區的內容,因為物件是動態的,呼叫靜態的東西,呼叫時可保證靜態的東西一定存在,靜態的東西先於物件的存在而存在;從靜態的呼叫堆裡動態的,這時就不確定動態的這個東西是否一定存在。
所以動態的可以呼叫靜態的,靜態的不能呼叫動態的。
public class Cat{ public static String name;//静态的,不创建对象都存在 public String color; //动态的,不创建猫的对象不存在这个属性 public Cat(){ } public void foo(){ color = "黑";//正确 name = "喵喵";//正确,一定可以调用静态的 } public static void test(){ color = "黑"; //错误,静态方法无法调用动态的属性 name = "小喵";//正确 foo();//动态的不一定存在 Cat c = new Cat(); c.foo(); //这时再能调用 } }
更多相關文章教學請造訪:java入門學習
以上是java中靜態屬性與動態屬性的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!
陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章
刺客信條陰影:貝殼謎語解決方案
3 週前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
2 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
3 週前ByDDD
<🎜>:死鐵路 - 如何完成所有挑戰
4 週前ByDDD
Atomfall指南:項目位置,任務指南和技巧
1 個月前ByDDD

熱工具

Dreamweaver CS6
視覺化網頁開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

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

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

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