Java中的static的使用指南
一、Java中的static使用之靜態(tài)變量
1.Java 中被static修飾的成員稱為靜態(tài)成員或類成員。它屬于整個類所有,而不是某個對象所有,即被類的所有對象所共享、且優(yōu)先于對象存在。靜態(tài)成員可以使用類名直接訪問,也可以使用對象名進行訪問。使用 static 可以修飾變量、方法和代碼塊。
2.public 修飾符表示公開的、公有的,靜態(tài)變量使用static修飾
3.靜態(tài)方法中可以直接調用同類中的靜態(tài)成員,但不能直接調用非靜態(tài)成員。
public class HellWorld{ String name = “Java”;//非靜態(tài)變量 static String hobby = “ programing”;//靜態(tài)變量 public static void print(){ System.out.println(“歡迎您:” + name + ” !”);//不能直接調用非靜態(tài)變量 System.out.println(“歡迎您:” + hobby + ” !”);//可以直接調用靜態(tài)變量 } }
4.如果希望在靜態(tài)方法中調用非靜態(tài)變量,可以通過創(chuàng)建類的對象,然后通過對象來訪問非靜態(tài)變量?!?/p>
public class HellWorld{ String name = “Java”;//非靜態(tài)變量 static String hobby = “program ”;//靜態(tài)變量 //靜態(tài)方法中調用非靜態(tài)變量 public static void print(){ //創(chuàng)建類的對象 HelloWorld hello=new HelloWorld(); //通過對象來實現(xiàn)在靜態(tài)方法中調用非靜態(tài)變量 System.out.println(“歡迎您:”+hello.name+”!”); //靜態(tài)方法中可以直接調用靜態(tài)變量 System.out.prinltn(“歡迎喜歡”+program+”的”+hello.name); } }
5.在普通成員方法中,則可以直接訪問同類的非靜態(tài)變量和靜態(tài)變量
public class HellWorld{ String name = “Java”;//非靜態(tài)變量 static String hobby = “ programing”;//靜態(tài)變量 public void print(){//普通方法 System.out.println(“歡迎您:” + name + ” !”); System.out.prinltn(“歡迎喜歡”+program+”的”+hello.name); } }
6.靜態(tài)方法中不能直接調用非靜態(tài)方法,需要通過對象來訪問非靜態(tài)方法
public class HellWorld{ String name = “Java”;//非靜態(tài)變量 static String hobby = “program ”;//靜態(tài)變量 //非靜態(tài)方法 public void show(){ System.out.println(“我是非靜態(tài)方法,不能被靜態(tài)方法直接調用。。?!?; } //靜態(tài)方法 public static void show2(){ System.out.println(“我是靜態(tài)方法,可以直接被靜態(tài)方法調用”); } //靜態(tài)方法中通過對象來調用非靜態(tài)方法??梢灾苯诱{用靜態(tài)方法 public static void print(){ //創(chuàng)建類的對象 HelloWorld hello=new HelloWorld(); //通過對象來實現(xiàn)在靜態(tài)方法中調用非靜態(tài)方法 hello.show(); //靜態(tài)方法中可以直接調用靜態(tài)方法 show2(); } }
二、Java 中的 static 使用之靜態(tài)初始化塊
1.在類的聲明中,可以包含多個初始化塊,當創(chuàng)建類的實例時,就會依次執(zhí)行這些代碼塊。如果使用 static 修飾初始化塊,就稱為靜態(tài)初始化塊。
2.實例變量和類變量的區(qū)別:
a) 存放位置:類變量隨著類的加載而存放于方法區(qū)中;實例變量隨著對象的建立存在于堆內存中。
b) 生命周期:類變量生命周期最長,隨著類的消失而消失;實例變量生命周期隨著對象的消失而消失。
3.靜態(tài)初始化塊只在類加載時執(zhí)行,且只會執(zhí)行一次,同時靜態(tài)初始化塊只能給靜態(tài)變量賦值,不能初始化普通的成員變量。程序運行時,靜態(tài)初始化快先被執(zhí)行并優(yōu)先于主函數,然后執(zhí)行普通初始化塊,最后才執(zhí)行構造方法。
public class StaticDemo { int num1;//聲明變量1 int num2;//聲明變量2 static int num3;//聲明靜態(tài)變量3 public StaticDemo(){//構造方法 num1 = 88; System.out.println("通過構造方法為變量1賦值"); } {//初始化塊 num2 = 99; System.out.println("通過初始化塊為變量2賦值"); } static{//靜態(tài)初始化這里不能giel普通變量賦值 num3 = 77; System.out.println("通過靜態(tài)初始化塊為靜態(tài)變量3賦值"); } public static void main(String[] args) { StaticDemo hello = new StaticDemo();//創(chuàng)建類的對象hello System.out.println("num1:" + hello.num1); System.out.println("num2:" + hello.num2); System.out.println("num3:" + hello.num3); StaticDemo hello1 = new StaticDemo(); } }
運行結果:
相關文章
Java 實現(xiàn)簡單靜態(tài)資源Web服務器的示例
這篇文章主要介紹了Java 實現(xiàn)簡單靜態(tài)資源Web服務器的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11Java案例使用集合方法實現(xiàn)統(tǒng)計任意字符串中字符出現(xiàn)的次數
這篇文章主要介紹了Java案例使用集合方法實現(xiàn)統(tǒng)計任意字符串中字符出現(xiàn)的次數,下面我們將用兩種方法實現(xiàn),需要的小伙伴可以參考一下文章具體內容2022-04-04springboot集成flyway自動創(chuàng)表的詳細配置
Flayway是一款數據庫版本控制管理工具,支持數據庫版本自動升級,Migrations可以寫成sql腳本,也可以寫在java代碼里;本文通過實例代碼給大家介紹springboot集成flyway自動創(chuàng)表的詳細過程,感興趣的朋友一起看看吧2021-06-06Java Mybatis框架Dao層的實現(xiàn)與映射文件以及核心配置文件詳解分析
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數據庫中的記錄2021-10-10