Java應用程序開發(fā)學習之static關鍵字應用
Java的static關鍵字和C/C++語言的關鍵字有所不同:
一旦在Java里使用了static關鍵字,那么這樣的內容不再屬于對象自己,而是屬于類本身的,所以凡是本類的對象,都共享一份。
1、使用Java static關鍵字修飾成員變量
以下是Stundent類。
package app_one;
public class Student {
private int id = 0 ;
private int age = 0;
private String name = null;
static int id_count = 0 ;
public Student(int age , String name)
{
this.age = age ;
this.name = name ;
this.id = ++id_count ;
}
public int getage() {
return age;
}
public void setage(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
以下是主類:
package app_one;
public class hello {
public static void main(String[] args)
{
Student st1 = new Student(14,"小明");
System.out.println("年齡:" + st1.getage() + " 姓名:" + st1.getName() + " 序號:" + Student.id_count);
Student st2 = new Student(15,"小紅");
System.out.println("年齡:" + st2.getage() + " 姓名:" + st2.getName() + " 序號:" + Student.id_count);
Student st3 = new Student(18,"小李");
System.out.println("年齡:" + st3.getage() + " 姓名:" + st3.getName() + " 序號:" + Student.id_count);
}
}
運行結果:

從上面的案例可以看到,id_count是可以自動進行計數(shù)的,每一次實例化Student類的時候,id_count就自動+1,然后賦值給成員變量id,由于定義了static關鍵字的變量不再屬于對象,而是屬于類,所以在訪問的時候,我們可以用類名稱().靜態(tài)變量的形式來進行訪問。
2、使用static修飾成員方法
將上述程序中Student類的id_count修改為私有的靜態(tài)變量,并添加一個靜態(tài)的Get_idcount方法。
private static int id_count = 0 ;
public static int Get_idcount()
{
return id_count ;
}
在主類中獲取id_count不通過類.變量的方式獲取,而是改為類.方法()的方式獲取。
Student.Get_idcount()
強調兩點:
①
- (1)成員方法可以訪問成員變量
- (2)成員方法可以訪問靜態(tài)變量
- (3)靜態(tài)方法可以訪問靜態(tài)變量
- (4)靜態(tài)方法不可以訪問成員變量(非靜態(tài))
原因:因為在內存中是先有的靜態(tài)內容,后有的非靜態(tài)內容
②
- (1)靜態(tài)方法當中不能使用this
原因:因為this代表當前對象,通過誰調用的方法,誰就是當前對象
小結:
一旦使用了static修飾成員方法,那么這就成為了靜態(tài)方法,不屬于對象,而是屬于類本身的。
對于靜態(tài)方法來說,可以通過對象名進行調用,也可以直接通過類名稱來調用。
如果沒有static關鍵字,那么必須首先創(chuàng)建對象,然后通過對象才能使用它
如果有了static關鍵字,那么不需要創(chuàng)建對象,直接就能通過類名稱進行調用。
無論是成員變量,還是成員方法,如果有了static,都推薦使用類名稱進行調用。
靜態(tài)變量:類名稱.靜態(tài)變量
靜態(tài)方法:類名稱.靜態(tài)方法();
對于本類中的靜態(tài)方法,可以省略類名稱。
3、靜態(tài)static的內存圖
參照學習傳智的Java課程給出的圖,清晰易懂。

4、靜態(tài)代碼塊
靜態(tài)代碼塊格式:
public class 類名稱{
static
{
//靜態(tài)代碼塊的內容
}
}
- (1)特點:當?shù)谝淮斡玫奖绢悤r,靜態(tài)代碼塊執(zhí)行唯一的一次,靜態(tài)內容總是優(yōu)先于非靜態(tài),所以靜態(tài)代碼塊比構造方法先執(zhí)行
- (2)典型用途:用來一次性地對靜態(tài)成員變量進行賦值。
針對上面的案例做修改,在Student類中添加一個靜態(tài)代碼塊:
package app_one;
public class Student {
private int id = 0 ;
private int age = 0;
private String name = null;
private static int id_count = 0 ;
static
{
System.out.println("靜態(tài)代碼塊運行!");
}
public Student(int age , String name)
{
System.out.println("構造方法運行!");
this.age = age ;
this.name = name ;
this.id = ++id_count ;
}
public int getage() {
return age;
}
public void setage(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static int Get_idcount()
{
return id_count ;
}
}
然后主程序修改如下:
package app_one;
public class hello {
public static void main(String[] args)
{
Student st1 = new Student(14,"小紅");
System.out.println("姓名: "+st1.getName() + " 年齡: " + st1.getage() + " 序號: "+Student.Get_idcount());
Student st2 = new Student(14,"小李");
System.out.println("姓名: "+st2.getName() + " 年齡: " + st2.getage() + " 序號: "+Student.Get_idcount());
}
}
運行結果:

很明顯得出結論。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
- 在Docker中開發(fā)Java 8 Spring Boot應用程序的方法
- 詳解JavaFX桌面應用開發(fā)-Group(容器組)
- spring+springmvc+mybatis 開發(fā)JAVA單體應用
- 通過Spring Shell 開發(fā) Java 命令行應用
- 深入理解java異常處理機制的原理和開發(fā)應用
- Java的web開發(fā)中SSH框架的協(xié)作處理應用筆記
- 使用Java開發(fā)實現(xiàn)OAuth安全認證的應用
- Java使用新浪微博API開發(fā)微博應用的基本方法
- 詳解Java編程中的反射在Android開發(fā)中的應用
- 安卓應用開發(fā)通過java調用c++ jni的圖文使用方法
- 如何開發(fā)一個簡單的Akka Java應用
相關文章
前端dist包放到后端springboot項目下一起打包圖文教程
這篇文章主要介紹了前端dist包放到后端springboot項目下一起打包的相關資料,具體步驟包括前端打包、將前端文件復制到后端項目的static目錄、后端打包、驗證部署成功等,需要的朋友可以參考下2025-01-01
try catch finally的執(zhí)行順序深入分析
首先執(zhí)行try,如果有異常執(zhí)行catch,無論如何都會執(zhí)行finally,當有return以后,函數(shù)就會把這個數(shù)據(jù)存儲在某個位置,然后告訴主函數(shù),我不執(zhí)行了,接下來你執(zhí)行吧,所以函數(shù)就會推出2013-09-09
mybatisplus實現(xiàn)自動創(chuàng)建/更新時間的項目實踐
Mybatis-Plus提供了自動填充功能,可以通過實現(xiàn)MetaObjectHandler接口來實現(xiàn)自動更新時間的功能,本文就來介紹一下mybatisplus實現(xiàn)自動創(chuàng)建/更新時間的項目實踐,感興趣的可以了解下2024-01-01
Java編程發(fā)展歷史(動力節(jié)點Java學院整理)
Java的歷史可以追溯到1991年4月,Sun公司的James Gosling領導的綠色計劃(Green Project)開始著力發(fā)展一種分布式系統(tǒng)結構,使其能夠在各種消費性電子產(chǎn)品上運行,他們使用了C/C++/Oak語言。由于多種原因,綠色計劃逐漸陷于停滯狀態(tài)2017-03-03
Nacos Namespace/Group/DataID三者關系解讀
本文介紹了Nacos中的命名空間(Namespace)、配置分組(Group)和配置集ID(DataID)的概念,并詳細說明了它們之間的關系和應用場景,同時,還提供了三者在不同環(huán)境下的配置切換方案,包括DataID方案、Group方案和命名空間方案2024-12-12

