(易忘篇)java基礎編程難點3

来源:https://www.cnblogs.com/mango-peel527/archive/2020/06/05/13052510.html
-Advertisement-
Play Games

JVM記憶體結構,封裝性的體現,可變個數形參的方法,java的值傳遞機制,關鍵字:this,JDK中的主要包介紹 ...


本博客隨筆主要記錄本人學習過程中的知識,歡迎大家一同學習,有不對的地方很高興讀者能詳細指出,感激不盡!

JVM記憶體結構

編譯完源程式以後,生成一個或多個位元組碼文件。
我們使用JVM中的類的載入器和解釋器對生成的位元組碼文件進行解釋運行。意味著,需要將位元組碼文件對應的類載入到記憶體中,涉及到記憶體解析。

虛擬機棧:即為平時提到的棧結構。我們將局部變數存儲在棧結構中。
:我們將new出來的結構(比如:數組、對象)載入在對空間中。補充:對象的屬性(非static的)載入在堆空間中。
方法區:類的載入信息、常量池、靜態域。

封裝性的體現

下麵列舉4種體現,還有許多其它體現:

  • 將類的屬性xxx私有化(private),同時,提供公共的(public)方法來獲取(getXxx)和設置(setXxx)此屬性的值。
  • 不對外暴露私有的方法。
  • 單例模式中(將構造器私有化)。
  • 將類設置為預設的,使其不在包外被調用。

可變個數形參的方法

具體使用:

  1. 可變個數形參的格式:數據類型 ... 變數名。
  2. 當調用可變個數形參的方法時,傳入的參數個數可以是:0個,1個,2個,... 。
  3. 可變個數形參的方法與本類中方法名相同,形參不同的方法之間構成重載。
  4. 可變個數形參的方法與本類中方法名相同,形參類型也相同的數組之間不構成重載。換句話說,二者不能共存。
  5. 可變個數形參在方法的形參中,必須聲明在末尾。
  6. 可變個數形參在方法的形參中,最多只能聲明一個可變形參。

java的值傳遞機制

  1. 針對於方法內變數的賦值:
    如果變數是基本數據類型,此時賦值的是變數所保存的數據值。
    如果變數是引用數據類型,此時賦值的是變數所保存的數據的地址值。
  2. java中參數傳遞機制:
    值傳遞
    如果參數是基本數據類型,此時實參賦給形參的是實參真實存儲的數據值。
    如果參數是引用數據類型,此時實參賦給形參的是實參存儲數據的地址值。

關鍵字:this

  1. 可以調用的結構有:屬性、方法和構造器。
  2. 關於this調用屬性、方法:
    this理解為:當前對象當前正在創建的對象
    2.1 在類的方法種,我們可以使用“this.屬性”或“this.方法”的方式,調用當前對象屬性或方法。但是,
    ① 通常情況下,我們都選擇省略“this.”,特殊情況下,如果方法的形參和類的屬性同名時,則我們必須顯示出來。
    ② 使用“this.變數”的方式,錶面此變數是屬性,而非形參。
    2.2 在類的構造器中,我們可以使用“this.屬性”或“this.方法”的方式,調用當前正在創建的對象屬性或方法。但是
    ① 通常情況下,我們都選擇省略“this.”,特殊情況下,如果構造器的形參和類的屬性同名時,則我們必須顯示出來。
    ② 使用“this.變數”的方式,錶面此變數是屬性,而非形參。
  3. this調用構造器:
    ① 我們在類的構造器中,可以顯式的使用"this(形參列表)"方式,調用本類中指定的其他構造器。
    ② 構造器中不能通過"this(形參列表)"方式調用自己。
    ③ 如果一個類中有n個構造器,則最多有 n - 1構造器中使用了"this(形參列表)"。
    ④ 規定:"this(形參列表)"必須聲明在當前構造器的首行。
    ⑤ 構造器內部,最多只能聲明一個"this(形參列表)",用來調用其他的構造器。

JDK中的主要包介紹

import的使用

import:導入

  1. 在源文件中顯式的使用import結構導入指定包下的類、介面。
  2. 聲明在包的聲明和類的聲明之間。
  3. 如果需要導入多個結構,則併列寫出即可。
  4. 可以使用"xxx.*"的方式,表示可以導入xxx包下的所結構。
  5. 如果使用的類或介面是java.lang包下定義的,則可以省略import結構。
  6. 如果使用的類或介面是本包下定義的,則可以省略import結構。
  7. 如果在源文件中,使用了不同包下的同名的類,則必須至少一個類需要以全類名的方式顯示。
  8. 使用"xxx.*"方式表明可以調用xxx包下的所結構。但是如果使用的是xxx子包下的結構,則仍需要顯式導入。
  9. import static:導入指定類或介面中的靜態結構:屬性或方法。

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

-Advertisement-
Play Games
更多相關文章
  • 安裝前準備: 安裝之前事先安裝好elasticsearch和kibana。 下載安裝包: apm-server-7.0.0-linux-x86_64.tar.gz (服務端包)elastic-apm-agent-1.7.0.jar(終端包) 安裝步驟: Apm-server終端安裝 Apm-serv ...
  • (一)asyncio 1、asyncio 用async 修飾詞來聲明非同步函數 2、asyncio.create_task(非同步函數)來創建任務 3、通過await asyncio.gather(任務)來執行任務 4、通過asyncio.run(函數)來觸發運行 5、一個比較好的方式是asyncio. ...
  • @ 最近公司有個需求,提前讓資料庫表結構在excel模板中設計,然後再建對應的資料庫DB。欄位少好說,無腦錄入即可,但是,我遇到個100多個欄位的,實在忍不了,最終入門了VBA編程,自己寫腳本生成了sql語句。減少了需要無用重覆勞動。 VBA基礎 首先學習下vba的基礎。 一.瞭解VBA 1.進入v ...
  • 觀察者模式,是使用很多的一種模式,初次瞭解,只是根據入門demo寫個例子,但是不知道用在哪,怎麼用,很教科書。 個人很喜歡比較實戰的的博客或者資料。 最近又餓補了一把,感覺有點小收穫,記錄下。 基礎部分 一、觀察者模式的基本經典結構 二、入門小demo 經典小demo1: Observer /** ...
  • from pptx import Presentation prs=Presentation('名字.pptx') for slide in prs.slides: # 讀取每一頁幻燈片 for shape in slide.shapes: #獲取每一頁的內容 if shape.has_text_f ...
  • 對於文件,我們並不陌生,文件是數據源(保存數據的地方)的一種,比如大家經常使用的word文檔,txt文件,Excel文件...等等都是文件。文件最主要的作用就是保存數據,它既可以保存一張圖片,也可以保存視頻,聲音...... 文件在程式中是以流的形式來操作的。 流:數據在數據源(文件)和程式(記憶體) ...
  • import pdfplumber pdf=pdfplumber.open(',,,,,,,.pdf') first_page=pdf.pages[0] print(first_page.extract_text()) #列印第一頁內容 #提取其中的表格 first_page.extract_tab ...
  • 右鍵項目,maven選項,"Open setting.xml"或"Create setting.xml",在 mirrors 節點添加下麵代碼。 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://ma ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...