日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

疯狂Java讲义第五版读书笔记

發(fā)布時(shí)間:2023/12/10 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 疯狂Java讲义第五版读书笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

瘋狂Java講義第五版讀書筆記

文章目錄

  • 瘋狂Java講義第五版讀書筆記
    • 第一章:Java語言概述與開發(fā)環(huán)境
      • 1.1、Java程序運(yùn)行機(jī)制
      • 1.2、Java第一個(gè)程序
      • 1.3、Java命名規(guī)范
        • 1.3.1、包命名
        • 1.3.2、類命名、接口命名、抽象命名
        • 1.3.3、方法命名、變量命名
    • 第二章:面向?qū)ο?/li>
      • 2.1、程序設(shè)計(jì)的三種結(jié)構(gòu)
        • 2.1.1、順序結(jié)構(gòu)
        • 2.1.2、選擇結(jié)構(gòu)
        • 2.1.3、循環(huán)結(jié)構(gòu)
      • 2.2、面向?qū)ο蟮脑O(shè)計(jì)簡介
        • 2.2.1、簡要描述:
        • 2.2.2、 類的簡單定義
        • 2.2.3、面向?qū)ο笈c面向過程
        • 2.2.4、面向?qū)ο笕蠡咎卣?/li>
      • 2.3、面向?qū)ο筇卣?/li>
        • 2.3.1、類與對(duì)象
        • 2.3.2、類的結(jié)構(gòu)關(guān)系
    • 第三章:數(shù)據(jù)類型與運(yùn)算符
      • 3.1、注釋
        • 3.1.1、單行注釋
        • 3.1.2、多行注釋
        • 3.1.3、文件注釋
      • 3.2、關(guān)鍵詞和標(biāo)識(shí)符
        • 3.2.1、分號(hào)
        • 3.2.2、花括號(hào)
        • 3.2.3、方括號(hào)
        • 3.2.4、圓括號(hào)
        • 3.2.5、空格
        • 3.2.6、圓點(diǎn)
        • 3.2.7、關(guān)鍵詞
      • 3.3、數(shù)據(jù)類型
        • 3.3.1、Java語言說明
        • 3.3.2、數(shù)據(jù)類型分類
          • 3.3.2.1、基本數(shù)據(jù)類型
          • 3.3.2.2、引用數(shù)據(jù)類型
      • 3.4、運(yùn)算符
          • 3.4.1、算術(shù)運(yùn)算符
          • 3.4.2、關(guān)系運(yùn)算符
          • 3.4.3、按位運(yùn)算符
          • 3.4.4、邏輯運(yùn)算符
          • 3.4.5、賦值運(yùn)算符
          • 3.4.6、條件運(yùn)算符
    • 第四章:流程控制與數(shù)組
      • 4.1、流程控制
        • 4.1.1、順序結(jié)構(gòu)
        • 4.1.2、分支結(jié)構(gòu)
        • 4.1.3、循環(huán)結(jié)構(gòu)
      • 4.2、數(shù)組
        • 4.2.1、數(shù)組簡要描述
        • 4.2.2、數(shù)組的初始化
        • 4.2.3、foreach循環(huán)
        • 4.2.4、堆內(nèi)存和棧內(nèi)存
        • 4.2.5、操作數(shù)組的工具類——Arrays
          • 4.2.5.1、打印數(shù)組
          • 4.2.5.2、數(shù)組排序
          • 4.2.5.3、在數(shù)組中查找指定元素并返回其下標(biāo)
    • 第五章:面向?qū)ο?/li>
      • 5.1、類的初步理解
        • 5.1.1、類的定義
        • 5.1.2、類常見的基本格式
          • 5.1.2.2、成員變量
          • 5.1.2.1、方法
          • 5.1.2.2、構(gòu)造器
          • 5.1.2.3**補(bǔ)充** 參數(shù)傳遞問題
      • 5.2、類的特征
        • 5.2.1、封裝
          • 5.2.1.1、this關(guān)鍵詞
          • 5.2.1.2、簡要介紹
        • 5.2.2、繼承
          • 5.2.2.1、簡要說明
          • 5.2.2.2、特點(diǎn)
        • 5.2.3、多態(tài)
          • 5.2.3.1、前提
          • 5.2.3.2、示例
      • 5.3、重要類的闡述
        • 5.3.1、抽象類
        • 5.3.2、內(nèi)部類
        • 5.3.3、枚舉類
        • 5.3.4、包裝類
      • 5.4、lambda表達(dá)式
      • 5.5、修飾符的適用范圍介紹
    • 結(jié)語

第一章:Java語言概述與開發(fā)環(huán)境

1.1、Java程序運(yùn)行機(jī)制

Java程序要經(jīng)過先編譯、后解釋兩個(gè)步驟

Java執(zhí)行的兩個(gè)步驟

Java 語言里負(fù)責(zé)解釋執(zhí)行字節(jié)碼文件的是Java 虛擬機(jī)

JVM的作用很容易理解,就像有兩支不同的筆,但需要把同一個(gè)筆帽套在兩支不同的筆上,只有為這兩支筆分別提供一個(gè)轉(zhuǎn)換器,這個(gè)轉(zhuǎn)換器向上的接口相同,用于適應(yīng)同一個(gè)筆帽;向下的接口不同,用于適應(yīng)兩支不同的筆。在這個(gè)類比中,可以近似地理解兩支不同的筆就是不同的操作系統(tǒng),而同一個(gè)筆帽就是Java字節(jié)碼程序,轉(zhuǎn)換器角色則對(duì)應(yīng)JVM。類似地,也可以認(rèn)為JVM分為向上和向下兩個(gè)部分,所有平臺(tái)上的JVM向上提供給Java字節(jié)碼程序的接口完全相同,但向下適應(yīng)不同平臺(tái)的接口則互不相同。

jdk1.5版本以后不用去設(shè)置環(huán)境變量

1.2、Java第一個(gè)程序

public class Study {public static void main(String[] args) {System.out.println("hello world");} }

1.3、Java命名規(guī)范

1.3.1、包命名

常采用頂級(jí)域名作為前綴,例如com,net,org,edu,gov,cn,io等,隨后緊跟公司/組織/個(gè)人名稱以及功能模塊名稱。下面是一些包命名示例:

package org.springframework.boot.autoconfigure.cloud package org.springframework.boot.util package org.hibernate.action package org.hibernate.cfg package com.alibaba.druid package com.alibaba.druid.filter package com.alibaba.nacos.client.config package com.ramostear.blog.web

1.3.2、類命名、接口命名、抽象命名

類(Class)通常采用名詞進(jìn)行命名,且首字母大寫,如果一個(gè)類名包含兩個(gè)以上名詞,建議使用駝峰命名(CamelCase)法書寫類名,每個(gè)名詞首字母也應(yīng)該大寫。

public class UserDTO{ } class EmployeeService{ } class StudentDAO{ } class OrderItemEntity{ } public class UserServiceImpl{ } public class OrderItemController{ } public abstract class AbstractRepository<T>{ }

1.3.3、方法命名、變量命名

public User getOne(){} private String nickName; private String mobileNumber; private Long id; private Long orderItemId;

第二章:面向?qū)ο?/h2>

Java中萬物皆為對(duì)象

2.1、程序設(shè)計(jì)的三種結(jié)構(gòu)

不管是哪種結(jié)構(gòu),只有一個(gè)入口點(diǎn)a和一個(gè)出口點(diǎn)b

2.1.1、順序結(jié)構(gòu)

雖然Java是面向?qū)ο蟮木幊陶Z言,但Java的方法類似于結(jié)構(gòu)化程序設(shè)計(jì)的函數(shù),因此方法中代碼的執(zhí)行也是順序結(jié)構(gòu)。

2.1.2、選擇結(jié)構(gòu)

2.1.3、循環(huán)結(jié)構(gòu)

即先判斷后執(zhí)行,所以被稱為當(dāng)型循環(huán)

因?yàn)槭恰爸钡綏l件為假時(shí)結(jié)束循環(huán)”,是先執(zhí)行后判斷,所以被稱為直到型循環(huán)

2.2、面向?qū)ο蟮脑O(shè)計(jì)簡介

2.2.1、簡要描述:

? 面向?qū)ο笫且环N更優(yōu)秀的程序設(shè)計(jì)方法,它的基本思想是使用類、對(duì)象、繼承、封裝、消息等基本概念進(jìn)行程序設(shè)計(jì),采用面向?qū)ο蠓绞介_發(fā)的軟件系統(tǒng),其最小的程序單元是類,這些類可以生成系統(tǒng)中的多個(gè)對(duì)象,而這些對(duì)象則直接映像成客觀世界的各種事物。

2.2.2、 類的簡單定義

? 面向?qū)ο蟮能浖到y(tǒng)由多個(gè)類組成,類代表了客觀世界中具有某種特征的一類事物,這類事物往往有一些內(nèi)部的狀態(tài)數(shù)據(jù),面向?qū)ο蟮恼Z言不僅使用類來封裝一類事物的內(nèi)部狀態(tài)數(shù)據(jù),而且類會(huì)提供操作這些狀態(tài)數(shù)據(jù)的方法,還會(huì)為這類事物的行為特征提供相應(yīng)的實(shí)現(xiàn),這種實(shí)現(xiàn)也是方法。

等式:成員變量(狀態(tài)數(shù)據(jù))+方法(行為)=類定義

2.2.3、面向?qū)ο笈c面向過程

情景:豬八戒吃西瓜
在面向過程的程序世界里,一切以函數(shù)為中心,函數(shù)最大,因此這件事情會(huì)用如下語句來表達(dá):

吃(豬八戒,西瓜);

在面向?qū)ο蟮某绦蚴澜缋?#xff0c;一切以對(duì)象為中心,對(duì)象最大,因此件事情會(huì)用如下語句來表達(dá):

豬八戒.吃(西瓜)

面向?qū)ο蟾菀桌斫?/p>

2.2.4、面向?qū)ο笕蠡咎卣?/h4>

封裝(Encapsulation)、繼承(Inheritance)和多態(tài)(Polymorphism)

除此之外,抽象也是面向?qū)ο蟮闹匾糠?#xff0c;抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。

2.3、面向?qū)ο筇卣?/h3>

2.3.1、類與對(duì)象

具有相同或相似性質(zhì)的一組對(duì)象的抽象就是類,類是對(duì)一類事物的描述,是抽象的、概念上的定義;對(duì)象是實(shí)際存在的該類事物的個(gè)體,因而也稱為實(shí)例(instance)。

對(duì)象的抽象化是類,類的具體化就是對(duì)象

可以把類理解成某種概念、定義,它規(guī)定了某類對(duì)象所共同具有的數(shù)據(jù)和行為特征。

2.3.2、類的結(jié)構(gòu)關(guān)系

一般→特殊關(guān)系

這種關(guān)系就是典型的繼承關(guān)系,Java語言使用extends關(guān)鍵字來表示這種繼承關(guān)系,Java的子類是一種特殊
的父類。因此,這種一般→特殊的關(guān)系其實(shí)是一種“is a”關(guān)系。

整體→部分結(jié)構(gòu)關(guān)系

也被稱為組裝結(jié)構(gòu),這是典型的組合關(guān)系,Java語言通過在一個(gè)類里保存另一個(gè)對(duì)象的引用來實(shí)現(xiàn)這種組合關(guān)系。因此,這種整體→部分結(jié)構(gòu)關(guān)系其實(shí)是一種“has a”關(guān)系。

第三章:數(shù)據(jù)類型與運(yùn)算符

3.1、注釋

程序注釋是源代碼的一個(gè)重要部分,對(duì)于一份規(guī)范的程序源代碼而言,注釋應(yīng)該占到源代碼的1/3以上。

3.1.1、單行注釋

//public class Study { // public static void main(String[] args) { // System.out.println("hello world"); // } //}

3.1.2、多行注釋

/* public class Study {public static void main(String[] args) {System.out.println("hello world");} }*/

3.1.3、文件注釋

/*** @author * @date 2022/5/12 10:24*/

3.2、關(guān)鍵詞和標(biāo)識(shí)符

3.2.1、分號(hào)

Java語言里對(duì)語句的分隔不是使用回車來完成的,Java語言采用分號(hào)(;)作為語句的分隔

Java語句可以跨越多行書寫,但一個(gè)字符串、變量名不能跨越多行

3.2.2、花括號(hào)

花括號(hào)的作用就是定義一個(gè)代碼塊,花括號(hào)的作用就是定義一個(gè)代碼塊,類定義部分必須放在一個(gè)代碼塊里,方法體部分也必須放在一個(gè)代碼塊里。除此之外,條件語句中的條件執(zhí)行體和循環(huán)語句中的循環(huán)體通常也放在代碼塊里

3.2.3、方括號(hào)

方括號(hào)的主要作用是用于訪問數(shù)組元素,方括號(hào)通常緊跟數(shù)組變量名,而方括號(hào)里指定訪問的數(shù)組元素的索引

3.2.4、圓括號(hào)

圓括號(hào)是一個(gè)功能非常豐富的分隔符:定義方法時(shí)必須使用圓括號(hào)來包含所有的形參聲明,調(diào)用方法時(shí)也必須使用圓括號(hào)來傳入實(shí)參值;不僅如此,圓括號(hào)還可以將表達(dá)式中某個(gè)部分括成一個(gè)整體,保證這個(gè)部分優(yōu)先計(jì)算;除此之外,圓括號(hào)還可以作為強(qiáng)制類型轉(zhuǎn)換的運(yùn)算符。

3.2.5、空格

Java語言中的空格包含空格符(Space)、制表符(Tab)和回車(Enter)等

3.2.6、圓點(diǎn)

圓點(diǎn)(.)通常用作類/對(duì)象和它的成員(包括成員變量、方法和內(nèi)部類)之間的分隔符,表明調(diào)用某個(gè)類或某個(gè)實(shí)例的指定成員

3.2.7、關(guān)鍵詞

Java一共包含51個(gè)關(guān)鍵字

在上面的51個(gè)關(guān)鍵字中,enum是從Java 5新增的關(guān)鍵字,用于定義一個(gè)枚舉。而goto和const這兩個(gè)關(guān)鍵字也被稱為保留字(reserved word),保留字的意思是,Java現(xiàn)在還未使用這兩個(gè)關(guān)鍵字,但可能在未來的Java版本中使用這兩個(gè)關(guān)鍵字;不僅如此,Java還提供了三個(gè)特殊的直接量(literal):true、false和null;Java語言的標(biāo)識(shí)符也不能使用這三個(gè)特殊的直接量。從Java 10開始引入的var并不是關(guān)鍵字,它相當(dāng)于一個(gè)可變的類型名(后面會(huì)述),因此var依然可作為標(biāo)識(shí)符。

3.3、數(shù)據(jù)類型

3.3.1、Java語言說明

Java語言是強(qiáng)類型(strongly typed)語言,強(qiáng)類型包含兩方面的含義:

① 所有的變量必須先聲明、后使用;

② 指定類型的變量只能接受類型與之匹配的值

注:變量定義——(修飾符)變量類型 變量名,可以有初始值也可無

var可以動(dòng)態(tài)進(jìn)行定義局部變量,局部變量要有初始值

編程的本質(zhì):是對(duì)內(nèi)存中數(shù)據(jù)的訪問和修改。程序所用的數(shù)據(jù)都會(huì)保存在內(nèi)存中,程序員需要一種機(jī)制來訪問或修改內(nèi)存中數(shù)據(jù)。這種機(jī)制就是變量,每個(gè)變量都代表了某一小塊內(nèi)存,而且變量是有名字的,程序?qū)ψ兞抠x值,實(shí)際上就是把數(shù)據(jù)裝入該變量所代表的內(nèi)存區(qū)的過程;程序讀取變量的值,實(shí)際上就是從該變量所代表的內(nèi)存區(qū)取值的過程。形象地理解:變量相當(dāng)于一個(gè)有名稱的容器,該容器用于裝各種不同類型的數(shù)據(jù)。

3.3.2、數(shù)據(jù)類型分類

3.3.2.1、基本數(shù)據(jù)類型

基本數(shù)據(jù)類型的表數(shù)范圍由小到大為

byte→short→char→int→long→float→double

char代表字符型,實(shí)際上字符型也是一種整數(shù)類型,相當(dāng)于無符號(hào)整數(shù)類型

1、大轉(zhuǎn)小要強(qiáng)制類型轉(zhuǎn)換,類型前面加(需要的轉(zhuǎn)換的類型),可能會(huì)引起溢出,從而造成數(shù)據(jù)丟失,也稱為縮小,但轉(zhuǎn)換小轉(zhuǎn)大可以直接進(jìn)行轉(zhuǎn)換

2、如果希望把基本數(shù)據(jù)類型轉(zhuǎn)為字符串類型,可以把基本類型的值和一個(gè)空字符串進(jìn)行連接

3、在通常情況下,字符串不能直接轉(zhuǎn)換為基本類型,但通過基本類型對(duì)應(yīng)的包裝類則可以實(shí)現(xiàn)把字符串轉(zhuǎn)換成基本類型

public class Study {public static void main(String[] args) {String a="55";int s = Integer.parseInt(a);System.out.println(s);} }

4、boolean不能進(jìn)行轉(zhuǎn)換,boolean主要用于流程的控制,通常運(yùn)用int和double數(shù)據(jù)類型

Java規(guī)范并沒有強(qiáng)制指定boolean類型的變量所占用的內(nèi)存空間。雖然boolean類型的變量或值只要1位即可保存,但由于大部分計(jì)算機(jī)在分配內(nèi)存時(shí)允許分配的最小內(nèi)存單元是字節(jié)(8位),因此bit大部分時(shí)候?qū)嶋H上占用8位。

3.3.2.2、引用數(shù)據(jù)類型

引用類型包括類、接口和數(shù)組類型,還有一種特殊的null類型。所謂引用數(shù)據(jù)類型就是對(duì)一個(gè)對(duì)象的引用,對(duì)象包括實(shí)例和數(shù)組兩種。

3.4、運(yùn)算符

3.4.1、算術(shù)運(yùn)算符
運(yùn)算符含義
+求和
-相減
*乘積
/
%求余數(shù)(求模)
++自加一
自減一
3.4.2、關(guān)系運(yùn)算符
運(yùn)算符含義
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于
3.4.3、按位運(yùn)算符

此處省略一萬字

3.4.4、邏輯運(yùn)算符
運(yùn)算符含義結(jié)果
&邏輯與(可以翻譯成并且)兩邊都是true,結(jié)果才是true
邏輯或(可以翻譯成或者)有一邊是true,結(jié)果就是true
!邏輯非(取反)!true = false、!false = true
&&短路與兩邊都是true,結(jié)果才是true
││短路或有一邊是true,結(jié)果就是true
3.4.5、賦值運(yùn)算符
運(yùn)算符含義
=賦值
+=加等(原先的基礎(chǔ)上加上/追加這個(gè)數(shù))
-=減等(同理)
*=乘等(同理)
/=除等(同理)
%=模等(同理)
3.4.6、條件運(yùn)算符

布爾表達(dá)式 ? 表達(dá)式1 : 表達(dá)式2

判斷表達(dá)式是否成立,true則選擇表達(dá)式1,false則選擇表達(dá)式2

第四章:流程控制與數(shù)組

4.1、流程控制

4.1.1、順序結(jié)構(gòu)

程序從上到下逐行地執(zhí)行,中間沒有任何判斷和跳轉(zhuǎn)

4.1.2、分支結(jié)構(gòu)

if語句

使用布爾表達(dá)式或布爾值作為分支條件來進(jìn)行分支控制,放在if之后括號(hào)里的只能是一個(gè)邏輯表達(dá)式,即這個(gè)表達(dá)式的返回值只能是true或false

**注意:**使用if…else語句時(shí),一定要先處理包含范圍更小的情況

switch語句

用多個(gè)整型值進(jìn)行匹配,后面的控制表達(dá)式的數(shù)據(jù)類型只能是byte、short、char、int四種整數(shù)類型,枚舉類型和java.lang.String類型

4.1.3、循環(huán)結(jié)構(gòu)

while循環(huán)

do while循環(huán)

for循環(huán)

此處省略5000字

4.2、數(shù)組

4.2.1、數(shù)組簡要描述

數(shù)組也是一種數(shù)據(jù)類型,它本身是一種引用類型。

int[]就是一種數(shù)據(jù)類型,與int類型、String類型類似,一樣可以使用該類型來定義變量,也可以使用該類型進(jìn)行類型轉(zhuǎn)換等。使用int[]類型來定義變量、進(jìn)行類型轉(zhuǎn)換時(shí)與使用其他普通類型沒有任何區(qū)別。int[]類型是一種引用類型,創(chuàng)建int[]類型的對(duì)象也就是創(chuàng)建數(shù)組,需要使用創(chuàng)建數(shù)組的語法

4.2.2、數(shù)組的初始化

//靜態(tài)初始化和動(dòng)態(tài)初始化 int [] arrayName={22,33,33,22}; int[] array = new int[5];

4.2.3、foreach循環(huán)

for(數(shù)據(jù)類型 自定義一個(gè)變量:變量){System.out.println(自定義一個(gè)變量); }

4.2.4、堆內(nèi)存和棧內(nèi)存

當(dāng)一個(gè)方法執(zhí)行時(shí),每個(gè)方法都會(huì)建立自己的內(nèi)存棧,在這個(gè)方法內(nèi)定義的變量將會(huì)逐個(gè)放入這塊棧內(nèi)存里,隨著方法的執(zhí)行結(jié)束,這個(gè)方法的內(nèi)存棧也將自然銷毀。因此,所有在方法中定義的局部變量都是放在棧內(nèi)存中的;在程序中創(chuàng)建一個(gè)對(duì)象時(shí),這個(gè)對(duì)象將被保存到運(yùn)行時(shí)數(shù)據(jù)區(qū)中,以便反復(fù)利用(因?yàn)閷?duì)象的創(chuàng)建成本通常較大),這個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū)就是堆內(nèi)存。堆內(nèi)存中的對(duì)象不會(huì)隨方法的結(jié)束而銷毀,即使方法結(jié)束后,這個(gè)對(duì)象還可能被另一個(gè)引用變量所引用(在方法的參數(shù)傳遞時(shí)很常見),則這個(gè)對(duì)象依然不會(huì)被銷毀。只有當(dāng)一個(gè)對(duì)象沒有任何引用變量引用它時(shí),系統(tǒng)的垃圾回收器才會(huì)在合適的時(shí)候回收它。

4.2.5、操作數(shù)組的工具類——Arrays

給數(shù)組賦值:通過 fill 方法。
對(duì)數(shù)組排序:通過 sort 方法,按升序。
比較數(shù)組:通過 equals 方法比較數(shù)組中元素值是否相等

4.2.5.1、打印數(shù)組
public static void main(String[] args) {int [] array={11,2,5,9,3,4};System.out.println(array);System.out.println(Arrays.toString(array));}
4.2.5.2、數(shù)組排序
public static void main(String[] args) {int [] array={11,2,5,9,3,4};System.out.println(Arrays.toString(array));Arrays.sort(array);System.out.println(Arrays.toString(array));}
4.2.5.3、在數(shù)組中查找指定元素并返回其下標(biāo)
public class Test_02 {public static void main(String[] args) {int [] array={11,2,5,9,3,4};System.out.println(Arrays.binarySearch(array,5));} }

第五章:面向?qū)ο?/h2>

5.1、類的初步理解

5.1.1、類的定義

類是面向?qū)ο蟮闹匾獌?nèi)容,類當(dāng)成一種自定義類型,可以使用類來定義變量,這種類型的變量統(tǒng)稱為引用變量。也就是說,所有類是引用類型。

5.1.2、類常見的基本格式

類中總體包含三種成員:構(gòu)造器,成員變量,方法

三種成員總體概括:成員變量用于定義該類或該類的實(shí)例所包含的狀態(tài)數(shù)據(jù),方法則用于定義該類或該類的實(shí)例的行為特征或者功能實(shí)現(xiàn)。構(gòu)造器用于構(gòu)造該類的實(shí)例,Java語言通過new關(guān)鍵字來調(diào)用構(gòu)造器,從而返回該類的實(shí)例。

構(gòu)造器是一個(gè)類創(chuàng)建對(duì)象的根本途徑,如果一個(gè)類沒有構(gòu)造器,這個(gè)類通常無法創(chuàng)建實(shí)例。如果程序沒有構(gòu)造器,系統(tǒng)將會(huì)提供。

5.1.2.2、成員變量

成員變量被分為類變量和實(shí)例變量兩種,定義成員變量時(shí)沒有static修飾的就是實(shí)例變量,有static修飾的就是類變量。其中類變量從該類的準(zhǔn)備階段起開始存在,直到系統(tǒng)完全銷毀這個(gè)類,類變量的作用域與這個(gè)類的生存范圍相同;而實(shí)例變量則從該類的實(shí)例被創(chuàng)建起開始存在,直到系統(tǒng)完全銷毀這個(gè)實(shí)例,實(shí)例變量的作用域與對(duì)應(yīng)實(shí)例的生存范圍相同。

5.1.2.1、方法

在前面幾個(gè)章節(jié)中我們經(jīng)常使用到 System.out.println(),那么它是什么呢?
println() 是一個(gè)方法。
System 是系統(tǒng)類。
out 是標(biāo)準(zhǔn)輸出對(duì)象。

這句話的用法是調(diào)用系統(tǒng)類 System 中的標(biāo)準(zhǔn)輸出對(duì)象 out 中的方法 println()。

靜態(tài)方法和非靜態(tài)方法

靜態(tài)方法是有static修飾的,可以直接通過類來進(jìn)行對(duì)方法的調(diào)用,通常把static修飾的成員變量和方法也稱為類變量、類方法。

非靜態(tài)方法是沒有static修飾的,調(diào)用方法的時(shí)候必須要進(jìn)行創(chuàng)建對(duì)象,擁有一個(gè)實(shí)例,通常把不使用static修飾的成員變量和方法也稱為實(shí)例變量、實(shí)例方法。

static相當(dāng)于一個(gè)標(biāo)志,有static修飾的成員屬于類本身,沒有static修飾的成員屬于該類的實(shí)例

5.1.2.2、構(gòu)造器

構(gòu)造器名必須要和類名相同,形參列表和方法是一樣的

5.1.2.3補(bǔ)充 參數(shù)傳遞問題

Java中只有值傳遞

了解引用傳遞

class Student{int id;String name; public void paly(){ ...... } } =========== public void showStudent(Student student){System.out.println(student.id);System.out.println(student.name); }

這時(shí)可以把Student看成一個(gè)數(shù)據(jù)類型,但是準(zhǔn)確來說是一個(gè)類,student代表Student類的一個(gè)變量,這樣就能訪問student中的數(shù)據(jù)了,一個(gè)方法的形式參數(shù)是一個(gè)類的類型(引用類型),這里其實(shí)需要的是該類的對(duì)象。

引用傳遞的實(shí)質(zhì)是對(duì)其所引用的對(duì)象進(jìn)行操作,而所引用的是同一個(gè)對(duì)象,所以說還是相當(dāng)于一個(gè)值的傳遞

方法參數(shù)傳遞的實(shí)質(zhì):傳入方法的是實(shí)際參數(shù)值的復(fù)制品,不管方法中對(duì)這個(gè)復(fù)制品如何操作,實(shí)際參數(shù)值本身不會(huì)受到任何影響

你有一把鑰匙,當(dāng)你的朋友想要去你家的時(shí)候,如果你直接把你的鑰匙給他了,這就是引用傳遞。這種情況下,如果他對(duì)這把鑰匙做了什么事情,比如他在鑰匙上刻下了自己名字,那么這把鑰匙還給你的時(shí)候,你自己的鑰匙上也會(huì)多出他刻的名字。你有一把鑰匙,當(dāng)你的朋友想要去你家的時(shí)候,你復(fù)刻了一把新鑰匙給他,自己的還在自己手里,這就是值傳遞。這種情況下,他對(duì)這把鑰匙做什么都不會(huì)影響你手里的這把鑰匙。。

5.2、類的特征

5.2.1、封裝

5.2.1.1、this關(guān)鍵詞

1、區(qū)別成員變量和局部變量

public class Student{ private String name; public void setName(String name){ //this.name表示類中的屬性name this.name = name;} }

2、this在類中表示當(dāng)前類將來創(chuàng)建出的對(duì)象

public class Student{private String name;public Student(){System.out.println("this = "+this);}public static void main(String[] args){Student s = new Student();System.out.println("s = "+s);} }
5.2.1.2、簡要介紹

該露的露,該藏的藏

我們程序設(shè)計(jì)要追求“高內(nèi)聚,低耦合”。高內(nèi)聚就是類的內(nèi)部數(shù)據(jù)操作細(xì)節(jié)自己完成,不允許外
部干涉;低耦合:僅暴露少量的方法給外部使用。

把變量通過private關(guān)鍵詞進(jìn)行修飾,然后經(jīng)過get和set方法進(jìn)行外部訪問

//set負(fù)責(zé)給屬性賦值 //get負(fù)責(zé)返回屬性的值 public class Student{private String name;public void setName(String name){this.name = name;}public String getName(){return this.name;}} public class Test{public static void main(String[] args){Student s = new Student();s.setName("tom");System.out.println(s.getName());

5.2.2、繼承

5.2.2.1、簡要說明

Java的繼承通過extends關(guān)鍵字來實(shí)現(xiàn),實(shí)現(xiàn)繼承的類被稱為子類,被繼承的類被稱為父類,有的也稱其為基類、超類。父類和子類的關(guān)系,是一種一般和特殊的關(guān)系。例如水果和蘋果的關(guān)系,蘋果繼承了水果,蘋果是水果的子類,則蘋果是一種特殊的水果。

5.2.2.2、特點(diǎn)

1、繼承的本質(zhì)在于抽象。類是對(duì)對(duì)象的抽象,繼承是對(duì)某一批類的抽象。
2、為了提高代碼的復(fù)用性。
extands的意思是“擴(kuò)展”。子類是父類的擴(kuò)展。

JAVA中類只有單繼承,沒有多繼承! 接口可以多繼承!

5.2.3、多態(tài)

5.2.3.1、前提

1.要有繼承關(guān)系

2.子類要重寫父類的方法

3.父類引用指向子類

5.2.3.2、示例
//父類 public class Test_01 {int num = 30;public void eat(){System.out.println("動(dòng)物吃飯");}public static void sleep(){System.out.println("動(dòng)物在睡覺");}public void run(){System.out.println("動(dòng)物在奔跑");} } //子類 public class Test_02 extends Test_01{int num=50;public void catchMouse(){System.out.println("貓抓老鼠");} } //Demo public class Demo {public static void main(String[] args) {Test_01 t1 = new Test_02();t1.eat();t1.run();System.out.println(t1.num);Test_02 t2 = (Test_02) t1;t2.catchMouse();} }

編譯看左,運(yùn)行看,成員變量編譯運(yùn)行均看左

5.3、重要類的闡述

5.3.1、抽象類

5.3.2、內(nèi)部類

5.3.3、枚舉類

5.3.4、包裝類

5.4、lambda表達(dá)式

5.5、修飾符的適用范圍介紹

后面有些東西還沒有寫完,但是也不想寫了,就先這樣,因?yàn)橐么a,后續(xù)有時(shí)間再來更新,沒有時(shí)間就算了,后面還有集合,IO流等知識(shí),目前自己正看到IO流這里,時(shí)間寶貴,多敲代碼,少寫東西,浪費(fèi)時(shí)間,敲著敲著不會(huì)的地方回去看就好了

結(jié)語

Java書籍推薦

鏈接:https://www.123pan.com/s/l5iA-Wlnwd

總結(jié)

以上是生活随笔為你收集整理的疯狂Java讲义第五版读书笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。