java基礎學習(十四)

文章目錄

  • 4-1 面向過程與面向對象
  • 4-2 Java語言的基本元素:類和對象
    • 面向對象的思想概述
  • 4-3 對象的創建和使用
    • 內存解析
    • 匿名對象

4-1 面向過程與面向對象

  • 面向過程(POP) 與 面向對象(OOP)
    1. 二者都是一種思想,面向對象是相對于面向過程而言的。面向過程,強調的 是功能行為,以函數為最小單位,考慮怎么做。面向對象,將功能封裝進對象,強調具備了功能的對象,以類/對象為最小單位,考慮誰來做。
    2. 面向對象更加強調運用人類在日常的思維邏輯中采用的思想方法與原則,如抽象、分類、繼承、聚合、多態等。
  • java類及類的成員:屬性,方法,構造器;代碼塊,內部類
    - 面相對象的三大特征:封裝性,繼承性,多態性(抽象性)
  • 其他關鍵字:this ,super ,static ,final ,abstract ,interface ,package ,import

4-2 Java語言的基本元素:類和對象

面向對象的思想概述

  • 類(Class)和對象(Object)是面向對象的核心概念。

    1.類是對一類事物的描述,是抽象的、概念上的定義
    2.對象是實際存在的該類事物的每個個體,因而也稱為實例(instance)

  • 面向對象程序設計的重點是類的設計,類設計,就是設計類的成員.

  • 類的語法格式

public class Person{private int age ; public void showAge(int i) { age = i;}
}
  • 創建Java自定義類
    步驟:
    1. 定義類(考慮修飾符、類名)
    2. 編寫類的屬性(考慮修飾符、屬性類型、屬性名、初始化值)
    3. 編寫類的方法(考慮修飾符、返回值類型、方法名、形參等)

4-3 對象的創建和使用

  • 創建對象語法: 類名 對象名 = new 類名();
  • 使用“對象名.對象成員”的方式訪問對象成員(包括屬性和方法)
    例題
public class PersonTest {public static void main(String[] args) {//創建Person類的對象Person p1=new Person();//調用對象的結構,屬性,方法//調用屬性:"對象.屬性"p1.name="Tom";p1.isMale=true;System.out.println(p1.name);//調用方法:"對象.方法"p1.eat();p1.sleep();p1.talk("chinese");//****************Person p2=new Person();System.out.println(p2.name);//nullSystem.out.println(p2.isMale);//false//***************//將p1變量保存的對象地址值賦給了p3,導致p1盒p3指向了對空間中的同一個對象實體Person p3=p1;System.out.println(p3.name);//Tomp3.age=10;System.out.println(p1.age);//10}
}class Person{//屬性String name;int age=1;boolean isMale;//方法public void eat(){System.out.println("人可以吃飯");}public void sleep(){System.out.println("人可以睡覺");}public void talk(String language){System.out.println("人可以說話,使用的是:"+language);}
}
  • 類的訪問機制:
    1. 在一個類中的訪問機制:類中的方法可以直接訪問類中的成員變量。 (例外:static方法訪問非static,編譯不通過。)
    2. 在不同類中的訪問機制:先創建要訪問類的對象,再用對象訪問類中定義的成員。

內存解析

  • 堆(Heap),此內存區域的唯一目的 就是存放對象實例,幾乎所有的對象 實例都在這里分配內存。這一點在Java虛擬機規范中的描述是:所有的 對象實例以及數組都要在堆上分配。
  • 通常所說的棧(Stack),是指虛擬機棧。虛擬機棧用于存儲局部變量等。局部變量表存放了編譯期可知長度的各種基本數據類型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、對象引用(reference類型,它不等同于對象本身,是對象在堆內存的首地址)。 方法執行完,自動釋
    放。
  • 方法區(Method Area),用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據

匿名對象

  • 我們也可以不定義對象的句柄,而直接調用這個對象的方法。這樣的對象叫做匿名對象。
    如:newPerson().shout();
  • 使用情況
  1. 如果對一個對象只需要進行一次方法調用,那么就可以使用匿名對象
  2. 我們經常將匿名對象作為實參傳遞給一個方法調用。

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

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

相關文章

TCP 三次握手,第三次握手報文丟失會發生什么?

文章目錄 RTO(Retransmission Timeout)注意 客戶端收到服務端的 SYNACK 報文后,會回給服務端一個 ACK 報文,之后處于 ESTABLISHED 狀態 因為第三次握手的 ACK 是對第二次握手中 SYN 的確認報文,如果第三次握手報文丟失了,服務端就…

deepseek告訴您http與https有何區別?

有用戶經常問什么是Http , 什么是Https ? 兩者有什么區別,下面為大家介紹一下兩者的區別 一、什么是HTTP HTTP是一種無狀態的應用層協議,用于在客戶端瀏覽器和服務器之間傳輸網頁信息,默認使用80端口 二、HTTP協議的特點 HTTP協議…

openresty如何禁止海外ip訪問

前幾天,我有一個徒弟問我,如何禁止海外ip訪問他的網站系統?操作系統采用的是centos7.9,發布服務采用的是openresty。通過日志他發現,有很多類似以下數據 {"host":"172.30.7.95","clientip&q…

理解 Redis 事務-20 (MULTI、EXEC、DISCARD)

理解 Redis 事務:MULTI、EXEC、DISCARD Redis 事務允許你將一組命令作為一個單一的原子操作來執行。這意味著事務中的所有命令要么全部執行,要么全部不執行。這對于在需要一起執行多個操作時保持數據完整性至關重要。本課程將涵蓋 Redis 事務的基礎知識…

Milvus分區-分片-段結構詳解與最佳實踐

導讀:在構建大規模向量數據庫應用時,數據組織架構的設計往往決定了系統的性能上限。Milvus作為主流向量數據庫,其獨特的三層架構設計——分區、分片、段,為海量向量數據的高效存儲和檢索提供了堅實基礎。 本文通過圖書館管理系統的…

Kettle 遠程mysql 表導入到 hadoop hive

kettle 遠程mysql 表導入到 hadoop hive (教學用 ) 文章目錄 kettle 遠程mysql 表導入到 hadoop hive創建 對象 執行 SQL 語句 -mysql 導出 CSV格式CSV 文件遠程上傳到 HDFS運行 SSH 命令遠程登錄 run SSH 并執行 hadoop fs -put 建表和加載數據總結 創…

Linux輸出命令——echo解析

摘要 全面解析Linux echo命令核心功能,涵蓋文本輸出、變量解析、格式控制及高級技巧,助力提升Shell腳本開發與終端操作效率。 一、核心功能與定位 作為Shell腳本開發的基礎工具,echo命令承擔著信息輸出與數據傳遞的重要角色。其主要功能包…

Windows系統下 NVM 安裝 Node.js 及版本切換實戰指南

以下是 Windows 11 系統下使用 NVM 安裝 Node.js 并實現版本自由切換的詳細步驟: 一、安裝 NVM(Node Version Manager) 1. 卸載已有 Node.js 如果已安裝 Node.js,請先卸載: 控制面板 ? 程序與功能 ? 找到 Node.js…

【leetcode】977. 有序數組的平方

有序數組的平方 題目代碼1. 使用sorted2. 雙指針 題目 977. 有序數組的平方 給你一個按 非遞減順序 排序的整數數組 nums,返回 每個數字的平方 組成的新數組,要求也按 非遞減順序 排序。 示例 1: 輸入:nums [-4,-1,0,3,10] 輸…

Obsidian 數據可視化深度實踐:用 DataviewJS 與 Charts 插件構建智能日報系統

Obsidian 數據可視化深度實踐:用 DataviewJS 與 Charts 插件構建智能日報系統 一、核心架構解析 本系統基于 Obsidian 的 DataviewJS 和 Charts 插件,實現日報數據的自動采集、可視化分析及智能回溯功能(系統架構原理見)。其技術…

深入解析Spring Boot與Kafka集成:構建高效消息驅動應用

深入解析Spring Boot與Kafka集成:構建高效消息驅動應用 引言 在現代分布式系統中,消息隊列是實現異步通信和解耦的關鍵技術之一。Apache Kafka作為一款高性能、分布式的消息隊列系統,廣泛應用于大數據和實時數據處理場景。本文將詳細介紹如…

Rust 學習筆記:關于生命周期的練習題

Rust 學習筆記:關于生命周期的練習題 Rust 學習筆記:關于生命周期的練習題生命周期旨在防止哪種編程錯誤?以下代碼能否通過編譯?若能,輸出是?如果一個引用的生命周期是 static,這意味著什么&…

word解決不同文檔同樣的字體段落設置下看起來行距不同的問題

問題: 有時候我們照著模板修改文檔格式,明明字體和段落設置一模一樣,但是看起來行距不一樣。 解決辦法: 一般照著模板修改文檔內容,要注意以下幾點,如果以下幾點與模板設置相同時就可解決上述問題 1、紙…

Jenkins實踐(9):配置“構建歷史的顯示名稱,加上包名等信息“

Jenkins實踐(9):配置“構建歷史的顯示名稱,加上包名等信息“ 版本:Jenkins 4.262.2 需求:想要在構建歷史中展示,本次運行的是哪個版本或哪個包 操作步驟: 1、先安裝插件Build Name and Description Setter 2、Set Build Name 3、構建歷史處查看展示 插件特性說明 安裝依賴…

matIo庫及.mat數據格式介紹

一.概述 1..mat數據格式 (1).mat 是 MATLAB 軟件的標準二進制數據存儲格式,用于保存變量、矩陣、數組、結構體等數據類型。其名稱源于 “MATLAB Data” 的縮寫,最初設計為高效存儲和加載 MATLAB 環境中的數據,后來逐…

企業級調度器LVS (面試版)

1. 什么是 LVS?有什么作?? LVS ( Linux Virtual Server )是?個基于 Linux 內核實現的?性能、可擴展和可靠的負載均衡。它將多個服務器組成?個?可?、?性能和?可靠的虛擬服務器集群,通過將客戶端的請求轉發到不同的后端服務器,實現負載均衡和?可?性。 2.什么是 …

用python制作一個簡易的聊天室軟件

文章目錄 效果圖python源碼使用說明效果圖 只需要一百多行的python代碼,就能制作一個簡易的聊天室軟件。效果如下: 操作說明: 1、先運行server.py啟動服務器; 2、每運行一次client.py可以創建一個聊天用戶(需要輸入用戶昵稱); 3、輸入對方的昵稱即可與其聊天,輸入“a…

Android13 開機時間優化

前言 在實際應用場景中,特定領域對 Android 系統的啟動時間有著極為嚴苛的要求,車載領域便是典型代表。想象一下,當車輛已經行駛出數公里之遙,車內的信息娛樂系統(IVI)卻仍未完成啟動,這無疑會…

08SpringBoot高級--自動化配置

目錄 Spring Boot Starter 依賴管理解釋 一、核心概念 二、工作原理 依賴傳遞: 自動配置: 版本管理: 三、核心流程 四、常用 Starter 示例 五、自定義 Starter 步驟 創建配置類: 配置屬性: 注冊自動配置&a…

基于cornerstone3D的dicom影像瀏覽器 第二十四章 顯示方位、坐標系、vr輪廓線

系列文章目錄 文章目錄 系列文章目錄前言一、工具欄修改二、切片窗口顯示方位文字1. 修改mprvr.js,添加函數getOrientationMarkers2. 修改DisplayerArea3D.vue 三、vr窗口顯示坐標系1. 修改mprvr.js 添加OrientationMarkerTool2. view3d.vue中響應工具欄事件3. 修改…