一、靜態變數
在之前我們學習了變數可以分為區域變數(方法中定義的)和成員變數(成員變數是在類中定義的),其中成員變數又可以細分為兩種:靜態變數和實體變數,
靜態變數是使用static 修飾的成員變數(屬性)就是靜態變數,靜態變數保存在一塊共享空間(方法區),這個區叫做全域資料區,保存在這個區的資料是共享的,,到目前為止我們見過了哪些記憶體空間啊?堆、堆疊、方法區(保存static修飾的變數或者方法資訊)

DEMO:觀察代碼
package com. bai . demo; public class Student { //為 了我們方便操作資料暫時不定義為私有屬性(嚴格來說是要定義為私有屬性的) String name; int age ; String school; } package com. bai . demo; public class Hello { public static void main(String[] args) { //創建第一個學生物件 Student s1=new Student(); s1. name="李四"; s1. age=19; s1. school="南京大學"; //創建第二個學生物件. Student s2=new Student(); s2. name="張三"; s2. age=20; s2.school1="南京大學"; //創建第三個學生物件 Student s3=new Student( ); s3. name="趙柳" ; s3.age=17; s3. school="南京大學"; System. out. println("第- -個學生資訊:名字---》 "+s1.name+" ,年齡---》"+s1.age+"學 校----》"+s1. school); System. out . println("第二個學生資訊:名字---》"+s2.name+", 年齡---》"+s2.age+"學 校----》"+s2. school); System. out . println("第三個學生資訊:名字---》"+s3. name+",年齡---》"+s2. age+"學 校----》"+s3. school); } }

思考:假如有一千個學生物件,但是所有學生的學校資訊都是一樣的,此時如果要將所有學生的學校資訊進行修改,則要在每個物件中修改,要修改1000次,這樣的就增大了作業量,不方便代碼的維護,此時最好的做法是將學校資訊宣告為靜態變數,之后靜態變數是每個物件共享的,只需要在一個地方進行修改其他物件也會共享到修改的資料,
DEMO:宣告為靜態變數
package com. bai . demo; public class Student { //為了我們方便操作資料暫時不定義為私有屬性(嚴格來說是要定義為私有屬性的) String name ; int age ; static String school; } package com. bai. demo; public class Hello { public static void main(String[] args) { //創建第-一個學生物件 Student s1=new Student(); s1. name="李四"; s1.age=19; s1. school="北京大學"; //創建第二個學生物件 Student s2=new Student(); s2. name="張三"; s2. age=20; //創建第三個學生物件 Student s3=new Student(); s3. name="趙柳" ; s3. age=17 ; System. out. println("第- -一個學生資訊:名字---》"+s1. name+",年齡---》"+s1. age+"學 校----》"+s1. school); System. out . println("第二個學生資訊:名字--》"+s2.name+" ,年齡---》"+s2.age+"學 校----》"+s2. school); System. out. println("第三個學生資訊:名字---》 "+s3.name+", 年齡---》"+s2.age+"學 校----》"+s3.school);

此時只需要修改一個物件的學校資訊就可以影響到其他使用Student類創建學生物件的學校資訊,說明了靜態變數是每個使用該類創建的實體物件共享的變數,
DEMO:觀察代碼

發現了靜態屬性(靜態變數)可以使用“類名.屬性名”的方式參考(所以還被叫做類變數),還可以使用“物件名.屬性名”的方式參考,但是普通的屬性(實體變數)不能使用“類名屬性名”的方式參考,
靜態變數沒有實體化物件(創建物件)也可以訪問,所以我們把靜態變又叫做類變數,非靜態屬性需要實體化物件之后才能訪問,所以他叫做實體變數,
DEMO:記住
package com. bai . demo; public class Student { //為了我們方便操作資料暫時不定義為私有屬性(嚴格來說是要定義為私有屬性的) String name;//實體變數 需 要先創建物件之后才能通過“物件名.屬性名”方式訪問 int age; //實體變數 需要先創建物件之后才能通過“物件名.屬性名”方式訪問 static String school;//靜態變數,屬于類的,使用該類創建的物件共享,可以使用“類名. 屬性名”的方式訪問 }
總結:
1、靜態變數的概念:使用static 修飾的變數就是靜態變數,靜態變數保存在,方法區(全域資料區)
2、靜態變數可以使用“類名.屬性名”和“物件名.屬性名”的方式訪問,所以靜態變數又叫做類變數
3、非靜態變數只能使用“物件名.屬性名”的方式訪問,依賴于物件(實體)存在,所以叫做實體變數,

有完整的Java初級,高級對應的學習路線和資料!專注于java開發,分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分布式及面試資料、開源專案,助力開發者成長!
歡迎關注微信公眾號:碼邦主
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/230598.html
標籤:Java
上一篇:批量快速生成員工檔案夾工具
