Java核心技術第四章——2.final 和 static

来源:https://www.cnblogs.com/Johnson-lin/archive/2018/04/25/8934393.html
-Advertisement-
Play Games

final實例域 實例域(對象的屬性)可修飾為final。修飾為final後,在構建對象時必須初始化這個實例域。若沒有在實例域進行初始化,那麼必須在每個構造器內初始化這個實例域(否則會編譯錯誤)。 表明在後面的操作中,不能夠再對它進行修改。即沒有對應的域更改器(set)方法. final修飾大部分都 ...


final實例域

  實例域(對象的屬性)可修飾為final。修飾為final後,在構建對象時必須初始化這個實例域。若沒有在實例域進行初始化,那麼必須在每個構造器內初始化這個實例域(否則會編譯錯誤)。

表明在後面的操作中,不能夠再對它進行修改。即沒有對應的域更改器(set)方法.

  final修飾大部分都是應用於基本類型域(基本數據類型)或者不可變類的域(例如:String類),若修飾可變的類,可能會對讀者造成混亂。

 

靜態域與靜態方法 static

靜態域

  static修飾的屬性稱為靜態域,它是屬於類的,所以也稱為類域。每個類中只有一個這樣的靜態域。不管你new 多少次對象,他們都是共用這個靜態域,

所以靜態域是屬於類的,不屬於對象。可以看下圖:

     

   我把nextId設置為靜態域,userId為私有數據域。在調用set方法的時候,nextId都會自增1。下麵為測試方法和結果:

     

  可以看到UserInfo類的nextId 在u1 和 u2中都是共用的。當其中一個對象修改nextId,那麼其他對象的nextId也會跟著修改。

 

靜態常量

   上述所說的是靜態變數,一般比較少用,用的比較多的是靜態常量,就是使用final 和 static修飾的屬性。

例如,Math.PI(圓周率),使用方法為 類名.屬性名  靜態常量一般修飾不可變的實例域。

     

  在上一章封裝性說過最好對實例域設置為私有域(private)。而final修飾的常量則沒有問題,可以修飾為公有域(public)。因為final域是不可變的。

 

靜態方法

  使用靜態方法時,並不需要實例化對象。使用方法為 類名.方法名 例如 UserInfo.getNextId方法

     

  使用getNextId方法時,不使用任何的UserInfo對象,就是說不會使用到它的私有數據域,可以訪問其靜態域。而上述說過靜態域是屬於類的,不屬於任何對象。

 

一般在下麵兩種情況下使用靜態方法:

  1.一個方法不需要訪問對象的狀態,所需的參數都不會使用到私有數據域。

  2.一個方法只需要訪問類的靜態域

 

  木木只是一個小白,若那裡寫的不好或者有更好的建議,請留言 或 發到我的QQ郵箱 [email protected] 。謝謝大家啦~(*^▽^*)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡單的建立一個後臺項目 新建servlet: 內容如下: web.xml 前端代碼: 運行前後臺項目,出現異常情況 在查看ajax的發送情況 從這裡可以看到結果是正確返回的;並且後臺也是正常執行了。 因此得出結論: 跨域是瀏覽器在aja返回結果的時候進行了攔截,先執行,後判斷,不是後臺不允許跨域; ...
  • 到這一步,我的收集系統就已經完成很大一部分工作,我們重新看一下我們之前畫的圖: 我們已經完成前面的部分,剩下是要完成後半部分,將kafka中的數據扔到ElasticSearch,並且最終通過kibana展現出來 ElasticSearch 官網地址這裡介紹了非常詳細的安裝方法:https://www ...
  • 用pip安裝了一個模塊,在pycharm中不能調用,然後發現shell和pycharm中的sys.path不一樣。 納尼?還能不一樣? (我的python裝在C盤,pycharm裝在D盤,pycharm寫的文件在E盤保存。 @暈@) 很明顯左邊的pycharm的sys.path中少了三個重要的路徑。 ...
  • [Java] 設計模式:代碼形狀 lambda表達式的一個應用 Code Shape 模式 這裡介紹一個模式:Code Shape。沒聽過,不要緊,我剛剛纔起的名字。 作用 在應用程式的開發中,我們一般會使用多層架構。 在這種情況下,每一層的方法往往會呈現相同的代碼結構。這裡稱之為 層的代碼形狀 。 ...
  • 搭建Struts2開發環境 1. 下載Struts2開發包 "http://struts.apache.org" 2. 開發包目錄結構 3. 搭建開發環境 3.1 拷貝必要jar包到classpath中 3.2 建立Struts2的配置文件 at the top of classpath(在最頂層的 ...
  • 前言 當我們知道了struts2爆出來的安全問題之後,漸漸的,struts2已經比較少人在使用了,雖然在筆者的介紹中依舊會介紹struts2,但是使用確實會比較少了。那麼今天我們要學習的,就是一個類似於struts2的前端框架,那就是springmvc。 一、springmvc簡介 1.1什麼是sp ...
  • 示例1 輸出 示例2 實現類重寫default方法 輸出 示例3 輸出 示例4 輸出 報錯 示例5 輸出 示例6 輸出 報錯 示例7 輸出 ...
  • 前言: 在開發當中,經常會驗證用戶登錄狀態和獲取用戶信息。如果每次都手動調用用戶信息查詢介面,會非常的繁瑣,而且代碼冗餘。為了提高開發效率,因此就有了今天這篇文章。 思路: 用戶請求我們的方法會攜帶一個Token,通過Filter過濾器將會員信息查出來並放到request請求參數中。接著在Cotro ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...