JAVA--- 關鍵字static

之前我們學習了JAVA 面向對象的一些基本知識,今天來進階一下!!!

static關鍵字

static表示靜態,是JAVA中的一個修飾符,可以修飾成員方法,成員變量,可用于修飾類的成員(變量、方法、代碼塊)和嵌套類。

靜態變量

靜態變量屬于類,并非類的某個實例。

無論創建多少個類的對象,靜態變量只有一份存儲在內存中。

靜態變量可通過類名直接訪問,也能通過對象實例訪問。

class Student {static int totalStudents; // 靜態變量,記錄學生總數//被所有 Student 對象共享。每創建一個 Student 對象,totalStudents 的值就會加 1。String name;public Student(String name) {this.name = name;totalStudents++; // 每創建一個學生對象,總數加 1}
}public class StaticVariableExample {public static void main(String[] args) {Student s1 = new Student("Alice");  //new關鍵字,堆內存Student s2 = new Student("Bob");System.out.println("Total students: " + Student.totalStudents); // 通過類名訪問靜態變量System.out.println("Total students (via s1): " + s1.totalStudents); // 通過對象實例訪問靜態變量}
}

靜態方法

靜態方法屬于類,而非類的某個實例;

可以通過類名直接調用靜態方法,無需創建類的對象;

靜態方法只能訪問靜態成員(靜態變量和靜態方法),不能訪問實例成員(實例變量和實例方法),因為靜態方法在類加載時就已存在,此時可能還沒有創建對象。

class MathUtils {static int add(int a, int b) { // 靜態方法return a + b;}
}public class StaticMethodExample {public static void main(String[] args) {int result = MathUtils.add(3, 5); // 通過類名調用靜態方法System.out.println("3 + 5 = " + result);}
}

拓展:工具類

工具類是幫我們做一些事情的,但是不描述任何事物的類!

JavaBean類

用來描述一類事物的類

e.g. Student,Teacher,Dog,Cat 等

測試類用來檢查其他類是否書寫正確,帶有main方法的類,使程序的入口
工具類幫我們做一些事情的,但是不描述任何事物的類
?工具類書寫規則:

1.類名見名知意

2.私有化構造方法??? ? ? ? ? ? ? ? ? ??

public class ArrUtil{private ArrUtil(){}
}

3.方法定義為靜態? ? ?

? ?

靜態代碼塊

靜態代碼塊在類加載時執行,且僅執行一次。它通常用于對靜態變量進行初始化操作。

class MyClass {static int value;static {// 靜態代碼塊value = 10;   //對value靜態變量進行初始化System.out.println("Static block executed.");}
}public class StaticBlockExample {public static void main(String[] args) {System.out.println("Value: " + MyClass.value);}
}

靜態嵌套類

靜態嵌套類是定義在另一個類內部的靜態類。它可以直接訪問外部類的靜態成員,但不能直接訪問外部類的實例成員。

class OuterClass {static int outerStaticVar = 10;int outerInstanceVar = 20;static class StaticNestedClass {void display() {System.out.println("Outer static variable: " + outerStaticVar);// 不能訪問 outerInstanceVar,因為它是實例變量// System.out.println("Outer instance variable: " + outerInstanceVar); }}
}public class StaticNestedClassExample {public static void main(String[] args) {OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();nested.display();}
}

StaticNestedClass?是靜態嵌套類,可直接訪問外部類的靜態變量?outerStaticVar

static的注意事項

1.靜態方法只能訪問靜態變量和靜態方法;

2.非靜態方法可以訪問靜態變量或者靜態方法,也可以訪問非靜態成員的成員變量和非靜態的成員方法;

3.靜態方法中是沒有this關鍵字的。

? ? ? ??

重新認識main方法

public class HelloWorld{public static void main(String[] args){System.out.println("HelloWorld");}
}
public被JVM調用,訪問權限足夠大
static

被JVM調用,不用創建對象,直接類名訪問

因為main方法是靜態的,所以測試類中的其他方法也需要是靜態的

void被JVM調用,不需要給JVM返回值
main一個通用的名稱,雖然不是關鍵字,但是被JVM識別

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77795.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77795.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77795.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

4.27比賽總結

文章目錄 T1T2法一:倍增求 LCA法二:Dijkstra 求最短路法三:dfs 求深度 T3T4總結 T1 一道非常簡單的題,結果我因為一句話沒寫掛了 80pts…… 題目中沒寫 a a a 數組要按照 b b b 數組的順序,所以對于最大方案&#x…

數據一致性巡檢總結:基于分桶采樣的設計與實現

數據一致性巡檢總結:基于分桶采樣的設計與實現 背景 在分布式系統中,緩存(如 Redis)與數據庫(如 MySQL)之間的數據一致性問題是一個常見的挑戰。由于緩存的引入,數據在緩存和數據庫之間可能存…

SpringBoot與Druid整合,實現主從數據庫同步

通過引入主從數據庫同步系統,可以顯著提升平臺的性能和穩定性,同時保證數據的一致性和安全性。Druid連接池也提供了強大的監控和安全防護功能,使得整個系統更加健壯和可靠。 我們為什么選擇Druid? 高效的連接管理:Dru…

在Linux系統中安裝MySQL,二進制包版

1、檢查是否已安裝數據庫(rpm軟件包管理器) rpm -qa | grep mysql rpm -qa | grep mariadb #centOS7自帶mariadb與mysql數據庫沖突2、刪除已有數據庫 rpm -e –nodeps 軟件名稱 3、官網下載MySQL包 4、上傳 # 使用FinalShell或Xshell工具上傳&#…

【含文檔+PPT+源碼】基于SpringBoot電腦DIY裝機教程網站的設計與實現

項目介紹 本課程演示的是一款 基于SpringBoot電腦DIY裝機教程網站的設計與實現,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套…

Spring Boot 緩存機制:從原理到實踐

文章目錄 一、引言二、Spring Boot 緩存機制原理2.1 緩存抽象層2.2 緩存注解2.3 緩存管理器 三、入門使用3.1 引入依賴3.2 配置緩存3.3 啟用緩存3.4 使用緩存注解3.5 實體類 四、踩坑記錄4.1 緩存鍵生成問題4.2 緩存過期與更新問題4.3 事務與緩存的一致性問題 五、心得體會5.1 …

Spark讀取Apollo配置

--conf spark.driver.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 --conf spark.executor.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 在spark的提交命令中&…

[逆向工程]如何理解小端序?逆向工程中的字節序陷阱與實戰解析

[逆向工程]如何理解小端序?逆向工程中的字節序陷阱與實戰解析 關鍵詞:逆向工程、小端序、字節序、二進制分析、數據解析 引言:為什么字節序是逆向工程師的必修課? 在逆向工程中,分析二進制數據是最基礎的任務之一。…

項目三 - 任務2:創建筆記本電腦類(一爹多叔)

在本次實戰中,我們通過Java的單根繼承和多接口實現特性,設計了一個筆記本電腦類。首先創建了Computer抽象類,提供計算的抽象方法,模擬電腦的基本功能。接著定義了NetCard和USB兩個接口,分別包含連接網絡和USB設備的抽象…

ElasticSearch深入解析(六):集群核心配置

1.開發模式和生產模式 Elasticsearch默認運行在開發模式下,此模式允許節點在配置存在錯誤時照常啟動,僅將警告信息寫入日志文件。而生產模式則更為嚴格,一旦檢測到配置錯誤,節點將無法啟動,這是一種保障系統穩定性的安…

【Prometheus-MySQL Exporter安裝配置指南,開機自啟】

目錄 1. 創建 MySQL 監控用戶2. 配置 MySQL 認證文件3. 安裝 mysqld_exporter4. 配置 Systemd 服務5. 啟動并驗證服務6. 修改Prometheus配置常見錯誤排查錯誤現象排查步驟 6. 驗證監控數據關鍵注意事項 7. Grafana看板 1. 創建 MySQL 監控用戶 mysql -uroot -p123456 # 登錄M…

redis未授權訪問漏洞學習

一、Redis常見用途 1. Redis介紹 全稱與起源: Redis全稱Remote Dictionary Service(遠程字典服務),最初由antirez在2009年開發,用于解決網站訪問記錄統計的性能問題。發展歷程: 從最初僅支持列表功能的內存數據庫,經過十余年發展已支持多種…

4.27搭建用戶界面

更新 router下面的index.js添加新的children 先區分一下views文件夾下的不同vue文件: Home.vue是繪制home頁面的所有的表格。 Main.vue是架構頭部和左側目錄的框架的。 研究一下這個routes對象,就可以發現重定向redirect的奧妙所在,我們先把…

【MySQL】(8) 聯合查詢

一、聯合查詢的作用 由于范式的規則,數據分到多個表中,想要查詢完整的信息,就需要聯合查詢多張表。比如查詢學生的學生信息和所在班級的信息,就需要聯合查詢學生表和班級表。 二、聯合查詢過程 案例:查詢學生姓名為孫…

圖漾官網Sample_V1版本C++語言完整參考例子---單相機版本

文章目錄 1.參考例子 主要梳理了圖漾官網Sample_V1版本的例子 1.參考例子 主要增加了從storage區域讀取相機參數的設置,使用圖漾PercipioViewer軟件,如何將相機參數保存到srorage區,可參考鏈接:保存相機參數操作 保存參數設置 注…

關于本地端口啟動問題

如何啟動一個本地端口 1. Node.js (使用Express框架) 使用node.js的方法 注意:下列bash命令最好在管理員權限運行的cmd窗口中進行,否則可能會有權限錯誤 首先,確保您已經安裝了Node.js和npm。然后,創建一個新的Node.js項目并安…

產銷協同的作用是什么?又如何對各部門發揮作用?

目錄 一、產銷協同的對象有哪些? 1. 客戶需求 2. 市場趨勢 3. 供應鏈伙伴 4. 企業戰略目標 二、產銷協同的作用是什么? 1. 提高客戶滿意度 2. 降低企業成本 3. 增強市場競爭力 4. 優化資源配置 三、產銷協同對各部門怎么發揮作用?…

React Router v7 從入門到精通指南

一、設計思想與核心原理 1. 設計哲學 組件即路由&#xff1a;路由以 <Route> 組件形式聲明&#xff0c;與 React 組件樹深度集成聲明式導航&#xff1a;通過 <Link> 和 useNavigate 實現無刷新路由跳轉動態匹配機制&#xff1a;路徑參數、通配符、優先級匹配規則…

Python爬蟲實戰:獲取網yi新聞網財經信息并做數據分析,以供選股做參考

一、引言 在財經領域,股市信息對投資者意義重大。網yi新聞作為知名新聞資訊平臺,其股市板塊蘊含豐富的最新股市熱點信息。然而,依靠傳統人工方式從海量網頁數據中獲取并分析這些信息,效率低下且難以全面覆蓋。因此,利用爬蟲技術自動化抓取相關信息,并結合數據分析和機器…

Spring Boot Actuator - 應用監控與管理

一、 Spring Boot Actuator 概述 Spring Boot Actuator是Spring Boot 提供的生產級監控與管理工具集&#xff0c;用于實時監控和運維管理應用。Actuator 通過HTTP 端點&#xff08;或 JMX 端點&#xff09;暴露應用的健康狀態、性能指標、日志信息、環境配置等關鍵數據&#x…