【Java學習筆記】類與對象

類與對象


什么是類?

知識遷移:類比 C 語言中的結構體

類的描述

類是一個對象的抽象,從字面意思就表示一個類的事物,類具有屬性方法(行為)對象是類的一個具體表現

總結:對象抽象對象映射

實例理解:創建一個貓類

對象的引出

由這個類可以映射出不同的貓(對象),當屬性方法變化時只需要在類中進行修改就可以映射到不同的類上,這也體現了類的便捷性

小結:類與對象的關系


快速入門

第一種方式:直接創建一個對象

public class hello{public static void main(String[] args){person person1 = new person();  //直接創建}
}
class person{int age;String name;double height;String[] job; //屬性既可以基本數據類型,也可以是引用類型
}

第二種方式:先聲明一個對象,之后創建

public class hello{public static void main(String[] args){//先聲明一個對象,然后創建person person1;person1 = new person();}
}
class person{int age;String name;double height;String[] job; //屬性既可以基本數據類型,也可以是引用類型
}

代碼解析

person person1 = new person();

在 main 方法中使用 new 創建一個類,用一個數據類型為 person 這個類的一個對象接收

重點:對象在內存中的存在形式

請添加圖片描述

分析

  • (1)當還沒有創建 cat 這個類并用一個數據類型為 cat 這個類的一個對象接收時,cat 在棧空間中指向空

  • (2)類創建后

    • 1. 在堆空間中分配一段空間,存儲類中的成員變量初始值為對應數據類型的默認值,最后把地址返回給 cat,使得cat 指向這個堆空間

    • 2. 在方法區加載類的屬性和方法,只會加載一次

    • 3.String 是一個類,當成員變量中有 String 出現時,會把 String 放到方法區中的一個常量池里面,把這個地址返回給堆空間中的 String


類的要素一:屬性

概念:成員變量 = 屬性 =field(字段)

即成員變量是用來表示屬性的

1. 簡要提及訪問修飾符

2. 使用細節

屬性的訪問方法:使用類.屬性的方式,可以用一個變量接收結果

注意點:如果屬性是String類型,即是一個類(引用類型),需要和類一樣,需要創建一個對象接收

代碼示例

public clas objectexercise{public static void main(String[] args){person person1 = new person();int age = person1.age = 18;double height = person1.height = 1.63;String name = person1.name = "jackson";person1.job = new String[] {"student","programmer"};String[] job = person1.jobSystem.out.println("age: " + age);System.out.println("height: " + height);System.out.println("name: " + name);System.out.print("job: ");for(int i = 0; i < person1.job.length; i++){System.out.print("第" + (i+1) + "份工作是:" + person1.job[i] + " ");}}
}
class person{int age;String name;double height;String[] job; //屬性既可以基本數據類型,也可以是引用類型
}//輸出結果
age: 18
height: 1.63
name: jackson
job:1份工作是:student 第2份工作是:programmer

深刻理解對象的內存分配機制

過程再回顧

person p = new person()
p.name = "jack"
p.age = 10;

練習一

Person p1 = new Person();
p1.age  = 10;
p1.name = "小明";Person p2 = p1;

P2的屬性是否和P1一致?

首先明確一點,類是引用類型,在傳值的過程中傳的地址,代碼中把P1的地址賦給了P2,即P1P2指向同一塊堆空間,結果一致

練習二

// Person.java
public class Person {public int age;public String name;
}// Main.java
public class Main {public static void main(String[] args) {Person a = new Person();a.age = 10;a.name = "小明";Person b;b = a;System.out.println(b.name);  // 小明b.age = 200;b = null;System.out.println(a.age);  // 200System.out.println(b.age);  // 會拋出 NullPointerException}
}

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

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

相關文章

如何對極狐GitLab 議題進行過濾和排序?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 排序和議題列表排序 (BASIC ALL) 您可以通過多種方式對議題列表進行排序&#xff0c;可用的排序選項可以根據列表的上下文進…

k8s中資源的介紹及標準資源namespaces實踐

文章目錄 第1章 k8s中的資源(resources)介紹1.1 k8s中資源(resouces)的分類1.2 k8s中資源(resources)的級別1.3 k8s中資源(resources)的API規范1.4 k8s中資源(resources)的manifests 第2章 k8s中的標準資源之namespaces的實踐2.1 基本介紹2.2 編寫相關ns資源對象的manifests2.3…

優化uniappx頁面性能,處理頁面滑動卡頓問題

問題&#xff1a;在頁面遇到滑動特別卡的情況就是在頁面使用了動態樣式或者動態類&#xff0c;做切換的時候頁面重新渲染導致頁面滑動卡頓 解決&#xff1a;把動態樣式和動態類做的樣式切換改為通過獲取元素修改樣式屬性值 循環修改樣式示例 bannerList.forEach((_, index)…

DeepSeek賦能Nuclei:打造網絡安全檢測的“超級助手”

引言 各位少俠&#xff0c;周末快樂&#xff0c;幸會幸會&#xff01; 今天嘮一個超酷的技術組合——用AI大模型給Nuclei開掛&#xff0c;提升漏洞檢測能力&#xff01; 想象一下&#xff0c;當出現新漏洞時&#xff0c;少俠們經常需要根據Nuclei模板&#xff0c;手動扒漏洞文章…

leetcode - 字符串

字符串 466. 統計重復個數 題目 定義 str [s, n] 表示 str 由 n 個字符串 s 連接構成。 例如&#xff0c;str ["abc", 3] "abcabcabc" 。 如果可以從 s2( )中刪除某些字符使其變為 s1&#xff0c;則稱字符串 s1( )可以從字符串 s2 獲得。 例如&#xf…

Java求職者面試:從Spring Boot到微服務的技術深度探索

場景&#xff1a;互聯網大廠Java求職者面試 角色介紹&#xff1a; 面試官&#xff1a;技術精湛&#xff0c;負責把控面試質量。謝飛機&#xff1a;搞笑的程序員&#xff0c;偶爾能答對問題。 第一輪&#xff1a;基礎知識 面試官&#xff1a;謝飛機&#xff0c;你能簡要介紹…

榕壹云國際版短劇系統:基于Spring Boot+MySQL+UniApp的全球短劇創作平臺

一、項目背景與簡介 在短視頻行業高速發展的今天&#xff0c;短劇內容已成為全球用戶娛樂消費的新寵。為滿足市場對高質量、多樣化短劇的需求&#xff0c;我們基于Spring Boot MySQL UniApp技術棧開發了榕壹云國際版短劇系統&#xff0c;這是一款面向全球市場的短劇創作與分…

資料分享!瑞芯微RK3506(3核ARM+Cortex-A7 + ARM Cortex-M0)工業評估板硬件資料

前 言 本文主要介紹TL3506-EVM評估板硬件接口資源以及設計注意事項等內容。 RK3506J/RK3506B處理器的IO電平標準一般為1.8V、3.3V,上拉電源一般不超過3.3V或1.8V,當外接信號電平與IO電平不匹配時,中間需增加電平轉換芯片或信號隔離芯片。按鍵或接口需考慮ESD設計,ESD器…

C#通過NTP服務器獲取NTP時間

C#通過NTP服務器獲取NTP時間 注意事項&#xff1a; 如果NTP服務器地址是域名&#xff0c;如阿里云的NTP服務器地址。需要DNS解析。NTP使用UDP通訊&#xff0c;默認端口是123NTP經過很多年的發展&#xff0c;有4個版本號&#xff0c;目前常用的3和4。NTP區分客戶端和服務端&am…

使用cmd來創建數據庫和數據庫表-簡潔步驟

創建數據庫和表&#xff1a; 1. 按WinR打開“運行”&#xff0c;輸入cmd&#xff0c;回車 2. 登錄數據庫&#xff1a;mysql -u root -p 然后輸入密碼 3. 創建數據庫create database myblog; myblog為數據庫名(自定義你的數據庫名) &#xff01;注意分號不要漏了&#xff01; …

java工具類

LocalDateTime LocalDateTime可以獲取當前時間&#xff1a; LocalDateTime now LocalDateTime.now(); 同時他也可以獲取指定時間&#xff1a; LocalDateTime dateTime LocalDateTime.of(2023, 5, 15, 10, 30) 若我們時間值超出了我們的實際情況值&#xff0c;我們將會出現…

02_java的運行機制以及JDKJREJVM基本介紹

1、運行機制 2、JDK&JRE&JVM JDK 基本介紹 &#xff08;1&#xff09; JDK 的全稱(Java Development Kit Java開發工具包) JDK JRE java的開發工具 [ java, javac, javadoc, javap等 ] &#xff08;2&#xff09;JDK是提供給Java開發人員使用的&#xff0c;其…

【文心快碼】確實有點東西!

這里寫自定義目錄標題 背景 Electron 開發 Markdown 編輯器全記錄提問1&#xff1a;提問2&#xff1a;提問3&#xff1a;提問4&#xff1a;完整項目結構總結 背景 前兩天百度在2025 百度AI開發者大會"如何駕馭Coding Agent分會場"上發布了文心快碼&#xff0c;注冊試…

AI心理健康服務平臺項目面試實戰

AI心理健康服務平臺項目面試實戰 第一輪提問&#xff1a; 面試官&#xff1a; 請簡要介紹一下AI心理健康服務平臺的核心技術架構。在AI領域&#xff0c;心理健康服務的機遇主要體現在哪些方面&#xff1f;如何利用NLP技術提升用戶與AI的心理健康對話體驗&#xff1f; 馬架構…

Win10安裝 P104-100 驅動

安裝完之后總結一下, 之前做了不少功課, 在網上搜了很多教程, 視頻的文字的, 但是很多已經比較陳舊了. 最后發現的這個 GitHub 項目 NVIDIA-patcher 是最有用的, 因為這是現在這些魔改驅動的來源. NVIDIA-patcher 倉庫地址: https://github.com/dartraiden/NVIDIA-patcher 安…

把一個 PyTorch 的圖像張量轉換成 NumPy 格式,并按照正確的維度順序顯示出來

示例代碼&#xff1a; plt.imshow(np.transpose(tensor_denorm.numpy(), (1, 2, 0)))它的作用是&#xff1a;把一個 PyTorch 的圖像張量轉換成 NumPy 格式&#xff0c;并按照正確的維度順序顯示出來。 &#x1f680; 一步步解釋&#xff1a; ? tensor_denorm 這是一個形狀為…

【速寫】conda安裝(linux)

序言 昨天葉凱浩空降&#xff08;全馬241&#xff09;&#xff0c;降維打擊&#xff0c;10分24秒斷層奪冠。 夏瀟陽10分53秒絕殺小崔10分54秒第2&#xff0c;小崔第3&#xff0c;均配都在3’30"以內&#xff0c;即便我是去年巔峰期也很難跑出這種水平。我就知道他去年大…

算法題(135):唯一的雪花

審題&#xff1a; 本題需要我們對于每一組數據都找出最大的包裹大小 思路&#xff1a; 本題解析題目意思后我們可以把雪花的編號當成數組中元素的值&#xff0c;把包裹看成一個區間。 本質上就是讓我們找出一組數據中&#xff0c;所有子段中最長的子段。 方法一&#xff1a;暴力…

算法習題-力扣446周賽題解

算法可以調度思維&#xff0c;讓程序員的思維發散&#xff0c;找到更好的解決方案。 第一題&#xff1a;執行指令后的得分 題目&#xff1a; 給你兩個數組&#xff1a;instructions 和 values&#xff0c;數組的長度均為 n。你需要根據以下規則模擬一個過程&#xff1a; 從下標…

Ubuntu下MySQL的安裝

Ubuntu下MySQL的安裝 1. 查看當前操作系統版本2. 添加MySQL APT源2.1 訪問下載頁面&#xff0c;并下載發布包2.2 執行安裝指令2.3 安裝MySQL 3. 查看MySQL狀態4. 設置開機自啟動 1. 查看當前操作系統版本 通過命令lsb_release -a查看&#xff1a; 2. 添加MySQL APT源 2.1 訪問下…