JavaSE基础知识(附上代码实现)1
###01.01_計(jì)算機(jī)基礎(chǔ)知識(shí)(計(jì)算機(jī)概述)(了解)
* A:什么是計(jì)算機(jī)?計(jì)算機(jī)在生活中的應(yīng)用舉例
?? ?* 計(jì)算機(jī)(Computer)全稱:電子計(jì)算機(jī),俗稱電腦。是一種能夠按照程序運(yùn)行,自動(dòng)、高速處理海量數(shù)據(jù)的現(xiàn)代化智能電子設(shè)備。由硬件和軟件所組成,沒(méi)有安裝任何軟件的計(jì)算機(jī)稱為裸機(jī)。常見(jiàn)的形式有臺(tái)式計(jì)算機(jī)、筆記本計(jì)算機(jī)、大型計(jì)算機(jī)等。
?? ?* 應(yīng)用舉例
?? ??? ?* 1:科學(xué)計(jì)算
?? ??? ?* 2、數(shù)據(jù)處理
?? ??? ?* 3、自動(dòng)控制
?? ??? ?* 4、計(jì)算機(jī)輔助設(shè)計(jì)
?? ??? ?* 5、人工智能
?? ??? ?* 6、多媒體應(yīng)用
?? ??? ?* 7、計(jì)算機(jī)網(wǎng)絡(luò)
?? ??? ?* ...?
* B:什么是硬件?硬件舉例
?? ?* 計(jì)算機(jī)硬件(Computer Hardware)是指計(jì)算機(jī)系統(tǒng)中由電子,機(jī)械和光電元件等組成的各種物理裝置的總稱。這些物理裝置按系統(tǒng)結(jié)構(gòu)的要求構(gòu)成一個(gè)有機(jī)整體為計(jì)算機(jī)軟件運(yùn)行提供物質(zhì)基礎(chǔ)。
?? ?* 馮.諾依曼體系結(jié)構(gòu)
?? ?* 計(jì)算機(jī)的硬件分成5大組成部件:運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備。
?? ?
?? ??? ?* 運(yùn)算器和控制器是計(jì)算機(jī)的核心,合稱中央處理單元(Central Processing Unit,CPU)或處理器。CPU的內(nèi)部還有一些高速存儲(chǔ)單元,被稱為寄存器。其中運(yùn)算器執(zhí)行所有的算術(shù)和邏輯運(yùn)算;控制器負(fù)責(zé)把指令逐條從存儲(chǔ)器中取出,經(jīng)譯碼后向計(jì)算機(jī)發(fā)出各種控制命令;而寄存器為處理單元提供操作所需要的數(shù)據(jù)。
?? ??? ?* 存儲(chǔ)器是計(jì)算機(jī)的記憶部分,用來(lái)存放程序以及程序中涉及的數(shù)據(jù)。它分為內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器。內(nèi)部存儲(chǔ)器用于存放正在執(zhí)行的程序和使用的數(shù)據(jù),其成本高、容量小,但速度快。外部存儲(chǔ)器可用于長(zhǎng)期保存大量程序和數(shù)據(jù),其成本低、容量大,但速度較慢。
?? ??? ?* 輸入設(shè)備和輸出設(shè)備統(tǒng)稱為外部設(shè)備,簡(jiǎn)稱外設(shè)或I/O設(shè)備,用來(lái)實(shí)現(xiàn)人機(jī)交互和機(jī)間通信。微型機(jī)中常用的輸入設(shè)備有鍵盤(pán)、鼠標(biāo)等,輸出設(shè)備有顯示器、打印機(jī)等。
* C:什么是軟件?軟件分類及舉例
?? ?* 計(jì)算機(jī)軟件(Computer Software)是使用計(jì)算機(jī)過(guò)程中必不可少的東西,計(jì)算機(jī)軟件可以使計(jì)算機(jī)按照事先預(yù)定好的順序完成特定的功能
?? ?* 計(jì)算機(jī)軟件按照其功能劃分為系統(tǒng)軟件與應(yīng)用軟件
?? ??? ?* 系統(tǒng)軟件: DOS(Disk Operating System), Windows, Linux, Unix, Mac, Android, iOS
?? ??? ?* 應(yīng)用軟件:office ?QQ聊天 ?YY語(yǔ)言 ?掃雷
###01.02_計(jì)算機(jī)基礎(chǔ)知識(shí)(軟件開(kāi)發(fā)和計(jì)算機(jī)語(yǔ)言概述)(了解)
* A:什么是軟件
?? ?* 按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合
* B:什么是開(kāi)發(fā)
?? ?* 軟件的制作過(guò)程
* C:什么是軟件開(kāi)發(fā)
?? ?* 借助開(kāi)發(fā)工具與計(jì)算機(jī)語(yǔ)言制作軟件?
* D:什么是計(jì)算機(jī)語(yǔ)言
?? ?* 人與計(jì)算機(jī)之間進(jìn)行信息交流溝通的一種特殊語(yǔ)言
* E:計(jì)算機(jī)語(yǔ)言的分類
?? ?* 機(jī)器語(yǔ)言:
?? ??? ?* 機(jī)器語(yǔ)言是直接用二進(jìn)制代碼指令表達(dá)的計(jì)算機(jī)語(yǔ)言,指令是用0和1組成的一串代碼,它們有一定的位數(shù),并分成若干段,各段的編碼表示不同的含義。
?? ?* 匯編語(yǔ)言:
?? ??? ?* 匯編語(yǔ)言是使用一些特殊的符號(hào)來(lái)代替機(jī)器語(yǔ)言的二進(jìn)制碼,計(jì)算機(jī)不能直接識(shí)別,需要用一種軟件將匯編語(yǔ)言翻譯成機(jī)器語(yǔ)言。
?? ?* 高級(jí)語(yǔ)言: ?
?? ??? ?* 使用普通英語(yǔ)進(jìn)行編寫(xiě)源代碼,通過(guò)編譯器將源代碼翻譯成計(jì)算機(jī)直接識(shí)別的機(jī)器語(yǔ)言,之后再由計(jì)算機(jī)執(zhí)行。
?? ??? ?* 高級(jí)語(yǔ)言包括C,C++,C#,JAVA
###01.03_計(jì)算機(jī)基礎(chǔ)知識(shí)(人機(jī)交互)(了解)
* A:人機(jī)交互的兩種方式
?? ?* a:命令行方式?
?? ??? ?* 需要有一個(gè)控制臺(tái),輸入特定的指令,讓計(jì)算機(jī)完成一些操作。較為麻煩,需要記錄住一些命令。?
?? ?* b:圖形化界面方式
?? ??? ?* 這種方式簡(jiǎn)單直觀,使用者易于接受,容易上手操作。
?? ?
###01.04_計(jì)算機(jī)基礎(chǔ)知識(shí)(鍵盤(pán)功能鍵和快捷鍵)(掌握)
* A:鍵盤(pán)功能鍵
?? ?* a:Tab
?? ?* b:Shift
?? ?* c:Ctrl
?? ?* d:Alt
?? ?* e:空格?? ?
?? ?* f:Enter
?? ?* g:Window
?? ?* h:上下左右鍵
?? ?* i:PrtSc(PrintScreen)屏幕截圖
* B:鍵盤(pán)快捷鍵
?? ?* a:Ctrl+A?? ?全選
?? ?* b:Ctrl+C?? ?復(fù)制
?? ?* c:Ctrl+V?? ?粘貼
?? ?* d:Ctrl+X?? ?剪切
?? ?* e:Ctrl+Z?? ?撤銷
?? ?* f:Ctrl+S?? ?保存
###01.05_計(jì)算機(jī)基礎(chǔ)知識(shí)(如何打開(kāi)DOS控制臺(tái))(掌握)
* A:xp下如何打開(kāi)DOS控制臺(tái)?
?? ?* a:開(kāi)始--程序--附件--命令提示符
?? ?* b:開(kāi)始--運(yùn)行--cmd--回車
?? ?* c:win+r--cmd--回車
* B:win7下如何打開(kāi)DOS控制臺(tái)?
?? ?* a:開(kāi)始--所有程序--附件--命令提示符
?? ?* b:開(kāi)始--搜索程序和文件--cmd--回車
?? ?* c:win+r--cmd--回車
* C:win8下如何打開(kāi)DOS控制臺(tái)
?? ?* a:鼠標(biāo)左擊開(kāi)始--下箭頭--命令提示符
?? ?* b:鼠標(biāo)右擊開(kāi)始--搜索--cmd--回車
?? ?* c:鼠標(biāo)右擊開(kāi)始--運(yùn)行--cmd--回車
?? ?* d:win+r--cmd--回車
###01.06_計(jì)算機(jī)基礎(chǔ)知識(shí)(常見(jiàn)的DOS命令講解)
* A:d: 回車?? ?盤(pán)符切換
* B:dir(directory):列出當(dāng)前目錄下的文件以及文件夾
* C:cd (change directory)改變指定目錄(進(jìn)入指定目錄)
* D:cd.. : 退回到上一級(jí)目錄
* E:cd\: 退回到根目錄
* F:cls : (clear screen)清屏
* G:exit : 退出dos命令行(分割線上的需要掌握,下的了解)
* /=========================================================
* md (make directory) : 創(chuàng)建目錄
* rd (remove directory): 刪除目錄
* del (delete): 刪除文件,刪除一堆后綴名一樣的文件*.txt
* notepad 創(chuàng)建文件
* 刪除帶內(nèi)容的文件夾
?? ?* rd + /s?? ?文件夾名稱(詢問(wèn)是否刪除)
?? ?* rd + /q + /s 文件夾名稱(直接刪除)
?? ?
###01.07_Java語(yǔ)言基礎(chǔ)(Java語(yǔ)言概述)(了解)
* A:Java語(yǔ)言發(fā)展史
?? ?* 詹姆斯·高斯林(James Gosling)1977年獲得了加拿大卡爾加里大學(xué)計(jì)算機(jī)科學(xué)學(xué)士學(xué)位,1983年獲得了美國(guó)卡內(nèi)基梅隆大學(xué)計(jì)算機(jī)科學(xué)博士學(xué)位,畢業(yè)后到IBM工作,設(shè)計(jì)IBM第一代工作站NeWS系統(tǒng),但不受重視。后來(lái)轉(zhuǎn)至Sun公司,1990年,與Patrick,Naughton和Mike Sheridan等人合作“綠色計(jì)劃”,后來(lái)發(fā)展一套語(yǔ)言叫做“Oak”,后改名為Java。
?? ?* SUN(Stanford University Network,斯坦福大學(xué)網(wǎng)絡(luò)公司)?
* B:Java語(yǔ)言版本
?? ?* JDK 1.1.4?? ??? ?Sparkler?? ?寶石?? ??? ??? ??? ?1997-09-12
?? ?* JDK 1.1.5?? ??? ?Pumpkin?? ??? ?南瓜?? ??? ??? ??? ?1997-12-13
?? ?* JDK 1.1.6?? ??? ?Abigail?? ??? ?阿比蓋爾--女子名?? ??? ?1998-04-24
?? ?* JDK 1.1.7?? ??? ?Brutus?? ??? ?布魯圖--古羅馬政治家和將軍?? ?1998-09-28
?? ?* JDK 1.1.8?? ??? ?Chelsea?? ??? ?切爾西--城市名?? ??? ??? ?1999-04-08
?? ?* J2SE 1.2?? ??? ?Playground?? ?運(yùn)動(dòng)場(chǎng)?? ??? ??? ??? ?1998-12-04
?? ?* J2SE 1.2.1?? ??? ?none?? ??? ?無(wú)?? ??? ??? ??? ?1999-03-30
?? ?* J2SE 1.2.2?? ??? ?Cricket?? ??? ?蟋蟀?? ??? ??? ??? ?1999-07-08
?? ?* J2SE 1.3?? ??? ?Kestrel?? ??? ?美洲紅隼(sǔn)?? ??? ??? ?2000-05-08
?? ?* J2SE 1.3.1?? ??? ?Ladybird?? ?瓢蟲(chóng)?? ??? ??? ??? ?2001-05-17
?? ?* J2SE 1.4.0?? ??? ?Merlin?? ??? ?灰背隼?? ??? ??? ??? ?2002-02-13
?? ?* J2SE 1.4.1?? ??? ?grasshopper?? ?蚱蜢?? ??? ??? ??? ?2002-09-16
?? ?* J2SE 1.4.2?? ??? ?Mantis?? ??? ?螳螂?? ??? ??? ??? ?2003-06-26
?? ?* JAVASE 5.0 (1.5.0)?? ?Tiger?? ??? ?老虎?? ?
?? ?* JAVASE 5.1 (1.5.1)?? ?Dragonfly?? ?蜻蜓?? ?
?? ?* JAVASE 6.0 (1.6.0)?? ?Mustang?? ??? ?野馬
?? ?* JAVASE 7.0 (1.7.0)?? ?Dolphin?? ??? ?海豚
* C:Java語(yǔ)言平臺(tái)
?? ?* J2SE(Java 2 Platform Standard Edition)標(biāo)準(zhǔn)版
?? ??? ?* 是為開(kāi)發(fā)普通桌面和商務(wù)應(yīng)用程序提供的解決方案,該技術(shù)體系是其他兩者的基礎(chǔ),可以完成一些桌面應(yīng)用程序的開(kāi)發(fā)
?? ?* J2ME(Java 2 Platform Micro Edition)小型版
?? ??? ?* 是為開(kāi)發(fā)電子消費(fèi)產(chǎn)品和嵌入式設(shè)備提供的解決方案
?? ?* J2EE(Java 2 Platform Enterprise Edition)企業(yè)版
?? ??? ?* 是為開(kāi)發(fā)企業(yè)環(huán)境下的應(yīng)用程序提供的一套解決方案,該技術(shù)體系中包含的技術(shù)如 Servlet、Jsp等,主要針對(duì)于Web應(yīng)用程序開(kāi)發(fā)?
* C:Java語(yǔ)言特點(diǎn)
?? ?* 簡(jiǎn)單性?? ??? ?
?? ?* 解釋性
?? ?* 面向?qū)ο?? ??? ?
?? ?* 高性能
?? ?* 分布式處理?? ?
?? ?* 多線程
?? ?* 健壯性?? ??? ?
?? ?* 動(dòng)態(tài)
?? ?* 結(jié)構(gòu)中立?? ??? ?
?? ?* 安全性
?? ?* 開(kāi)源
?? ?* 跨平臺(tái)
###01.08_Java語(yǔ)言基礎(chǔ)(Java語(yǔ)言跨平臺(tái)原理)(掌握)
* A:什么是跨平臺(tái)性
* B:Java語(yǔ)言跨平臺(tái)原理
?? ?* 只要在需要運(yùn)行java應(yīng)用程序的操作系統(tǒng)上,先安裝一個(gè)Java虛擬機(jī)(JVM Java Virtual Machine)即可。由JVM來(lái)負(fù)責(zé)Java程序在該系統(tǒng)中的運(yùn)行。
* C:Java語(yǔ)言跨平臺(tái)圖解
?? ?* write once ,run anywhere!(一處編譯,到處運(yùn)行)
###01.09_Java語(yǔ)言基礎(chǔ)(JRE和JDK的概述)(掌握)
* A:什么是JRE
?? ?* 包括Java虛擬機(jī)(JVM Java Virtual Machine)和Java程序所需的核心類庫(kù)等,如果想要運(yùn)行一個(gè)開(kāi)發(fā)好的Java程序,計(jì)算機(jī)中只需要安裝JRE即可。
?? ?* JRE:JVM+類庫(kù)。?
* B:什么是JDK
?? ?* JDK是提供給Java開(kāi)發(fā)人員使用的,其中包含了java的開(kāi)發(fā)工具,也包括了JRE。所以安裝了JDK,就不用在單獨(dú)安裝JRE了。
?? ?* 其中的開(kāi)發(fā)工具:編譯工具(javac.exe) ?打包工具(jar.exe)等
??? ?* JDK:JRE+JAVA的開(kāi)發(fā)工具。
* C:為什么JDK中包含一個(gè)JRE
?? ?* 為什么JDK中包含一個(gè)JRE呢?
?? ??? ?* 開(kāi)發(fā)完的程序,需要運(yùn)行一下看看效果。
* D:JDK,JRE,JVM的作用和關(guān)系
###01.10_Java語(yǔ)言基礎(chǔ)(JDK的下載和安裝過(guò)程圖解)(了解)
* A:JDK的下載
?? ?* a:官網(wǎng) http://www.oracle.com
?? ?* b:演示下載流程
* B:JDK的安裝
?? ?* a:傻瓜式安裝
?? ??? ?* 雙擊安裝程序,然后一路next即可(但是不建議)
?? ?* b:安裝的推薦方式
?? ??? ?* 安裝路徑不要有中文或者特殊符號(hào)如空格等。
?? ??? ?* 所有和開(kāi)發(fā)相關(guān)的軟件最好安裝目錄統(tǒng)一。
?? ??? ??? ?* 舉例:我的JDK安裝路徑
?? ??? ??? ??? ?* D:\develop\Java\jdk1.7.0_72
?? ??? ?* 當(dāng)提示安裝JRE時(shí),可以選擇不安裝。建議還是安裝上。
?? ?* c:演示安裝流程
?? ??? ?* 可以先在d盤(pán)建立一個(gè)文件夾develop
?? ??? ?* 然后演示安裝過(guò)程
* C:驗(yàn)證安裝是否成功
?? ?* a:通過(guò)DOS命令,切換到JDK安裝的bin目錄下。
?? ??? ?* D:\develop\Java\jdk1.7.0_72\bin
?? ?* b:然后分別輸入javac和java,如果正常顯示一些內(nèi)容,說(shuō)明安裝成功
?? ??? ?
###01.11_Java語(yǔ)言基礎(chǔ)(JDK安裝路徑下的目錄解釋)(了解)
* a:bin目錄:該目錄用于存放一些可執(zhí)行程序。
?? ?* 如javac.exe(java編譯器)、java.exe(java運(yùn)行工具),jar.exe(打包工具)和* javadoc.exe(文檔生成工具)等。
* b:db目錄:db目錄是一個(gè)小型的數(shù)據(jù)庫(kù)。
?? ?* 從JDK 6.0開(kāi)始,Java中引用了一個(gè)新的成員JavaDB,這是一個(gè)純Java實(shí)現(xiàn)、開(kāi)源的數(shù)據(jù)庫(kù)管理系統(tǒng)。這個(gè)數(shù)據(jù)庫(kù)不僅輕便,而且支持JDBC 4.0所有的規(guī)范,在學(xué)習(xí)JDBC 時(shí),不再需要額外地安裝一個(gè)數(shù)據(jù)庫(kù)軟件,選擇直接使用JavaDB即可。
* c:jre目錄:"jre"是 Java Runtime Environment 的縮寫(xiě),意為Java程序運(yùn)行時(shí)環(huán)境。此目錄是Java運(yùn)行時(shí)環(huán)境的根目錄,它包括Java虛擬機(jī),運(yùn)行時(shí)的類包,Java應(yīng)用啟動(dòng)器以及一個(gè)bin目錄,但不包含開(kāi)發(fā)環(huán)境中的開(kāi)發(fā)工具。
* d:include目錄:由于JDK是通過(guò)C和C++實(shí)現(xiàn)的,因此在啟動(dòng)時(shí)需要引入一些C語(yǔ)言的頭文件,該目錄就是用于存放這些頭文件的。
* e:lib目錄:lib是library的縮寫(xiě),意為 Java 類庫(kù)或庫(kù)文件,是開(kāi)發(fā)工具使用的歸檔包文件。
* f:src.zip文件:src.zip為src文件夾的壓縮文件,src中放置的是JDK核心類的源代碼,通過(guò)該文件可以查看Java基礎(chǔ)類的源代碼。
###01.12_Java語(yǔ)言基礎(chǔ)(Java開(kāi)發(fā)工具介紹)(了解)
* A:notepad(微軟操作系統(tǒng)自帶)
* B:Editplus/Notepad++
* C:Eclipse
* D:MyEclipse
?? ?* 給大家簡(jiǎn)單的介紹一下這些工具,然后說(shuō)說(shuō)我們使用這些工具的順序。
?? ?* 基礎(chǔ)班:先notepad,然后Editplus,再Eclipse。
?? ?* 就業(yè)班:MyEclipse和Eclipse都用。
###01.13_Java語(yǔ)言基礎(chǔ)(HelloWorld案例的編寫(xiě)和運(yùn)行)(掌握)
* A:定義類
* B:寫(xiě)main方法
* C:寫(xiě)輸出語(yǔ)句
* D:Java程序開(kāi)發(fā)運(yùn)行與工作原理
* E:編譯和運(yùn)行程序
?? ??? ?class HelloWorld {
?? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ?System.out.println("HelloWorld");
?? ??? ??? ?}
?? ??? ?}
?? ?
###01.14_Java語(yǔ)言基礎(chǔ)(HelloWorld案例常見(jiàn)問(wèn)題)(掌握)
* A:找不到文件(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)
?? ?* a:文件擴(kuò)展名隱藏導(dǎo)致編譯失敗
?? ?* b:文件名寫(xiě)錯(cuò)了
* B:單詞拼寫(xiě)問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)
?? ?* a:class寫(xiě)成Class
?? ?* b:String寫(xiě)成string
?? ?* c:System寫(xiě)成system
?? ?* d:main寫(xiě)成mian
* C:括號(hào)匹配問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)
?? ?* a:把類體的那對(duì)大括號(hào)弄掉一個(gè)
?? ?* b:把方法體的那對(duì)大括號(hào)弄掉一個(gè)
?? ?* c:把輸出語(yǔ)句的那對(duì)小括號(hào)弄掉一個(gè)
* D:中英文問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)
?? ?* a:提示信息:錯(cuò)誤: 非法字符: \????的格式
?? ?* 注意:java編程中需要的基本上都是英文字符
###01.15_Java語(yǔ)言基礎(chǔ)(Java語(yǔ)言的書(shū)寫(xiě)格式(約定俗成))?? ?(掌握)
* 1,大括號(hào)要對(duì)齊,并且成對(duì)寫(xiě)
* 2,左大括號(hào)前面有空格
* 3,遇到左大括號(hào)要縮進(jìn),Tab
* 4,方法和程序塊之間加空行讓程序看起來(lái)清晰
* 5,并排語(yǔ)句之間加空格,例如for語(yǔ)句
* 6,運(yùn)算符兩側(cè)加空格
###01.16_Java語(yǔ)言基礎(chǔ)(path環(huán)境變量的作用及配置方式1)(掌握)
* A:在JDK的bin目錄下開(kāi)發(fā)程序容易產(chǎn)生的問(wèn)題
?? ?* a:如果文件過(guò)多,不方便管理
?? ?* b:刪除自己寫(xiě)過(guò)的不需要的文件,可能不小心把JDK自帶的工具給刪除了
* B:如何解決問(wèn)題呢
?? ?* notepad這樣的命令為什么在任何路徑下都能夠執(zhí)行,配置path環(huán)境變量
* C:配置方式
?? ?* a:xp系統(tǒng)
?? ??? ?* 右鍵點(diǎn)擊桌面計(jì)算機(jī)→選擇屬性→選擇高級(jí)選項(xiàng)卡→點(diǎn)擊環(huán)境變量→下方系統(tǒng)變量中查找path→雙擊path→將jdk安裝目錄下的bin目錄添加到最左邊并添加分號(hào)。
?? ?* b:win7/win8系統(tǒng)
?? ??? ?* 右鍵點(diǎn)擊桌面計(jì)算機(jī)→選擇屬性→選擇高級(jí)系統(tǒng)設(shè)置→選擇高級(jí)選項(xiàng)卡→點(diǎn)擊環(huán)境變量→下方系統(tǒng)變量中查找path→雙擊path→將jdk安裝目錄下的bin目錄添加到最左邊并添加分號(hào)。
* path配置的是可執(zhí)行的文件.exe,配置后可以在不同的盤(pán)符下訪問(wèn)path路徑下的可執(zhí)行文件
###01.17_Java語(yǔ)言基礎(chǔ)(Path環(huán)境變量的配置方式2)(掌握)
* A:先配置JAVA_HOME
* B:再修改path
* C:最后說(shuō)一下path是有先后順序關(guān)系的
###01.18_Java語(yǔ)言基礎(chǔ)(classpath環(huán)境變量的作用及其配置)(了解)
* A:為什么要配置classpath
* B:classpath配置的原理
* C:如何配置classpath
* path和classpath的區(qū)別
?? ?* path配置的是可執(zhí)行的文件.exe,配置后可以在不同的盤(pán)符下訪問(wèn)path路徑下的可執(zhí)行文件
?? ?* classpath配置的java的類文件,就是.class文件
###01.19_Java語(yǔ)言基礎(chǔ)(Editplus開(kāi)發(fā)程序并編譯運(yùn)行)(了解)
* A:配置快捷鍵編譯運(yùn)行
* B:去除備份文件
###01.20_Java語(yǔ)言基礎(chǔ)(注釋概述及其分類)(掌握)
* A:什么是注釋
* B:注釋的分類及講解
?? ?* 文檔注釋目前不講,說(shuō)后面講解
* 注釋的作用
?? ?* A:解釋說(shuō)明程序
?? ?* B:幫助我們調(diào)試錯(cuò)誤
?? ?
###01.21_Java語(yǔ)言基礎(chǔ)(關(guān)鍵字的概述和使用)(掌握)
* A:什么是關(guān)鍵字
?? ?* 被Java語(yǔ)言賦予特定含義的單詞?
* B:關(guān)鍵字的特點(diǎn)
?? ?* 組成關(guān)鍵字的字母全部小寫(xiě)?
* C:常見(jiàn)關(guān)鍵字
?? ?* public static void class等?
* D:關(guān)鍵字的注意事項(xiàng)
?? ?* goto和const作為保留字存在,目前并不使用,類似Editplus這樣的高級(jí)記事本,針對(duì)關(guān)鍵字有特殊的顏色標(biāo)記,非常直觀?
###01.22_Java語(yǔ)言基礎(chǔ)(標(biāo)識(shí)符的概述和組成規(guī)則)(掌握)
* A:什么是標(biāo)識(shí)符
?? ?* 就是給類,接口,方法,變量等起名字時(shí)使用的字符序列?
* B:標(biāo)識(shí)符的組成規(guī)則
?? ?* 英文大小寫(xiě)字母
?? ?* 數(shù)字字符
?? ?* $和_?
* C:標(biāo)識(shí)符注意事項(xiàng)
?? ?* 1,不能使用關(guān)鍵字
?? ?* 2,不能數(shù)字開(kāi)頭?
###01.23_Java語(yǔ)言基礎(chǔ)(標(biāo)識(shí)符中常見(jiàn)的命名規(guī)則)(了解)
* 見(jiàn)名知意
* A:包
?? ?* 最好是域名倒過(guò)來(lái),要求所有的字母小寫(xiě)?
* B:類或者接口
?? ?* 如果是一個(gè)單詞首字母大寫(xiě)
?? ?* 如果是多個(gè)單詞每個(gè)單詞首字母大寫(xiě)(駝峰標(biāo)識(shí))?
* C:方法或者變量
?? ?* 如果是一個(gè)單詞全部小寫(xiě)
?? ?* 如果是多個(gè)單詞,從第二個(gè)單詞首字母大寫(xiě)?
* D:常量
?? ?* 如果是一個(gè)單詞,所有字母大寫(xiě)
?? ?* 如果是多個(gè)單詞,所有的單詞大寫(xiě),用下劃線區(qū)分每個(gè)單詞?
###01.24_day01總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍。
###02.01_Java語(yǔ)言基礎(chǔ)(常量的概述和使用)(掌握)
* A:什么是常量
?? ?* 在程序執(zhí)行的過(guò)程中其值不可以發(fā)生改變?
* B:Java中常量的分類
?? ?* 字面值常量
?? ?* 自定義常量(面向?qū)ο蟛糠种v)?
* C:字面值常量的分類
?? ?* 字符串常量?? ?用雙引號(hào)括起來(lái)的內(nèi)容
?? ?* 整數(shù)常量?? ??? ?所有整數(shù)
?? ?* 小數(shù)常量?? ??? ?所有小數(shù)
?? ?* 字符常量?? ??? ?用單引號(hào)括起來(lái)的內(nèi)容,里面只能放單個(gè)數(shù)字,單個(gè)字母或單個(gè)符號(hào)
?? ?* 布爾常量?? ??? ?較為特殊,只有true和false
?? ?* 空常量?? ??? ? ? ?null(數(shù)組部分講解)
* D:案例演示
?? ?* 用輸出語(yǔ)句輸出各種常量。null不演示
?? ??? ??? ?
###02.02_Java語(yǔ)言基礎(chǔ)(進(jìn)制概述和二,八,十六進(jìn)制圖解)(了解)
* A:什么是進(jìn)制
?? ?* 進(jìn)制:就是進(jìn)位制,是人們規(guī)定的一種進(jìn)位方法。 對(duì)于任何一種進(jìn)制--X進(jìn)制,就表示某一位置上的數(shù)運(yùn)算時(shí)是逢X進(jìn)一位。二進(jìn)制就是逢二進(jìn)一,八進(jìn)制是逢八進(jìn)一,十進(jìn)制是逢十進(jìn)一,十六進(jìn)制是逢十六進(jìn)一。
?? ?* 例如一周有七天,七進(jìn)制,一年有十二個(gè)月,十二進(jìn)制
* B:十進(jìn)制的由來(lái)?
?? ?* 十進(jìn)制的由來(lái)是因?yàn)槿祟愑惺畟€(gè)手指?
* C:二進(jìn)制的由來(lái)
?? ?* 其實(shí)二進(jìn)制來(lái)源與中國(guó),請(qǐng)看史料記載
?? ?* 18世紀(jì)德國(guó)數(shù)理哲學(xué)大師萊布尼茲從他的傳教士朋友鮑威特寄給他的拉丁文譯本《易經(jīng)》中,讀到了八卦的組成結(jié)構(gòu),驚奇地發(fā)現(xiàn)其基本素?cái)?shù)(0)(1),即《易經(jīng)》的陰爻yao- -和__陽(yáng)爻,其進(jìn)位制就是二進(jìn)制,并認(rèn)為這是世界上數(shù)學(xué)進(jìn)制中最先進(jìn)的。20世紀(jì)被稱作第三次科技革命的重要標(biāo)志之一的計(jì)算機(jī)的發(fā)明與應(yīng)用,其運(yùn)算模式正是二進(jìn)制。它不但證明了萊布尼茲的原理是正確的,同時(shí)也證明了《易經(jīng)》數(shù)理學(xué)是很了不起的。
* D:八進(jìn)制的由來(lái)
?? ?* 任何數(shù)據(jù)在計(jì)算機(jī)中都是以二進(jìn)制的形式存在的。二進(jìn)制早期由電信號(hào)開(kāi)關(guān)演變而來(lái)。一個(gè)整數(shù)在內(nèi)存中一樣也是二進(jìn)制的,但是使用一大串的1或者0組成的數(shù)值進(jìn)行使用很麻煩。?
?? ?* 所以就想把一大串縮短點(diǎn),將二進(jìn)制中的三位用一位表示。這三位可以取到的最大值就是7.超過(guò)7就進(jìn)位了,這就是八進(jìn)制。?
* E:十六進(jìn)制的由來(lái)
?? ?* 但是對(duì)于過(guò)長(zhǎng)的二進(jìn)制變成八進(jìn)制還是較長(zhǎng),所以出現(xiàn)的用4個(gè)二進(jìn)制位表示一位的情況,四個(gè)二進(jìn)制位最大是15,這就是十六進(jìn)制。
* F:不同進(jìn)制表現(xiàn)同一個(gè)數(shù)據(jù)的形式特點(diǎn)
?? ?* 進(jìn)制越大,表現(xiàn)形式越短
?
###02.03_Java語(yǔ)言基礎(chǔ)(不同進(jìn)制數(shù)據(jù)的表現(xiàn)形式)(掌握)
* A:二進(jìn)制的數(shù)據(jù)表現(xiàn)形式
?? ?* 由0,1組成。以0b(b可以大寫(xiě)也可以小寫(xiě))開(kāi)頭(JDK1.7版本可以表示二進(jìn)制了)
* B:八進(jìn)制的數(shù)據(jù)表現(xiàn)形式
?? ?* 由0,1,…7組成。以0開(kāi)頭
* C:十進(jìn)制的數(shù)據(jù)表現(xiàn)形式
?? ?* 由0,1,…9組成。整數(shù)默認(rèn)是十進(jìn)制的?
* D:十六進(jìn)制的數(shù)據(jù)表現(xiàn)形式
?? ?* 由0,1,…9,a,b,c,d,e,f(大小寫(xiě)均可)。以0x開(kāi)頭?
* E:案例演示
?? ?* 輸出不同進(jìn)制表現(xiàn)100的數(shù)據(jù)。
?? ?* 0b100
?? ?* 0100
?? ?* 100
?? ?* 0x100
?? ??? ?
###02.04_Java語(yǔ)言基礎(chǔ)(任意進(jìn)制到十進(jìn)制的轉(zhuǎn)換圖解)(了解)
* A:任意進(jìn)制到十進(jìn)制的轉(zhuǎn)換原理
?? ?* 系數(shù):就是每一位上的數(shù)據(jù)。
?? ?* 基數(shù):X進(jìn)制,基數(shù)就是X。
?? ?* 權(quán):在右邊,從0開(kāi)始編號(hào),對(duì)應(yīng)位上的編號(hào)即為該位的權(quán)。
?? ?* 結(jié)果:把系數(shù)*基數(shù)的權(quán)次冪相加即可。?
* B:畫(huà)圖練習(xí)
?? ?* 二進(jìn)制--十進(jìn)制
?? ?* 八進(jìn)制--十進(jìn)制
?? ?* 十六進(jìn)制--十進(jìn)制
###02.05_Java語(yǔ)言基礎(chǔ)(十進(jìn)制到任意進(jìn)制的轉(zhuǎn)換圖解)(了解)
* A:十進(jìn)制到任意進(jìn)制的轉(zhuǎn)換原理
?? ?* 除積倒取余?
* B:畫(huà)圖練習(xí)
?? ?* 十進(jìn)制--二進(jìn)制
?? ?* 十進(jìn)制--八進(jìn)制
?? ?* 十進(jìn)制--十六進(jìn)制
?? ?
###02.06_Java語(yǔ)言基礎(chǔ)(快速的進(jìn)制轉(zhuǎn)換法)(了解)
* A:8421碼及特點(diǎn)
?? ?* 8421碼是中國(guó)大陸的叫法,8421碼是BCD代碼中最常用的一種。在這種編碼方式中每一位二值代碼的1都是代表一個(gè)固定數(shù)值,把每一位的1代表的十進(jìn)制數(shù)加起來(lái),得到的結(jié)果就是它所代表的十進(jìn)制數(shù)碼。?
* B:通過(guò)8421碼的方式進(jìn)行二進(jìn)制和十進(jìn)制的相互轉(zhuǎn)換
* C:二進(jìn)制到八進(jìn)制的簡(jiǎn)易方式
* D:二進(jìn)制到十六進(jìn)制的簡(jiǎn)易方式
###02.07_Java語(yǔ)言基礎(chǔ)(原碼反碼補(bǔ)碼)(了解)
* A:為什么要學(xué)習(xí)原碼反碼補(bǔ)碼?
?? ?* 后面要學(xué)習(xí)強(qiáng)制類型轉(zhuǎn)換,如果不知道有原反補(bǔ)會(huì)看不懂結(jié)果?
* B:有符號(hào)數(shù)據(jù)表示法的幾種方式
?? ?* 原碼
?? ??? ?* 就是二進(jìn)制定點(diǎn)表示法,即最高位為符號(hào)位,“0”表示正,“1”表示負(fù),其余位表示數(shù)值的大小。
?? ??? ?* 通過(guò)一個(gè)字節(jié),也就是8個(gè)二進(jìn)制位表示+7和-7
?? ??? ?* 0(符號(hào)位)?? ?0000111
?? ??? ?* 1(符號(hào)位)?? ?0000111
?? ?* 反碼
?? ??? ?* 正數(shù)的反碼與其原碼相同;負(fù)數(shù)的反碼是對(duì)其原碼逐位取反,但符號(hào)位除外。
?? ?* 補(bǔ)碼
?? ??? ?* 正數(shù)的補(bǔ)碼與其原碼相同;負(fù)數(shù)的補(bǔ)碼是在其反碼的末位加1。?
###02.08_Java語(yǔ)言基礎(chǔ)(原碼反碼補(bǔ)碼的練習(xí))(了解)
* A:已知原碼求補(bǔ)碼
?? ?* 0b10110100?
* B:已知補(bǔ)碼求原碼
?? ?* 0b11101110?
?? ?
###02.09_Java語(yǔ)言基礎(chǔ)(變量的概述及格式)(掌握)
* A:什么是變量
?? ?* 在程序執(zhí)行的過(guò)程中,在某個(gè)范圍內(nèi)其值可以發(fā)生改變的量
* B:變量的定義格式
?? ?* 數(shù)據(jù)類型 變量名 = 變量值;
* C:為什么要定義變量
?? ?* 用來(lái)不斷的存放同一類型的常量,并可以重復(fù)使用?
###02.10_Java語(yǔ)言基礎(chǔ)(數(shù)據(jù)類型的概述和分類)(掌握)
* A:為什么有數(shù)據(jù)類型
?? ?* Java語(yǔ)言是強(qiáng)類型語(yǔ)言,對(duì)于每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類型,在內(nèi)存中分配了不同大小的內(nèi)存空間
* B:Java中數(shù)據(jù)類型的分類
?? ?* 基本數(shù)據(jù)類型
?? ?* 引用數(shù)據(jù)類型?
?? ??? ?* 面向?qū)ο蟛糠种v解?
* C:基本數(shù)據(jù)類型分類(4類8種)?
?? ?* 整數(shù)型
?? ??? ?* byte 占一個(gè)字節(jié) ?-128到127
?? ??? ?* short 占兩個(gè)字 ?-2^15~2^15-1
?? ??? ?* int 占四個(gè)字節(jié) -2^31~2^31-1
?? ??? ?* long 占八個(gè)字節(jié) -2^63~2^63-1
?? ?* 浮點(diǎn)型
?? ??? ?* float 占四個(gè)字節(jié) -3.403E38~3.403E38 ?單精度
?? ??? ?* double 占八個(gè)字節(jié)-1.798E308~1.798E308 雙精度
?? ?* 字符型
?? ??? ?* char 占兩個(gè)字節(jié) 0~65535
?? ?* 布爾型
?? ??? ?* boolean ??
?? ??? ??? ?* boolean理論上是占八分之一個(gè)字節(jié),因?yàn)橐粋€(gè)開(kāi)關(guān)就可以決定是true和false了,但是java中boolean類型沒(méi)有明確指定他的大小 ? ? ?
###02.11_Java語(yǔ)言基礎(chǔ)(定義不同數(shù)據(jù)類型的變量)(掌握)
* A:案例演示
?? ?* 定義不同基本數(shù)據(jù)類型的變量,并輸出
?? ?* 賦值時(shí)候注意float類型,long類型
###02.12_Java語(yǔ)言基礎(chǔ)(使用變量的注意事項(xiàng))(掌握)
* A:案例演示
?? ?* a:作用域問(wèn)題
?? ??? ?* 同一個(gè)區(qū)域不能使用相同的變量名?
?? ?* b:初始化值問(wèn)題
?? ??? ?* 局部變量在使用之前必須賦值?
?? ?* c:一條語(yǔ)句可以定義幾個(gè)變量
?? ??? ?* int a,b,c...;?
###02.13_Java語(yǔ)言基礎(chǔ)(數(shù)據(jù)類型轉(zhuǎn)換之隱式轉(zhuǎn)換)(掌握)
* A:案例演示
?? ?* a:int + int
?? ?* b:byte + int?
* B:Java中的默認(rèn)轉(zhuǎn)換規(guī)則
?? ?* 取值范圍小的數(shù)據(jù)類型與取值范圍大的數(shù)據(jù)類型進(jìn)行運(yùn)算,會(huì)先將小的數(shù)據(jù)類型提升為大的,再運(yùn)算?
* C:畫(huà)圖解釋byte+int類型的問(wèn)題
###02.14_Java語(yǔ)言基礎(chǔ)(數(shù)據(jù)類型轉(zhuǎn)換之強(qiáng)制轉(zhuǎn)換)(掌握)
* A:強(qiáng)制轉(zhuǎn)換問(wèn)題
?? ?* int a = 10;
?? ?* byte b = 20;?
?? ?* b = a + b;
* B:強(qiáng)制轉(zhuǎn)換的格式
?? ?* b = (byte)(a + b);?
* C:強(qiáng)制轉(zhuǎn)換的注意事項(xiàng)
?? ?* 如果超出了被賦值的數(shù)據(jù)類型的取值范圍得到的結(jié)果會(huì)與你期望的結(jié)果不同?
###02.15_Java語(yǔ)言基礎(chǔ)(面試題之變量相加和常量相加的區(qū)別)(掌握)
* A:案例演示
?? ?* 面試題:看下面的程序是否有問(wèn)題,如果有問(wèn)題,請(qǐng)指出并說(shuō)明理由。
?? ?* byte b1 = 3;
?? ?* byte b2 = 4;
?? ?* byte b3 = b1 + b2;
?? ??? ?* 從兩方面去回答這個(gè)題
?? ??? ?* b1和b2是兩個(gè)變量,變量里面存儲(chǔ)的值都是變化的,所以在程序運(yùn)行中JVM是無(wú)法判斷里面具體的值
?? ??? ?* byte類型的變量在進(jìn)行運(yùn)算的時(shí)候,會(huì)自動(dòng)類型提升為int類型?
?? ?* byte b4 = 3 + 4;
?? ??? ?* 3和4都是常量,java有常量?jī)?yōu)化機(jī)制,就是在編譯的的時(shí)候直接把3和4的結(jié)果賦值給b4了?
?? ??? ?
###02.16_Java語(yǔ)言基礎(chǔ)(long與float的取值范圍誰(shuí)大誰(shuí)小)(了解)
* 進(jìn)行混合運(yùn)算的時(shí)候,byte,short,char不會(huì)相互轉(zhuǎn)換,都會(huì)自動(dòng)類型提升為int類型,其他類型進(jìn)行混合運(yùn)算的是小的數(shù)據(jù)類型提升為大的
?? ?* byte,short,char -- int -- long -- float -- double
?? ?
?? ?* long: 8個(gè)字節(jié)
?? ?* float:4個(gè)字節(jié)
?? ?* IEEE754
?? ?* 4個(gè)字節(jié)是32個(gè)二進(jìn)制位
?? ?* 1位是符號(hào)位
?? ?* 8位是指數(shù)位
?? ?* 00000000 ? 11111111
?? ?* 0到255
?? ?* 1到254
?? ?* -126到127
?? ?* 23位是尾數(shù)位
?? ?* 每個(gè)指數(shù)位減去127
?? ?
?? ?* A:它們底層的存儲(chǔ)結(jié)構(gòu)不同。
?? ?* B:float表示的數(shù)據(jù)范圍比long的范圍要大
?? ??? ?* long:2^63-1
?? ??? ?* float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
###02.17_Java語(yǔ)言基礎(chǔ)(字符和字符串參與運(yùn)算)(掌握)
* A:案例演示
?? ?* System.out.println('a');
?? ?* System.out.println('a'+1);
?? ?
?? ?* 通過(guò)看結(jié)果知道'a'的值是多少,由此引出ASCII碼表
* B:ASCII碼表的概述
?? ?* 記住三個(gè)值:
?? ??? ?* '0' ?48
?? ??? ?* 'A' ?65
?? ??? ?* 'a' ?97
* C:案例演示
?? ?* System.out.println("hello"+'a'+1);
?? ?* System.out.println('a'+1+"hello");
* D:+在有字符串參與中被稱為字符串連接符
?? ?* System.out.println("5+5="+5+5);
?? ?* System.out.println(5+5+"=5+5");
?? ?
###02.18_Java語(yǔ)言基礎(chǔ)(char數(shù)據(jù)類型)(掌握)
* A:char c = 97;?? ?0到65535
* B:Java語(yǔ)言中的字符char可以存儲(chǔ)一個(gè)中文漢字嗎?為什么呢?
?? ?* 可以。因?yàn)镴ava語(yǔ)言采用的是Unicode編碼。Unicode編碼中的每個(gè)字符占用兩個(gè)字節(jié)。中文也是占的兩個(gè)字節(jié)
?? ?* 所以,Java中的字符可以存儲(chǔ)一個(gè)中文漢字
###02.19_Java語(yǔ)言基礎(chǔ)(算術(shù)運(yùn)算符的基本用法)(掌握)
* A:什么是運(yùn)算符
?? ?* 就是對(duì)常量和變量進(jìn)行操作的符號(hào)。
* B:運(yùn)算符的分類
?? ?* 算術(shù)運(yùn)算符,賦值運(yùn)算符,比較(關(guān)系或條件)運(yùn)算符,邏輯運(yùn)算符,位運(yùn)算符,三目(元)運(yùn)算符?
* C:算數(shù)運(yùn)算符有哪些
?? ?* +,-,*,/,%,++,--?
* D:注意事項(xiàng):
?? ?* a:+號(hào)在java中有三種作用,代表正號(hào),做加法運(yùn)算,字符串的連接符
?? ?* b:整數(shù)相除只能得到整數(shù)。如果想得到小數(shù),必須把數(shù)據(jù)變化為浮點(diǎn)數(shù)類型
?? ?* c:/獲取的是除法操作的商,%獲取的是除法操作的余數(shù)
?? ?* %運(yùn)算符
?? ??? ?* 當(dāng)左邊的絕對(duì)值小于右邊絕對(duì)值時(shí),結(jié)果是左邊
?? ??? ?* 當(dāng)左邊的絕對(duì)值等于右邊或是右邊的倍數(shù)時(shí),結(jié)果是0
?? ??? ?* 當(dāng)左邊的絕對(duì)值大于右邊絕對(duì)值時(shí),結(jié)果是余數(shù)
?? ??? ?* %運(yùn)算符結(jié)果的符號(hào)只和左邊有關(guān)系,與右邊無(wú)關(guān)
?? ??? ?* 任何一個(gè)正整數(shù)%2結(jié)果不是0就是1可以用來(lái)當(dāng)作切換條件?
###02.20_Java語(yǔ)言基礎(chǔ)(算術(shù)運(yùn)算符++和--的用法)(掌握)
* A:++,--運(yùn)算符的作用
?? ?* 自加(++)自減(--)運(yùn)算
?? ?* ++:自加。對(duì)原有的數(shù)據(jù)進(jìn)行+1
?? ?* --:自減。對(duì)原有的數(shù)據(jù)進(jìn)行-1
* B:案例演示
?? ?* a:單獨(dú)使用:
?? ??? ?* 放在操作數(shù)的前面和后面效果一樣。(這種用法是我們比較常見(jiàn)的)
?? ?* b:參與運(yùn)算使用:
?? ??? ?* 放在操作數(shù)的前面,先自增或者自減,然后再參與運(yùn)算。
?? ??? ?* 放在操作數(shù)的后面,先參與運(yùn)算,再自增或者自減。
###02.21_Java語(yǔ)言基礎(chǔ)(算術(shù)運(yùn)算符++和--的練習(xí))(掌握)
* A:案例演示
?? ?* 請(qǐng)分別計(jì)算出a,b,c的值?
?? ?*?
?? ??? ??? ?int a = 10;
?? ??? ??? ?int b = 10;
?? ??? ??? ?int c = 10;
?? ??? ?
?? ??? ??? ?a = b++;?? ??? ?
?? ??? ??? ?c = --a;?? ??? ??? ?
?? ??? ??? ?b = ++a;?? ??? ?
?? ??? ??? ?a = c--;?? ??? ??? ?
?? ?
* B:案例演示
?? ?* 請(qǐng)分別計(jì)算出x,y的值?
?? ?
?? ??? ??? ?int x = 4;
?? ??? ??? ?int y = (x++)+(++x)+(x*10);
* C:面試題
?? ?* byte b = 10;
?? ?* b++;
?? ?* b = b + 1;
?? ?* 問(wèn)哪句會(huì)報(bào)錯(cuò),為什么?
###02.22_Java語(yǔ)言基礎(chǔ)(賦值運(yùn)算符的基本用法)(掌握)
* A:賦值運(yùn)算符有哪些
?? ?* a:基本的賦值運(yùn)算符:=
?? ??? ?* 把=右邊的數(shù)據(jù)賦值給左邊。
?? ??? ?
?? ?* b:擴(kuò)展的賦值運(yùn)算符:+=,-=,*=,/=,%=
?? ??? ?* += 把左邊和右邊做加法,然后賦值給左邊。
?? ?
###02.23_Java語(yǔ)言基礎(chǔ)(賦值運(yùn)算符的面試題)(掌握)
* A:案例演示
?? ?* 面試題:看下面的程序是否有問(wèn)題,如果有問(wèn)題,請(qǐng)指出并說(shuō)明理由。
?? ?* short s=1;s = s+1;
?? ?* short s=1;s+=1;
###02.24_Java語(yǔ)言基礎(chǔ)(關(guān)系運(yùn)算符的基本用法及其注意事項(xiàng))(掌握)
* A:關(guān)系運(yùn)算符有哪些(比較運(yùn)算符,條件運(yùn)算符)
?? ?* ==,!=,>,>=,<,<=?
* 注意事項(xiàng):
?? ?* 無(wú)論你的操作是簡(jiǎn)單還是復(fù)雜,結(jié)果是boolean類型。
?? ?
?? ?* "=="不能寫(xiě)成"="。
###02.25_day02總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍
###03.01_Java語(yǔ)言基礎(chǔ)(邏輯運(yùn)算符的基本用法)(掌握)
* A:邏輯運(yùn)算符有哪些
?? ?* &,|,^,!
?? ?* &&,||?
* B:案例演示
* 邏輯運(yùn)算符的基本用法
?? ?
* 注意事項(xiàng):
?? ?* a:邏輯運(yùn)算符一般用于連接boolean類型的表達(dá)式或者值。
?? ?* b:表達(dá)式:就是用運(yùn)算符把常量或者變量連接起來(lái)的符合java語(yǔ)法的式子。
?? ??? ?* 算術(shù)表達(dá)式:a + b
?? ??? ?* 比較表達(dá)式:a == b(條件表達(dá)式)
* C:結(jié)論:
* &邏輯與:有false則false。
* |邏輯或:有true則true。
* ^邏輯異或:相同為false,不同為true。
* !邏輯非:非false則true,非true則false。
?? ?* 特點(diǎn):偶數(shù)個(gè)不改變本身。
###03.02_Java語(yǔ)言基礎(chǔ)(邏輯運(yùn)算符&&和&的區(qū)別)(掌握)
* A:案例演示
?? ?* &&和&的區(qū)別?
?? ??? ?* a:最終結(jié)果一樣。
?? ??? ?* b:&&具有短路效果。左邊是false,右邊不執(zhí)行。
?? ??? ?* ?? ?&是無(wú)論左邊是false還是true,右邊都會(huì)執(zhí)行
* B:同理||和|的區(qū)別?(學(xué)生自學(xué))
* C:開(kāi)發(fā)中常用誰(shuí)?
?? ?* &&,||,!
###03.03_Java語(yǔ)言基礎(chǔ)(位運(yùn)算符的基本用法1)(了解)
* A:位運(yùn)算符有哪些
?? ?* &,|,^,~ ,>>,>>>,<<
* B:案例演示
?? ?* 位運(yùn)算符的基本用法1
?? ?
?? ?* &,|,^,~ 的用法
?? ?* &:有0則0
?? ?* |:有1則1
?? ?* ^:相同則0,不同則1
?? ?* ~:按位取反
###03.04_Java語(yǔ)言基礎(chǔ)(位異或運(yùn)算符的特點(diǎn)及面試題)(掌握)
* A:案例演示
?? ?* 位異或運(yùn)算符的特點(diǎn)
?? ?* ^的特點(diǎn):一個(gè)數(shù)據(jù)對(duì)另一個(gè)數(shù)據(jù)位異或兩次,該數(shù)本身不變。
?? ?
* B:面試題:
?? ?* 請(qǐng)自己實(shí)現(xiàn)兩個(gè)整數(shù)變量的交換
?? ?* 注意:以后講課的過(guò)程中,我沒(méi)有明確指定數(shù)據(jù)的類型,默認(rèn)int類型。
###03.05_Java語(yǔ)言基礎(chǔ)(位運(yùn)算符的基本用法2及面試題)(了解)
* A:案例演示 >>,>>>,<<的用法:
?? ?* ?<<:左移?? ?左邊最高位丟棄,右邊補(bǔ)齊0
?? ?* ?>>:右移?? ?最高位是0,左邊補(bǔ)齊0;最高為是1,左邊補(bǔ)齊1
?? ?* ?>>>:無(wú)符號(hào)右移 無(wú)論最高位是0還是1,左邊補(bǔ)齊0
?? ?* ?最有效率的算出2 * 8的結(jié)果
###03.06_Java語(yǔ)言基礎(chǔ)(三元運(yùn)算符的基本用法)(掌握)
* A:三元運(yùn)算符的格式
* ?? ??? ?(關(guān)系表達(dá)式) ? 表達(dá)式1 : 表達(dá)式2;
* B:三元運(yùn)算符的執(zhí)行流程?
* C:案例演示
?? ?* 獲取兩個(gè)數(shù)中的最大值
###03.07_Java語(yǔ)言基礎(chǔ)(三元運(yùn)算符的練習(xí))(掌握)
* A:案例演示
?? ?* 比較兩個(gè)整數(shù)是否相同
* B:案例演示
?? ?* 獲取三個(gè)整數(shù)中的最大值
###03.08_Java語(yǔ)言基礎(chǔ)(鍵盤(pán)錄入的基本格式講解)(掌握)
* A:為什么要使用鍵盤(pán)錄入數(shù)據(jù)
?? ?* a:為了讓程序的數(shù)據(jù)更符合開(kāi)發(fā)的數(shù)據(jù)
?? ?* b:讓程序更靈活一下
* B:如何實(shí)現(xiàn)鍵盤(pán)錄入呢?
?? ?* 先照格式來(lái)。
?? ?* a:導(dǎo)包
?? ??? ?* 格式:
?? ??? ??? ?* import java.util.Scanner;?
?? ??? ?* 位置:
?? ??? ??? ?* 在class上面。
?? ?* b:創(chuàng)建鍵盤(pán)錄入對(duì)象
?? ??? ?* 格式:
?? ??? ??? ?* Scanner sc = new Scanner(System.in);
?? ?* c:通過(guò)對(duì)象獲取數(shù)據(jù)?? ?
?? ??? ?* 格式:
?? ??? ??? ?* int x = sc.nextInt();
* C:案例演示
?? ?* 鍵盤(pán)錄入1個(gè)整數(shù),并輸出到控制臺(tái)。
?? ?* 鍵盤(pán)錄入2個(gè)整數(shù),并輸出到控制臺(tái)。
###03.09_Java語(yǔ)言基礎(chǔ)(鍵盤(pán)錄入的練習(xí)1)(掌握)
* A:案例演示
?? ?* 鍵盤(pán)錄入練習(xí):鍵盤(pán)錄入兩個(gè)數(shù)據(jù),并對(duì)這兩個(gè)數(shù)據(jù)求和,輸出其結(jié)果
* B:案例演示
?? ?* 鍵盤(pán)錄入練習(xí):鍵盤(pán)錄入兩個(gè)數(shù)據(jù),獲取這兩個(gè)數(shù)據(jù)中的最大值
###03.10_Java語(yǔ)言基礎(chǔ)(鍵盤(pán)錄入的練習(xí)2)(掌握)
* A:案例演示
?? ?* 鍵盤(pán)錄入練習(xí):鍵盤(pán)錄入兩個(gè)數(shù)據(jù),比較這兩個(gè)數(shù)據(jù)是否相等
* B:案例演示
?? ?* 鍵盤(pán)錄入練習(xí):鍵盤(pán)錄入三個(gè)數(shù)據(jù),獲取這三個(gè)數(shù)據(jù)中的最大值
###03.11_Java語(yǔ)言基礎(chǔ)(順序結(jié)構(gòu)語(yǔ)句)(了解)
* A:什么是流程控制語(yǔ)句
?? ?* 流程控制語(yǔ)句:可以控制程序的執(zhí)行流程。
* B:流程控制語(yǔ)句的分類
?? ?* 順序結(jié)構(gòu)
?? ?* 選擇結(jié)構(gòu)
?? ?* 循環(huán)結(jié)構(gòu)
* C:執(zhí)行流程:
?? ?* 從上往下,依次執(zhí)行。
* D:案例演示
?? ?* 輸出幾句話看效果即可
###03.12_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)if語(yǔ)句格式1及其使用)(掌握)
* A:選擇結(jié)構(gòu)的分類
?? ?* if語(yǔ)句
?? ?* switch語(yǔ)句
* B:if語(yǔ)句有幾種格式
?? ?* 格式1
?? ?* 格式2
?? ?* 格式3
* C:if語(yǔ)句的格式1
*?
?? ??? ?if(比較表達(dá)式) {
?? ??? ??? ?語(yǔ)句體;
?? ??? ?}
* D:執(zhí)行流程:
?? ?* 先計(jì)算比較表達(dá)式的值,看其返回值是true還是false。
?? ?* 如果是true,就執(zhí)行語(yǔ)句體;
?? ?* 如果是false,就不執(zhí)行語(yǔ)句體;
###03.13_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)if語(yǔ)句注意事項(xiàng))(掌握)
* A:案例演示
?? ?* a:比較表達(dá)式無(wú)論簡(jiǎn)單還是復(fù)雜,結(jié)果必須是boolean類型
?? ?* b:if語(yǔ)句控制的語(yǔ)句體如果是一條語(yǔ)句,大括號(hào)可以省略;
?? ? ?* 如果是多條語(yǔ)句,就不能省略。建議永遠(yuǎn)不要省略。
?? ?* c:一般來(lái)說(shuō):有左大括號(hào)就沒(méi)有分號(hào),有分號(hào)就沒(méi)有左大括號(hào)
###03.14_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)if語(yǔ)句格式2及其使用)(掌握)
* A:if語(yǔ)句的格式2
*?
?? ??? ?if(比較表達(dá)式) {
?? ??? ??? ?語(yǔ)句體1;
?? ??? ?}else {
?? ??? ??? ?語(yǔ)句體2;
?? ??? ?}
* B:執(zhí)行流程:
?? ?* 首先計(jì)算比較表達(dá)式的值,看其返回值是true還是false。
?? ?* 如果是true,就執(zhí)行語(yǔ)句體1;
?? ?* 如果是false,就執(zhí)行語(yǔ)句體2;
* C:案例演示
?? ?* a:獲取兩個(gè)數(shù)據(jù)中較大的值
?? ?* b:判斷一個(gè)數(shù)據(jù)是奇數(shù)還是偶數(shù),并輸出是奇數(shù)還是偶數(shù)
?? ?* 注意事項(xiàng):else后面是沒(méi)有比較表達(dá)式的,只有if后面有。
###03.15_Java語(yǔ)言基礎(chǔ)(if語(yǔ)句的格式2和三元的相互轉(zhuǎn)換問(wèn)題)(掌握)
* A:案例演示
?? ?* if語(yǔ)句和三元運(yùn)算符完成同一個(gè)效果
* B:案例演示
?? ?* if語(yǔ)句和三元運(yùn)算符的區(qū)別
?? ?
?? ?* 三元運(yùn)算符實(shí)現(xiàn)的,都可以采用if語(yǔ)句實(shí)現(xiàn)。反之不成立。
?? ?
?? ?* 什么時(shí)候if語(yǔ)句實(shí)現(xiàn)不能用三元改進(jìn)呢?
?? ??? ?* 當(dāng)if語(yǔ)句控制的操作是一個(gè)輸出語(yǔ)句的時(shí)候就不能。
?? ??? ?* 為什么呢?因?yàn)槿\(yùn)算符是一個(gè)運(yùn)算符,運(yùn)算符操作完畢就應(yīng)該有一個(gè)結(jié)果,而不是一個(gè)輸出。
###03.16_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)if語(yǔ)句格式3及其使用)(掌握)
* A:if語(yǔ)句的格式3:
*?
?? ??? ?if(比較表達(dá)式1) {
?? ??? ??? ?語(yǔ)句體1;
?? ??? ?}else if(比較表達(dá)式2) {
?? ??? ??? ?語(yǔ)句體2;
?? ??? ?}else if(比較表達(dá)式3) {
?? ??? ??? ?語(yǔ)句體3;
?? ??? ?}
?? ??? ?...
?? ??? ?else {
?? ??? ??? ?語(yǔ)句體n+1;
?? ??? ?}
* B:執(zhí)行流程:
?? ?* 首先計(jì)算比較表達(dá)式1看其返回值是true還是false,
?? ?* 如果是true,就執(zhí)行語(yǔ)句體1,if語(yǔ)句結(jié)束。
?? ?* 如果是false,接著計(jì)算比較表達(dá)式2看其返回值是true還是false,
?? ?
?? ?* 如果是true,就執(zhí)行語(yǔ)句體2,if語(yǔ)句結(jié)束。
?? ?* 如果是false,接著計(jì)算比較表達(dá)式3看其返回值是true還是false,
?? ?
?? ?* 如果都是false,就執(zhí)行語(yǔ)句體n+1。
* C:注意事項(xiàng):最后一個(gè)else可以省略,但是建議不要省略,可以對(duì)范圍外的錯(cuò)誤值提示?
###03.17_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)if語(yǔ)句格式3練習(xí))(掌握)
* A:練習(xí)1
*?
?? ??? ?需求:鍵盤(pán)錄入一個(gè)成績(jī),判斷并輸出成績(jī)的等級(jí)。
?? ??? ?90-100 優(yōu)
?? ??? ?80-89 ?良
?? ??? ?70-79 ?中
?? ??? ?60-69 ?及
?? ??? ?0-59 ? 差
?? ??? ?
* B:練習(xí)2
?? ?* 需求:
?? ??? ?* 鍵盤(pán)錄入x的值,計(jì)算出y的并輸出。
?? ??? ?
?? ??? ?* x>=3?? ?y = 2 * x + 1;
?? ??? ?* -1<x<3?? ?y = 2 * x;
?? ??? ?* x<=-1?? ?y = 2 * x - 1;
###03.18_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)if語(yǔ)句的嵌套使用)(掌握)
* A:案例演示
?? ?* 需求:獲取三個(gè)數(shù)據(jù)中的最大值
?? ?* if語(yǔ)句的嵌套使用。
###03.19_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)switch語(yǔ)句的格式及其解釋)(掌握)
* A:switch語(yǔ)句的格式
*?
?? ??? ?switch(表達(dá)式) {
?? ??? ? ? ? ?case 值1:
?? ??? ??? ??? ?語(yǔ)句體1;
?? ??? ??? ??? ?break;
?? ??? ??? ? ? ?case 值2:
?? ??? ??? ??? ?語(yǔ)句體2;
?? ??? ??? ??? ?break;
?? ??? ??? ? ? ?…
?? ??? ??? ? ? ?default:?? ?
?? ??? ??? ??? ?語(yǔ)句體n+1;
?? ??? ??? ??? ?break;
?? ? ? ?}
?
* B:switch語(yǔ)句的格式解釋
* C:面試題
?? ?* byte可以作為switch的表達(dá)式嗎?
?? ?* long可以作為switch的表達(dá)式嗎?
?? ?* String可以作為switch的表達(dá)式嗎?
* C:執(zhí)行流程
?? ?* 先計(jì)算表達(dá)式的值
?? ?* 然后和case后面的匹配,如果有就執(zhí)行對(duì)應(yīng)的語(yǔ)句,否則執(zhí)行default控制的語(yǔ)句
###03.20_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)switch語(yǔ)句的練習(xí))(掌握)
* A:整數(shù)(給定一個(gè)值,輸出對(duì)應(yīng)星期幾)
###03.21_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)switch語(yǔ)句的注意事項(xiàng))(掌握)
* A:案例演示
?? ?* a:case后面只能是常量,不能是變量,而且,多個(gè)case后面的值不能出現(xiàn)相同的
?? ?* b:default可以省略嗎?
?? ??? ?* 可以省略,但是不建議,因?yàn)樗淖饔檬菍?duì)不正確的情況給出提示。
?? ??? ?* 特殊情況:
?? ??? ??? ?* case就可以把值固定。
?? ??? ??? ?* A,B,C,D
?? ?* c:break可以省略嗎?
?? ??? ?* 最后一個(gè)可以省略,其他最好不要省略
?? ??? ?* 會(huì)出現(xiàn)一個(gè)現(xiàn)象:case穿透。
?? ??? ?* 最終我們建議不要省略
?? ?* d:default一定要在最后嗎?
?? ??? ?* 不是,可以在任意位置。但是建議在最后。
?? ?* e:switch語(yǔ)句的結(jié)束條件
?? ??? ?* a:遇到break就結(jié)束了
?? ??? ?* b:執(zhí)行到switch的右大括號(hào)就結(jié)束了
###03.22_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)switch語(yǔ)句練習(xí))(掌握)
* A:看程序?qū)懡Y(jié)果:
*?
?? ??? ?int x = 2;
?? ??? ?int y = 3;
?? ??? ?switch(x){
?? ??? ??? ?default:
?? ??? ??? ??? ?y++;
?? ??? ??? ??? ?break;
?? ??? ??? ?case 3:
?? ??? ??? ??? ?y++;
?? ??? ??? ?case 4:
?? ??? ??? ??? ?y++;
?? ??? ?}
?? ??? ?System.out.println("y="+y);
?? ?
* B:看程序?qū)懡Y(jié)果:
*?
?? ??? ?int x = 2;
?? ??? ?int y = 3;
?? ??? ?switch(x){
?? ??? ??? ?default:
?? ??? ??? ??? ?y++;
?? ??? ??? ?case 3:
?? ??? ??? ??? ?y++;
?? ??? ??? ?case 4:
?? ??? ??? ??? ?y++;
?? ??? ?}
?? ??? ?System.out.println("y="+y);
###03.23_Java語(yǔ)言基礎(chǔ)(選擇結(jié)構(gòu)if語(yǔ)句和switch語(yǔ)句的區(qū)別)(掌握)
* A:總結(jié)switch語(yǔ)句和if語(yǔ)句的各自使用場(chǎng)景
* ?? ?switch建議判斷固定值的時(shí)候用
* ?? ?if建議判斷區(qū)間或范圍的時(shí)候用
* B:案例演示
?? ?* 分別用switch語(yǔ)句和if語(yǔ)句實(shí)現(xiàn)下列需求:
?? ??? ?* 鍵盤(pán)錄入月份,輸出對(duì)應(yīng)的季節(jié)
###03.24_day03總結(jié)
把今天的知識(shí)點(diǎn)總結(jié)一遍。
###04.01_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)概述和for語(yǔ)句的格式及其使用)
* A:循環(huán)結(jié)構(gòu)的分類
?? ?* for,while,do...while?
* B:循環(huán)結(jié)構(gòu)for語(yǔ)句的格式:
*?
?? ??? ?for(初始化表達(dá)式;條件表達(dá)式;循環(huán)后的操作表達(dá)式) {
?? ??? ??? ?循環(huán)體;
?? ??? ?}
* C執(zhí)行流程:
?? ?* a:執(zhí)行初始化語(yǔ)句
?? ?* b:執(zhí)行判斷條件語(yǔ)句,看其返回值是true還是false
?? ??? ?* 如果是true,就繼續(xù)執(zhí)行
?? ??? ?* 如果是false,就結(jié)束循環(huán)
?? ?* c:執(zhí)行循環(huán)體語(yǔ)句;
?? ?* d:執(zhí)行循環(huán)后的操作表達(dá)式
?? ?* e:回到B繼續(xù)。
* D:案例演示
?? ?* 在控制臺(tái)輸出10次"helloworld"
?? ?
###04.02_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)for語(yǔ)句的練習(xí)之獲取數(shù)據(jù))
* A:案例演示
?? ?* 需求:請(qǐng)?jiān)诳刂婆_(tái)輸出數(shù)據(jù)1-10
?? ?* 需求:請(qǐng)?jiān)诳刂婆_(tái)輸出數(shù)據(jù)10-1
* B:注意事項(xiàng)
?? ?* a:判斷條件語(yǔ)句無(wú)論簡(jiǎn)單還是復(fù)雜結(jié)果是boolean類型。
?? ?* b:循環(huán)體語(yǔ)句如果是一條語(yǔ)句,大括號(hào)可以省略;如果是多條語(yǔ)句,大括號(hào)不能省略。建議永遠(yuǎn)不要省略。
?? ?* c:一般來(lái)說(shuō):有左大括號(hào)就沒(méi)有分號(hào),有分號(hào)就沒(méi)有左大括號(hào)
###04.03_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)for語(yǔ)句的練習(xí)之求和思想)
* A:案例演示
?? ?* 需求:求出1-10之間數(shù)據(jù)之和
* B:學(xué)生練習(xí)
?? ?* 需求:求出1-100之間偶數(shù)和
?? ?* 需求:求出1-100之間奇數(shù)和
###04.04_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)for語(yǔ)句的練習(xí)之水仙花)
* A:案例演示
?? ?* 需求:在控制臺(tái)輸出所有的”水仙花數(shù)”
?? ?* 所謂的水仙花數(shù)是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。
?? ?* 舉例:153就是一個(gè)水仙花數(shù)。
?? ?* 153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
###04.05_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)for語(yǔ)句的練習(xí)之統(tǒng)計(jì)思想)
* A:案例演示
?? ?* 需求:統(tǒng)計(jì)”水仙花數(shù)”共有多少個(gè)
###04.06_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)while語(yǔ)句的格式和基本使用)
* A:循環(huán)結(jié)構(gòu)while語(yǔ)句的格式:
* ?? ??? ?
?? ??? ?while循環(huán)的基本格式:
?? ??? ?while(判斷條件語(yǔ)句) {
?? ??? ??? ?循環(huán)體語(yǔ)句;
?? ??? ?}
?? ??? ?
?? ??? ?完整格式:
?? ??? ?
?? ??? ?初始化語(yǔ)句;
?? ? ? ?while(判斷條件語(yǔ)句) {
?? ??? ??? ? 循環(huán)體語(yǔ)句;
?? ??? ??? ? 控制條件語(yǔ)句;
?? ??? ?}
* B:執(zhí)行流程:
?? ?* a:執(zhí)行初始化語(yǔ)句
?? ?* b:執(zhí)行判斷條件語(yǔ)句,看其返回值是true還是false
?? ??? ?* 如果是true,就繼續(xù)執(zhí)行
?? ??? ?* 如果是false,就結(jié)束循環(huán)
?? ?* c:執(zhí)行循環(huán)體語(yǔ)句;
?? ?* d:執(zhí)行控制條件語(yǔ)句
?? ?* e:回到B繼續(xù)。
* C:案例演示
?? ?* 需求:請(qǐng)?jiān)诳刂婆_(tái)輸出數(shù)據(jù)1-10
###04.07_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)while語(yǔ)句的練習(xí))
* A:求和思想
?? ?* 求1-100之和
* B:統(tǒng)計(jì)思想
?? ?* 統(tǒng)計(jì)”水仙花數(shù)”共有多少個(gè)
###04.08_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)do...while語(yǔ)句的格式和基本使用)
* A:循環(huán)結(jié)構(gòu)do...while語(yǔ)句的格式:
*?
?? ??? ?do {
?? ??? ??? ?循環(huán)體語(yǔ)句;
?? ??? ?}while(判斷條件語(yǔ)句);
?? ??? ?
?? ??? ?完整格式;
?? ??? ?初始化語(yǔ)句;
?? ??? ?do {
?? ??? ??? ?循環(huán)體語(yǔ)句;
?? ??? ??? ?控制條件語(yǔ)句;
?? ??? ?}while(判斷條件語(yǔ)句);
* B:執(zhí)行流程:
?? ?* a:執(zhí)行初始化語(yǔ)句
?? ?* b:執(zhí)行循環(huán)體語(yǔ)句;
?? ?* c:執(zhí)行控制條件語(yǔ)句
?? ?* d:執(zhí)行判斷條件語(yǔ)句,看其返回值是true還是false
?? ??? ?* 如果是true,就繼續(xù)執(zhí)行
?? ??? ?* 如果是false,就結(jié)束循環(huán)
?? ?* e:回到b繼續(xù)。
* C:案例演示
?? ?* 需求:請(qǐng)?jiān)诳刂婆_(tái)輸出數(shù)據(jù)1-10
###04.09_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)三種循環(huán)語(yǔ)句的區(qū)別)
* A:案例演示
?? ?* 三種循環(huán)語(yǔ)句的區(qū)別:
?? ?* do...while循環(huán)至少執(zhí)行一次循環(huán)體。
?? ?* 而for,while循環(huán)必須先判斷條件是否成立,然后決定是否執(zhí)行循環(huán)體語(yǔ)句。
* B:案例演示
?? ?* for循環(huán)和while循環(huán)的區(qū)別:
?? ??? ?* A:如果你想在循環(huán)結(jié)束后,繼續(xù)使用控制條件的那個(gè)變量,用while循環(huán),否則用for循環(huán)。不知道用誰(shuí)就用for循環(huán)。因?yàn)樽兞考霸绲膹膬?nèi)存中消失,可以提高內(nèi)存的使用效率。
?? ??? ??? ??? ?
###04.10_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)注意事項(xiàng)之死循環(huán))
* A:一定要注意控制條件語(yǔ)句控制的那個(gè)變量的問(wèn)題,不要弄丟了,否則就容易死循環(huán)。
* B:兩種最簡(jiǎn)單的死循環(huán)格式
?? ?* while(true){...}
?? ?* for(;;){...}
###04.11_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)循環(huán)嵌套輸出4行5列的星星)
* A:案例演示
?? ?* 需求:請(qǐng)輸出一個(gè)4行5列的星星(*)圖案。
?? ?*?
?? ??? ??? ?如圖:
?? ??? ??? ??? ?*****
?? ??? ??? ??? ?*****
?? ??? ??? ??? ?*****
?? ??? ??? ??? ?*****
?? ??? ??? ??? ?
?? ??? ??? ?注意:
?? ??? ??? ??? ?System.out.println("*");和System.out.print("*");的區(qū)別
* B:結(jié)論:
?? ?* 外循環(huán)控制行數(shù),內(nèi)循環(huán)控制列數(shù)
###04.12_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)循環(huán)嵌套輸出正三角形)
* A:案例演示
*?
?? ??? ?需求:請(qǐng)輸出下列的形狀
?? ??? ?*
?? ??? ?**
?? ??? ?***
?? ??? ?****
?? ??? ?*****
###04.13_Java語(yǔ)言基礎(chǔ)(循環(huán)結(jié)構(gòu)九九乘法表)
* A:案例演示
?? ?* 需求:在控制臺(tái)輸出九九乘法表。
* B:代碼優(yōu)化
*?
?? ??? ?注意:
?? ??? ?'\x' x表示任意,\是轉(zhuǎn)義符號(hào),這種做法叫轉(zhuǎn)移字符。
?? ??? ?
?? ??? ?'\t'?? ?tab鍵的位置
?? ??? ?'\r'?? ?回車
?? ??? ?'\n'?? ?換行
?? ??? ?'\"'
?? ??? ?'\''
?? ?
###04.14_Java語(yǔ)言基礎(chǔ)(控制跳轉(zhuǎn)語(yǔ)句break語(yǔ)句)
* A:break的使用場(chǎng)景
?? ?* 只能在switch和循環(huán)中?
###04.15_Java語(yǔ)言基礎(chǔ)(控制跳轉(zhuǎn)語(yǔ)句continue語(yǔ)句)
* A:continue的使用場(chǎng)景
?? ?* 只能在循環(huán)中?
###04.16_Java語(yǔ)言基礎(chǔ)(控制跳轉(zhuǎn)語(yǔ)句標(biāo)號(hào))
* 標(biāo)號(hào):標(biāo)記某個(gè)循環(huán)對(duì)其控制
* 標(biāo)號(hào)組成規(guī)則:其實(shí)就是合法的標(biāo)識(shí)符
###04.17_Java語(yǔ)言基礎(chǔ)(控制調(diào)整語(yǔ)句練習(xí))
* A:練習(xí)題
*?
?? ??? ?for(int x=1; x<=10; x++) {
?? ??? ??? ?if(x%3==0) {
?? ??? ??? ??? ?//在此處填寫(xiě)代碼
?? ??? ??? ?}
?? ??? ??? ?System.out.println(“Java基礎(chǔ)班”);
?? ??? ?}
?? ??? ?
?? ??? ?我想在控制臺(tái)輸出2次:“Java基礎(chǔ)班“
?? ??? ?我想在控制臺(tái)輸出7次:“Java基礎(chǔ)班“
?? ??? ?我想在控制臺(tái)輸出13次:“Java基礎(chǔ)班“?? ?
###04.18_Java語(yǔ)言基礎(chǔ)(控制跳轉(zhuǎn)語(yǔ)句return語(yǔ)句)
* A:return的作用
?? ?* 返回
?? ?* 其實(shí)它的作用不是結(jié)束循環(huán)的,而是結(jié)束方法的。
* B:案例演示
?? ?* return和break以及continue的區(qū)別?
?? ?* return是結(jié)束方法
?? ?* break是跳出循環(huán)
?? ?* continue是終止本次循環(huán)繼續(xù)下次循環(huán)
###04.19_Java語(yǔ)言基礎(chǔ)(方法概述和格式說(shuō)明)
* A:為什么要有方法
?? ?* 提高代碼的復(fù)用性?
* B:什么是方法
?? ?* 完成特定功能的代碼塊。?
* C:方法的格式
*?
?? ??? ?修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2...) {
?? ??? ??? ?方法體語(yǔ)句;
?? ??? ??? ?return 返回值;?
?? ??? ?}?
* D:方法的格式說(shuō)明
?? ?* 修飾符:目前就用 public static。后面我們?cè)僭敿?xì)的講解其他的修飾符。
?? ?* 返回值類型:就是功能結(jié)果的數(shù)據(jù)類型。
?? ?* 方法名:符合命名規(guī)則即可。方便我們的調(diào)用。
?? ?* 參數(shù):
?? ??? ?* 實(shí)際參數(shù):就是實(shí)際參與運(yùn)算的。
?? ??? ?* 形式參數(shù);就是方法定義上的,用于接收實(shí)際參數(shù)的。
?? ?* 參數(shù)類型:就是參數(shù)的數(shù)據(jù)類型
?? ?* 參數(shù)名:就是變量名
?? ?* 方法體語(yǔ)句:就是完成功能的代碼。
?? ?* return:結(jié)束方法的。
?? ?* 返回值:就是功能的結(jié)果,由return帶給調(diào)用者。?
###04.20_Java語(yǔ)言基礎(chǔ)(方法之求和案例及其調(diào)用)
* A:如何寫(xiě)一個(gè)方法
?? ?* 1,明確返回值類型
?? ?* 2,明確參數(shù)列表?
* B:案例演示
?? ?* 需求:求兩個(gè)數(shù)據(jù)之和的案例
* C:方法調(diào)用圖解
###04.21_Java語(yǔ)言基礎(chǔ)(方法的注意事項(xiàng))
* A:方法調(diào)用(有具體返回值)
?? ?* a:單獨(dú)調(diào)用,一般來(lái)說(shuō)沒(méi)有意義,所以不推薦。
?? ?* b:輸出調(diào)用,但是不夠好。因?yàn)槲覀兛赡苄枰槍?duì)結(jié)果進(jìn)行進(jìn)一步的操作。
?? ?* c:賦值調(diào)用,推薦方案。
* B:案例演示
?? ?* a:方法不調(diào)用不執(zhí)行
?? ?* b:方法與方法是平級(jí)關(guān)系,不能嵌套定義
?? ?* c:方法定義的時(shí)候參數(shù)之間用逗號(hào)隔開(kāi)
?? ?* d:方法調(diào)用的時(shí)候不用在傳遞數(shù)據(jù)類型
?? ?* e:如果方法有明確的返回值,一定要有return帶回一個(gè)值
###04.22_Java語(yǔ)言基礎(chǔ)(方法的練習(xí))
* A:案例演示
?? ?* 需求:鍵盤(pán)錄入兩個(gè)數(shù)據(jù),返回兩個(gè)數(shù)中的較大值
* B:案例演示
?? ?* 需求:鍵盤(pán)錄入兩個(gè)數(shù)據(jù),比較兩個(gè)數(shù)是否相等 ? ??
###04.23_Java語(yǔ)言基礎(chǔ)(方法之輸出星形及其調(diào)用)
* A:案例演示
?? ?* 需求:根據(jù)鍵盤(pán)錄入的行數(shù)和列數(shù),在控制臺(tái)輸出星形
* B:方法調(diào)用:(無(wú)返回值,void)
?? ?* 單獨(dú)調(diào)用
?? ?* 輸出調(diào)用(錯(cuò)誤)
?? ?* 賦值調(diào)用(錯(cuò)誤)
###04.24_Java語(yǔ)言基礎(chǔ)(方法的練習(xí))
* A:案例演示
?? ?* 需求:根據(jù)鍵盤(pán)錄入的數(shù)據(jù)輸出對(duì)應(yīng)的乘法表
###04.25_Java語(yǔ)言基礎(chǔ)(方法重載概述和基本使用)
* A:方法重載概述
?? ?* 求和案例
?? ??? ?* 2個(gè)整數(shù)
?? ??? ?* 3個(gè)整數(shù)
?? ??? ?* 4個(gè)整數(shù)
* B:方法重載:
?? ?* 在同一個(gè)類中,方法名相同,參數(shù)列表不同。與返回值類型無(wú)關(guān)。
?? ?
?? ?* 參數(shù)列表不同:
?? ??? ?* A:參數(shù)個(gè)數(shù)不同
?? ??? ?* B:參數(shù)類型不同
?? ??? ?* C:參數(shù)的順序不同(算重載,但是在開(kāi)發(fā)中不用)
###04.26_Java語(yǔ)言基礎(chǔ)(方法重載練習(xí)比較數(shù)據(jù)是否相等)
* A:案例演示
?? ?* 需求:比較兩個(gè)數(shù)據(jù)是否相等。
?? ?* 參數(shù)類型分別為兩個(gè)int類型,兩個(gè)double類型,并在main方法中進(jìn)行測(cè)試
###04.27_day04總結(jié)
把今天的知識(shí)點(diǎn)總結(jié)一遍。
。
###05.01_Java語(yǔ)言基礎(chǔ)(數(shù)組概述和定義格式說(shuō)明)(了解)
* A:為什么要有數(shù)組(容器)
?? ?* 為了存儲(chǔ)同種數(shù)據(jù)類型的多個(gè)值
* B:數(shù)組概念
?? ?* 數(shù)組是存儲(chǔ)同一種數(shù)據(jù)類型多個(gè)元素的集合。也可以看成是一個(gè)容器。
?? ?* 數(shù)組既可以存儲(chǔ)基本數(shù)據(jù)類型,也可以存儲(chǔ)引用數(shù)據(jù)類型。
* C:數(shù)組定義格式
?? ?數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長(zhǎng)度];
###05.02_Java語(yǔ)言基礎(chǔ)(數(shù)組的初始化動(dòng)態(tài)初始化)(掌握)
* A:什么是數(shù)組的初始化
?? ?* 就是為數(shù)組開(kāi)辟連續(xù)的內(nèi)存空間,并為每個(gè)數(shù)組元素賦予值?
* B:如何對(duì)數(shù)組進(jìn)行初始化
?? ?* a:動(dòng)態(tài)初始化 只指定長(zhǎng)度,由系統(tǒng)給出初始化值
?? ??? ?* int[] arr = new int[5]; ?? ?
?? ?* b:靜態(tài)初始化 給出初始化值,由系統(tǒng)決定長(zhǎng)度?? ?
* C:動(dòng)態(tài)初始化的格式:
?? ?* 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];
* D:案例演示
?? ?* 輸出數(shù)組名稱和數(shù)組元素
###05.03_Java語(yǔ)言基礎(chǔ)(Java中的內(nèi)存分配以及棧和堆的區(qū)別)
* A:棧(掌握)
?? ?* 存儲(chǔ)局部變量?
* B:堆(掌握)
?? ?* 存儲(chǔ)new出來(lái)的數(shù)組或?qū)ο?
* C:方法區(qū)
?? ?* 面向?qū)ο蟛糠种v解?
* D:本地方法區(qū)
?? ?* 和系統(tǒng)相關(guān)?
* E:寄存器
?? ?* 給CPU使用
###05.04_Java語(yǔ)言基礎(chǔ)(數(shù)組的內(nèi)存圖解1一個(gè)數(shù)組)(掌握)
* A:畫(huà)圖演示
?? ?* 一個(gè)數(shù)組
###05.05_Java語(yǔ)言基礎(chǔ)(數(shù)組的內(nèi)存圖解2二個(gè)數(shù)組)(了解)
* A:畫(huà)圖演示
?? ?* 二個(gè)不同的數(shù)組
###05.06_Java語(yǔ)言基礎(chǔ)(數(shù)組的內(nèi)存圖解3三個(gè)引用兩個(gè)數(shù)組)(了解)
* A:畫(huà)圖演示
?? ?* 三個(gè)引用,有兩個(gè)數(shù)組的引用指向同一個(gè)地址
###05.07_Java語(yǔ)言基礎(chǔ)(數(shù)組的初始化靜態(tài)初始化及內(nèi)存圖)(掌握)
* A:靜態(tài)初始化的格式:
?? ?* 格式:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2,…};
?? ?* 簡(jiǎn)化格式:
?? ??? ?* 數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2,…};
* B:案例演示
?? ?* 對(duì)數(shù)組的解釋
?? ?* 輸出數(shù)組名稱和數(shù)組元素
* C:畫(huà)圖演示
?? ?* 一個(gè)數(shù)組
###05.08_Java語(yǔ)言基礎(chǔ)(數(shù)組操作的兩個(gè)常見(jiàn)小問(wèn)題越界和空指針)(掌握)
* A:案例演示
?? ?* a:ArrayIndexOutOfBoundsException:數(shù)組索引越界異常
?? ??? ?* 原因:你訪問(wèn)了不存在的索引。
?? ?* b:NullPointerException:空指針異常
?? ??? ?* 原因:數(shù)組已經(jīng)不在指向堆內(nèi)存了。而你還用數(shù)組名去訪問(wèn)元素。
?? ??? ?* int[] arr = {1,2,3};
?? ??? ?* arr = null;
?? ??? ?* System.out.println(arr[0]);
###05.09_Java語(yǔ)言基礎(chǔ)(數(shù)組的操作1遍歷)(掌握)
* A:案例演示
?? ?* 數(shù)組遍歷:就是依次輸出數(shù)組中的每一個(gè)元素。
?? ?* 數(shù)組的屬性:arr.length數(shù)組的長(zhǎng)度
?? ?* 數(shù)組的最大索引:arr.length - 1;
?? ??
?? ??? ??? ?public static void print(int[] arr) {
?? ??? ??? ??? ?for (int i = 0;i < arr.length ;i++ ) {
?? ??? ??? ??? ??? ?System.out.print(arr[i] + " ");
?? ??? ??? ??? ?}
?? ??? ??? ?}
###05.10_Java語(yǔ)言基礎(chǔ)(數(shù)組的操作2獲取最值)(掌握)
* A:案例演示
?? ?* 數(shù)組獲取最值(獲取數(shù)組中的最大值最小值)
?? ??? ?
?? ??? ??? ?public static int getMax(int[] arr) {
?? ??? ??? ??? ?int max = arr[0];
?? ??? ??? ??? ?for (int i = 1;i < arr.length ;i++ ) {?? ??? ??? ?//從數(shù)組的第二個(gè)元素開(kāi)始遍歷
?? ??? ??? ??? ??? ?if (max < arr[i]) {?? ??? ??? ??? ??? ??? ??? ?//如果max記錄的值小于的數(shù)組中的元素
?? ??? ??? ??? ??? ??? ?max = arr[i];?? ??? ??? ??? ??? ??? ??? ?//max記錄住較大的
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ?
?? ??? ??? ??? ?return max;
?? ??? ??? ?}
###05.11_Java語(yǔ)言基礎(chǔ)(數(shù)組的操作3反轉(zhuǎn))(掌握)
* A:案例演示
?? ?* 數(shù)組元素反轉(zhuǎn)(就是把元素對(duì)調(diào))
?? ??? ??? ?
?? ??? ??? ?public static void reverseArray(int[] arr) {
?? ??? ??? ??? ?for (int i = 0;i < arr.length / 2 ; i++) {
?? ??? ??? ??? ??? ?//arr[0]和arr[arr.length-1-0]交換
?? ??? ??? ??? ??? ?//arr[1]和arr[arr.length-1-1]交換
?? ??? ??? ??? ??? ?//arr[2]和arr[arr.lentth-1-2]
?? ??? ??? ??? ??? ?//...
?? ??? ?
?? ??? ??? ??? ??? ?int temp = arr[i];
?? ??? ??? ??? ??? ?arr[i] = arr[arr.length-1-i];
?? ??? ??? ??? ??? ?arr[arr.length-1-i] = temp;
?? ??? ??? ??? ?}
?? ??? ??? ?}
###05.12_Java語(yǔ)言基礎(chǔ)(數(shù)組的操作4查表法)(掌握)
* A:案例演示
?? ?* 數(shù)組查表法(根據(jù)鍵盤(pán)錄入索引,查找對(duì)應(yīng)星期)
?? ?
?? ??? ??? ?public static char getWeek(int week) {
?? ??? ??? ??? ?char[] arr = {' ','一','二','三','四','五','六','日'};?? ??? ?//定義了一張星期表
?? ??? ??? ??? ?return arr[week];?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//通過(guò)索引獲取表中的元素
?? ??? ??? ?}
###05.13_Java語(yǔ)言基礎(chǔ)(數(shù)組的操作5基本查找)(掌握)
* A:案例演示
?? ?* 數(shù)組元素查找(查找指定元素第一次在數(shù)組中出現(xiàn)的索引)
?? ?
?? ??? ??? ?public static int getIndex(int[] arr,int value) {
?? ??? ??? ??? ?for (int i = 0;i < arr.length ;i++ ) {?? ??? ??? ??? ?//數(shù)組的遍歷
?? ??? ??? ??? ??? ?if (arr[i] == value) {?? ??? ??? ??? ??? ??? ??? ?//如果數(shù)組中的元素與查找的元素匹配
?? ??? ??? ??? ??? ??? ?return i;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ??? ?return -1;
?? ??? ??? ?}?
###05.14_Java語(yǔ)言基礎(chǔ)(二維數(shù)組概述和格式1的講解)(了解)
* A:二維數(shù)組概述
* B:二維數(shù)組格式1
?? ?* int[][] arr = new int[3][2];?
* C:二維數(shù)組格式1的解釋
* D:注意事項(xiàng)
?? ?* a:以下格式也可以表示二維數(shù)組
?? ??? ?* 1:數(shù)據(jù)類型 數(shù)組名[][] = new 數(shù)據(jù)類型[m][n];
?? ??? ?* 2:數(shù)據(jù)類型[] 數(shù)組名[] = new 數(shù)據(jù)類型[m][n];
?? ?* B:注意下面定義的區(qū)別
?? ?*?
?? ??? ??? ?int x;
?? ??? ??? ?int y;
?? ??? ??? ?int x,y;
?? ??? ??? ?
?? ??? ??? ?int[] x;
?? ??? ??? ?int[] y[];
?? ??? ??? ?
?? ??? ??? ?int[] x,y[];?? ?x是一維數(shù)組,y是二維數(shù)組
* E:案例演示
?? ?* 定義二維數(shù)組,輸出二維數(shù)組名稱,一維數(shù)組名稱,一個(gè)元素
###05.15_Java語(yǔ)言基礎(chǔ)(二維數(shù)組格式1的內(nèi)存圖解)(了解)
* A:畫(huà)圖演示
?? ?* 畫(huà)圖講解上面的二維數(shù)組名稱,一維數(shù)組名稱,一個(gè)元素的值的問(wèn)題
###05.16_Java語(yǔ)言基礎(chǔ)(二維數(shù)組格式2的講解及其內(nèi)存圖解)(了解)
* A:二維數(shù)組格式2
?? ?* int[][] arr = new int[3][];?
* B:二維數(shù)組格式2的解釋
* C:案例演示
?? ?* 講解格式,輸出數(shù)據(jù),并畫(huà)內(nèi)存圖
###05.17_Java語(yǔ)言基礎(chǔ)(二維數(shù)組格式3的講解及其內(nèi)存圖解)(了解)
* A:二維數(shù)組格式3
?? ?* int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};?
* B:二維數(shù)組格式3的解釋
* C:案例演示
?? ?* 講解格式,輸出數(shù)據(jù),并畫(huà)內(nèi)存圖
###05.18_Java語(yǔ)言基礎(chǔ)(二維數(shù)組練習(xí)1遍歷)(掌握)
* A:案例演示
?? ?* 需求:二維數(shù)組遍歷
?? ?* 外循環(huán)控制的是二維數(shù)組的長(zhǎng)度,其實(shí)就是一維數(shù)組的個(gè)數(shù)。
?? ?* 內(nèi)循環(huán)控制的是一維數(shù)組的長(zhǎng)度。
?? ??? ??? ?int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
?? ?
?? ??? ??? ?for (int i = 0;i < arr.length ;i++ ) {?? ??? ??? ?//獲取到每個(gè)二維數(shù)組中的一維數(shù)組
?? ??? ??? ??? ?for (int j = 0;j < arr[i].length ;j++ ) {?? ?//獲取每個(gè)一維數(shù)組中的元素
?? ??? ??? ??? ??? ?System.out.print(arr[i][j] + " ");
?? ??? ??? ??? ?}
?? ?
?? ??? ??? ??? ?System.out.println();
?? ??? ??? ?}
###05.19_Java語(yǔ)言基礎(chǔ)(二維數(shù)組練習(xí)2求和)(掌握)
* A:案例演示
*?
?? ??? ?需求:公司年銷售額求和
?? ??? ?某公司按照季度和月份統(tǒng)計(jì)的數(shù)據(jù)如下:單位(萬(wàn)元)
?? ??? ?第一季度:22,66,44
?? ??? ?第二季度:77,33,88
?? ??? ?第三季度:25,45,65
?? ??? ?第四季度:11,66,99
?? ??? ?
?? ??? ?int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
?? ??? ?int sum = 0;?? ??? ??? ??? ??? ??? ??? ??? ??? ?//定義變量,記錄每次相加的結(jié)果
?? ??? ?for (int i = 0;i < arr.length ;i++ ) {?? ??? ??? ?//獲取每一個(gè)一維數(shù)組
?? ??? ??? ?for (int j = 0;j < arr[i].length ;j++ ) {?? ?//獲取每一個(gè)一維數(shù)組中的元素
?? ??? ??? ??? ?sum = sum + arr[i][j];?? ??? ??? ??? ??? ?//累加
?? ??? ??? ?}
?? ??? ?}
?? ??? ?System.out.println(sum);
###05.20_Java語(yǔ)言基礎(chǔ)(思考題Java中的參數(shù)傳遞問(wèn)題及圖解)(掌握)
* A:案例演示
*?
?? ??? ?看程序?qū)懡Y(jié)果,并畫(huà)內(nèi)存圖解釋
?? ??? ?public static void main(String[] args) {
?? ??? ??? ?int a = 10;
?? ??? ??? ?int b = 20;
?? ??? ??? ?System.out.println("a:"+a+",b:"+b);
?? ??? ??? ?change(a,b);
?? ??? ??? ?System.out.println("a:"+a+",b:"+b);
?? ?
?? ??? ??? ?int[] arr = {1,2,3,4,5};
?? ??? ??? ?change(arr);
?? ??? ??? ?System.out.println(arr[1]);
?? ??? ?}
?? ?
?? ??? ?public static void change(int a,int b) {
?? ??? ??? ?System.out.println("a:"+a+",b:"+b);
?? ??? ??? ?a = b;
?? ??? ??? ?b = a + b;
?? ??? ??? ?System.out.println("a:"+a+",b:"+b);
?? ??? ?}
?? ?
?? ??? ?public static void change(int[] arr) {
?? ??? ??? ?for(int x=0; x<arr.length; x++) {
?? ??? ??? ??? ?if(arr[x]%2==0) {
?? ??? ??? ??? ??? ?arr[x]*=2;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
###05.21_day05總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍。
###06.01_面向?qū)ο?面向?qū)ο笏枷敫攀?(了解)
* A:面向過(guò)程思想概述
?? ?* 第一步
?? ?* 第二步?
* B:面向?qū)ο笏枷敫攀?br /> ?? ?* 找對(duì)象(第一步,第二步)?
* C:舉例
?? ?* 買煎餅果子
?? ?* 洗衣服?
* D:面向?qū)ο笏枷胩攸c(diǎn)
?? ?* a:是一種更符合我們思想習(xí)慣的思想
?? ?* b:可以將復(fù)雜的事情簡(jiǎn)單化
?? ?* c:將我們從執(zhí)行者變成了指揮者
?? ??? ?* 角色發(fā)生了轉(zhuǎn)換
* E:面向?qū)ο箝_(kāi)發(fā)
?? ?* 就是不斷的創(chuàng)建對(duì)象,使用對(duì)象,指揮對(duì)象做事情。
* F:面向?qū)ο笤O(shè)計(jì)
?? ?* 其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。
* G:面向?qū)ο筇卣?br /> ?? ?* 封裝(encapsulation)
?? ?* 繼承(inheritance)
?? ?* 多態(tài)(polymorphism)
###06.02_面向?qū)ο?類與對(duì)象概述)(掌握)
* A:我們學(xué)習(xí)編程是為了什么
?? ?* 為了把我們?nèi)粘I钪袑?shí)物用學(xué)習(xí)語(yǔ)言描述出來(lái)
* B:我們?nèi)绾蚊枋霈F(xiàn)實(shí)世界事物
?? ?* 屬性?? ?就是該事物的描述信息(事物身上的名詞)
?? ?* 行為?? ?就是該事物能夠做什么(事物身上的動(dòng)詞)
* C:Java中最基本的單位是類,Java中用class描述事物也是如此
?? ?* 成員變量?? ?就是事物的屬性
?? ?* 成員方法?? ?就是事物的行為
* D:定義類其實(shí)就是定義類的成員(成員變量和成員方法)
?? ?* a:成員變量?? ?和以前定義變量是一樣的,只不過(guò)位置發(fā)生了改變。在類中,方法外。
?? ?* b:成員方法?? ?和以前定義方法是一樣的,只不過(guò)把static去掉,后面在詳細(xì)講解static的作用。
* E:類和對(duì)象的概念
?? ?* a:類:是一組相關(guān)的屬性和行為的集合
?? ?* b:對(duì)象:是該類事物的具體體現(xiàn)
?? ?* c:舉例:
?? ??? ?* 類?? ? 學(xué)生
?? ??? ?* 對(duì)象?? ?具體的某個(gè)學(xué)生就是一個(gè)對(duì)象
###06.03_面向?qū)ο?學(xué)生類的定義)(掌握)
* A:學(xué)生事物
* B:學(xué)生類
* C:案例演示
?? ?* 屬性:姓名,年齡,性別
?? ?* 行為:學(xué)習(xí),睡覺(jué)
###06.04_面向?qū)ο?手機(jī)類的定義)(掌握)
* 模仿學(xué)生類,讓學(xué)生自己完成
?? ?* 屬性:品牌(brand)價(jià)格(price)
?? ?* 行為:打電話(call),發(fā)信息(sendMessage)玩游戲(playGame)
###06.05_面向?qū)ο?學(xué)生類的使用)(掌握)
* A:文件名問(wèn)題
?? ?* 在一個(gè)java文件中寫(xiě)兩個(gè)類:一個(gè)基本的類,一個(gè)測(cè)試類。
?? ?* 建議:文件名稱和測(cè)試類名稱一致。
* B:如何使用對(duì)象?
?? ?* 創(chuàng)建對(duì)象并使用
?? ?* 格式:類名 對(duì)象名 = new 類名();
* D:如何使用成員變量呢?
?? ?* 對(duì)象名.變量名
* E:如何使用成員方法呢?
?? ?* 對(duì)象名.方法名(...)
###06.06_面向?qū)ο?手機(jī)類的使用)(掌握)
* A:學(xué)生自己完成
?? ?* 模仿學(xué)生類,讓學(xué)生自己完成
?? ?
###06.07_面向?qū)ο?一個(gè)對(duì)象的內(nèi)存圖)(掌握)
* A:畫(huà)圖演示
?? ?* 一個(gè)對(duì)象
###06.08_面向?qū)ο?二個(gè)對(duì)象的內(nèi)存圖)(了解)
* A:畫(huà)圖演示
?? ?* 二個(gè)不同的對(duì)象
###06.09_面向?qū)ο?三個(gè)引用兩個(gè)對(duì)象的內(nèi)存圖)(了解)
* A:畫(huà)圖演示
?? ?* 三個(gè)引用,有兩個(gè)對(duì)象的引用指向同一個(gè)地址
###06.10_面向?qū)ο?成員變量和局部變量的區(qū)別)(掌握)
* A:在類中的位置不同
?? ?* 成員變量:在類中方法外
?? ?* 局部變量:在方法定義中或者方法聲明上
* B:在內(nèi)存中的位置不同
?? ?* 成員變量:在堆內(nèi)存(成員變量屬于對(duì)象,對(duì)象進(jìn)堆內(nèi)存)
?? ?* 局部變量:在棧內(nèi)存(局部變量屬于方法,方法進(jìn)棧內(nèi)存)
* C:生命周期不同
?? ?* 成員變量:隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失
?? ?* 局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失
* D:初始化值不同
?? ?* 成員變量:有默認(rèn)初始化值
?? ?* 局部變量:沒(méi)有默認(rèn)初始化值,必須定義,賦值,然后才能使用。
?? ?
* 注意事項(xiàng):
?? ?* 局部變量名稱可以和成員變量名稱一樣,在方法中使用的時(shí)候,采用的是就近原則。
?? ?* 基本數(shù)據(jù)類型變量包括哪些:byte,short,int,long,float,double,boolean,char
?? ?* 引用數(shù)據(jù)類型變量包括哪些:數(shù)組,類,接口,枚舉
?? ?
###06.11_面向?qū)ο?方法的形式參數(shù)是類名的時(shí)候如何調(diào)用)(掌握)
* A:方法的參數(shù)是類名public void print(Student s){}//print(new Student());
?? ?* 如果你看到了一個(gè)方法的形式參數(shù)是一個(gè)類類型(引用類型),這里其實(shí)需要的是該類的對(duì)象。
###06.12_面向?qū)ο?匿名對(duì)象的概述和應(yīng)用)(掌握)
* A:什么是匿名對(duì)象
?? ?* 沒(méi)有名字的對(duì)象?
* B:匿名對(duì)象應(yīng)用場(chǎng)景
?? ?* a:調(diào)用方法,僅僅只調(diào)用一次的時(shí)候。
?? ??? ?* 那么,這種匿名調(diào)用有什么好處嗎?
?? ??? ??? ?* 節(jié)省代碼?
?? ??? ?* 注意:調(diào)用多次的時(shí)候,不適合。匿名對(duì)象調(diào)用完畢就是垃圾。可以被垃圾回收器回收。
?? ?* b:匿名對(duì)象可以作為實(shí)際參數(shù)傳遞
* C:案例演示
?? ?* 匿名對(duì)象應(yīng)用場(chǎng)景
###06.13_面向?qū)ο?封裝的概述)(掌握)
* A:封裝概述
?? ?* 是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪問(wèn)方式。
* B:封裝好處
?? ?* 隱藏實(shí)現(xiàn)細(xì)節(jié),提供公共的訪問(wèn)方式
?? ?* 提高了代碼的復(fù)用性
?? ?* 提高安全性。
* C:封裝原則
?? ?* 將不需要對(duì)外提供的內(nèi)容都隱藏起來(lái)。
?? ?* 把屬性隱藏,提供公共方法對(duì)其訪問(wèn)。
###06.14_面向?qū)ο?private關(guān)鍵字的概述和特點(diǎn))(掌握)
* A:人類賦值年齡的問(wèn)題
* B:private關(guān)鍵字特點(diǎn)
?? ?* a:是一個(gè)權(quán)限修飾符
?? ?* b:可以修飾成員變量和成員方法
?? ?* c:被其修飾的成員只能在本類中被訪問(wèn)
* C:案例演示
?? ?* 封裝和private的應(yīng)用:
?? ?* A:把成員變量用private修飾
?? ?* B:提供對(duì)應(yīng)的getXxx()和setXxx()方法
?? ?* private僅僅是封裝的一種體現(xiàn)形式,不能說(shuō)封裝就是私有
###06.15_面向?qū)ο?this關(guān)鍵字的概述和應(yīng)用)(掌握)
* A:this關(guān)鍵字特點(diǎn)
?? ?* 代表當(dāng)前對(duì)象的引用?
* B:案例演示
?? ?* this的應(yīng)用場(chǎng)景
?? ?* 用來(lái)區(qū)分成員變量和局部變量重名
###06.16_面向?qū)ο?手機(jī)類代碼及其測(cè)試)(掌握)
* A:學(xué)生練習(xí)
?? ?* 請(qǐng)把手機(jī)類寫(xiě)成一個(gè)標(biāo)準(zhǔn)類,然后創(chuàng)建對(duì)象測(cè)試功能。
?? ??
?? ??? ??? ?class Demo2_Phone {
?? ??? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ??? ?Phone p1 = new Phone();
?? ??? ??? ??? ??? ?p1.setBrand("三星");
?? ??? ??? ??? ??? ?p1.setPrice(5288);
?? ??? ??? ?
?? ??? ??? ??? ??? ?System.out.println(p1.getBrand() + "..." + p1.getPrice());
?? ??? ??? ??? ??? ?p1.call();
?? ??? ??? ??? ??? ?p1.sendMessage();
?? ??? ??? ??? ??? ?p1.playGame();
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?/*
?? ??? ??? ?手機(jī)類
?? ??? ??? ??? ?屬性:品牌brand,價(jià)格price
?? ??? ??? ??? ?行為:打電話call,發(fā)短信sendMessage,玩游戲,playGame
?? ??? ??? ?*/
?? ??? ??? ?class Phone {?? ??? ??? ??? ??? ??? ??? ??? ?//java bean
?? ??? ??? ??? ?private String brand;?? ??? ??? ??? ??? ?//品牌
?? ??? ??? ??? ?private int price;?? ??? ??? ??? ??? ??? ?//價(jià)格
?? ??? ??? ?
?? ??? ??? ??? ?public void setBrand(String brand) {?? ?//設(shè)置品牌
?? ??? ??? ??? ??? ?this.brand = brand;
?? ??? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ??? ?public String getBrand() {?? ??? ??? ??? ?//獲取品牌
?? ??? ??? ??? ??? ?return this.brand;?? ??? ??? ??? ??? ?//this.可以省略,你不加系統(tǒng)會(huì)默認(rèn)給你加
?? ??? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ??? ?public void setPrice(int price) {?? ??? ?//設(shè)置價(jià)格
?? ??? ??? ??? ??? ?this.price = price;
?? ??? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ??? ?public int getPrice() {?? ??? ??? ??? ??? ?//獲取價(jià)格
?? ??? ??? ??? ??? ?return price;
?? ??? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ??? ?public void call() {?? ??? ??? ??? ??? ?//打電話
?? ??? ??? ??? ??? ?System.out.println("打電話");
?? ??? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ??? ?public void sendMessage() {?? ??? ??? ??? ?//發(fā)短信
?? ??? ??? ??? ??? ?System.out.println("發(fā)短信");
?? ??? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ??? ?public void playGame() {?? ??? ??? ??? ?//玩游戲
?? ??? ??? ??? ??? ?System.out.println("玩游戲");
?? ??? ??? ??? ?}
?? ??? ??? ?}
###06.17_day06總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍。
###07.01_面向?qū)ο?構(gòu)造方法Constructor概述和格式)(掌握)
* A:構(gòu)造方法概述和作用
?? ?* 給對(duì)象的數(shù)據(jù)(屬性)進(jìn)行初始化
* B:構(gòu)造方法格式特點(diǎn)
?? ?* a:方法名與類名相同(大小也要與類名一致)
?? ?* b:沒(méi)有返回值類型,連void都沒(méi)有
?? ?* c:沒(méi)有具體的返回值return;
###07.02_面向?qū)ο?構(gòu)造方法的重載及注意事項(xiàng))(掌握)
* A:案例演示
?? ?* 構(gòu)造方法的重載
?? ?* 重載:方法名相同,與返回值類型無(wú)關(guān)(構(gòu)造方法沒(méi)有返回值),只看參數(shù)列表
* B:構(gòu)造方法注意事項(xiàng)
?? ?* a:如果我們沒(méi)有給出構(gòu)造方法,系統(tǒng)將自動(dòng)提供一個(gè)無(wú)參構(gòu)造方法。
?? ?* b:如果我們給出了構(gòu)造方法,系統(tǒng)將不再提供默認(rèn)的無(wú)參構(gòu)造方法。
?? ??? ?* 注意:這個(gè)時(shí)候,如果我們還想使用無(wú)參構(gòu)造方法,就必須自己給出。建議永遠(yuǎn)自己給出無(wú)參構(gòu)造方法
?? ??? ?
###07.03_面向?qū)ο?給成員變量賦值的兩種方式的區(qū)別)
* A:setXxx()方法
?? ?* 修改屬性值?
* B:構(gòu)造方法
?? ?* 給對(duì)象中屬性進(jìn)行初始化?
###07.04_面向?qū)ο?學(xué)生類的代碼及測(cè)試)(掌握)
* A:案例演示
?? ?* 學(xué)生類:
?? ??? ?* 成員變量:
?? ??? ??? ?* name,age
?? ??? ?* 構(gòu)造方法:
?? ??? ??? ?* 無(wú)參,帶兩個(gè)參
?? ??? ?* 成員方法:
?? ??? ??? ?* getXxx()/setXxx()
?? ??? ??? ?* show():輸出該類的所有成員變量值
* B:給成員變量賦值:
?? ?* a:setXxx()方法
?? ?* b:構(gòu)造方法
?? ?
* C:輸出成員變量值的方式:
?? ?* a:通過(guò)getXxx()分別獲取然后拼接
?? ?* b:通過(guò)調(diào)用show()方法搞定
###07.05_面向?qū)ο?手機(jī)類的代碼及測(cè)試)(掌握)
* A:案例演示
?? ?* 模仿學(xué)生類,完成手機(jī)類代碼
###07.06_面向?qū)ο?創(chuàng)建一個(gè)對(duì)象的步驟)(掌握)
* A:畫(huà)圖演示
?? ?* 畫(huà)圖說(shuō)明一個(gè)對(duì)象的創(chuàng)建過(guò)程做了哪些事情?
?? ?* Student s = new Student();
?? ?* 1,Student.class加載進(jìn)內(nèi)存
?? ?* 2,聲明一個(gè)Student類型引用s
?? ?* 3,在堆內(nèi)存創(chuàng)建對(duì)象,
?? ?* 4,給對(duì)象中屬性默認(rèn)初始化值
?? ?* 5,屬性進(jìn)行顯示初始化
?? ?* 6,構(gòu)造方法進(jìn)棧,對(duì)對(duì)象中的屬性賦值,構(gòu)造方法彈棧
?? ?* 7,將對(duì)象的地址值賦值給s
###07.07_面向?qū)ο?長(zhǎng)方形案例練習(xí))(掌握)
* A:案例演示
?? ?* 需求:
?? ??? ?* 定義一個(gè)長(zhǎng)方形類,定義 求周長(zhǎng)和面積的方法,
?? ??? ?* 然后定義一個(gè)測(cè)試類進(jìn)行測(cè)試。
###07.08_面向?qū)ο?員工類案例練習(xí))(掌握)
* A:案例演示
?? ?* 需求:定義一個(gè)員工類Employee
?? ?* 自己分析出幾個(gè)成員,然后給出成員變量
?? ??? ?* 姓名name,工號(hào)id,工資salary?
?? ?* 構(gòu)造方法,
?? ??? ?* 空參和有參的
?? ?* getXxx()setXxx()方法,
?? ?* 以及一個(gè)顯示所有成員信息的方法。并測(cè)試。
?? ??? ?* work?
###07.09_面向?qū)ο?static關(guān)鍵字及內(nèi)存圖)(了解)
* A:案例演示
?? ?* 通過(guò)一個(gè)案例引入static關(guān)鍵字。
?? ?* 人類:Person。每個(gè)人都有國(guó)籍,中國(guó)。
* B:畫(huà)圖演示
?? ?* 帶有static的內(nèi)存圖
?
###07.10_面向?qū)ο?static關(guān)鍵字的特點(diǎn))(掌握)
* A:static關(guān)鍵字的特點(diǎn)
?? ?* a:隨著類的加載而加載
?? ?* b:優(yōu)先于對(duì)象存在
?? ?* c:被類的所有對(duì)象共享
?? ??? ?* 舉例:咱們班級(jí)的學(xué)生應(yīng)該共用同一個(gè)班級(jí)編號(hào)。
?? ??? ?* 其實(shí)這個(gè)特點(diǎn)也是在告訴我們什么時(shí)候使用靜態(tài)?
?? ??? ??? ?* 如果某個(gè)成員變量是被所有對(duì)象共享的,那么它就應(yīng)該定義為靜態(tài)的。
?? ??? ?* 舉例:
?? ??? ??? ?* 飲水機(jī)(用靜態(tài)修飾)
?? ??? ??? ?* 水杯(不能用靜態(tài)修飾)
?? ??? ??? ?* 共性用靜態(tài),特性用非靜態(tài)
?? ?* d:可以通過(guò)類名調(diào)用
?? ??? ?* 其實(shí)它本身也可以通過(guò)對(duì)象名調(diào)用。
?? ??? ?* 推薦使用類名調(diào)用。
?? ??? ?* 靜態(tài)修飾的內(nèi)容一般我們稱其為:與類相關(guān)的,類成員
* B:案例演示
?? ?* static關(guān)鍵字的特點(diǎn)
###07.11_面向?qū)ο?static的注意事項(xiàng))(掌握)
* A:static的注意事項(xiàng)
?? ?* a:在靜態(tài)方法中是沒(méi)有this關(guān)鍵字的
?? ??? ?* 如何理解呢?
?? ??? ??? ?* 靜態(tài)是隨著類的加載而加載,this是隨著對(duì)象的創(chuàng)建而存在。
?? ??? ??? ?* 靜態(tài)比對(duì)象先存在。
?? ?* b:靜態(tài)方法只能訪問(wèn)靜態(tài)的成員變量和靜態(tài)的成員方法
?? ??? ?* 靜態(tài)方法:
?? ??? ??? ?* 成員變量:只能訪問(wèn)靜態(tài)變量
?? ??? ??? ?* 成員方法:只能訪問(wèn)靜態(tài)成員方法
?? ??? ?* 非靜態(tài)方法:
?? ??? ??? ?* 成員變量:可以是靜態(tài)的,也可以是非靜態(tài)的
?? ??? ??? ?* 成員方法:可是是靜態(tài)的成員方法,也可以是非靜態(tài)的成員方法。
?? ??? ?* 簡(jiǎn)單記:
?? ??? ??? ?* 靜態(tài)只能訪問(wèn)靜態(tài)。
* B:案例演示
?? ?* static的注意事項(xiàng)
###07.12_面向?qū)ο?靜態(tài)變量和成員變量的區(qū)別)(掌握)
* 靜態(tài)變量也叫類變量 ?成員變量也叫對(duì)象變量
* A:所屬不同
?? ?* 靜態(tài)變量屬于類,所以也稱為為類變量
?? ?* 成員變量屬于對(duì)象,所以也稱為實(shí)例變量(對(duì)象變量)
* B:內(nèi)存中位置不同
?? ?* 靜態(tài)變量存儲(chǔ)于方法區(qū)的靜態(tài)區(qū)
?? ?* 成員變量存儲(chǔ)于堆內(nèi)存
* C:內(nèi)存出現(xiàn)時(shí)間不同
?? ?* 靜態(tài)變量隨著類的加載而加載,隨著類的消失而消失
?? ?* 成員變量隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失
* D:調(diào)用不同
?? ?* 靜態(tài)變量可以通過(guò)類名調(diào)用,也可以通過(guò)對(duì)象調(diào)用
?? ?* 成員變量只能通過(guò)對(duì) 象名調(diào)用
###07.13_面向?qū)ο?main方法的格式詳細(xì)解釋)(了解)
* A:格式
?? ?* public static void main(String[] args) {}
* B:針對(duì)格式的解釋
?? ?* public 被jvm調(diào)用,訪問(wèn)權(quán)限足夠大。
?? ?* static 被jvm調(diào)用,不用創(chuàng)建對(duì)象,直接類名訪問(wèn)
?? ?* void被jvm調(diào)用,不需要給jvm返回值
?? ?* main 一個(gè)通用的名稱,雖然不是關(guān)鍵字,但是被jvm識(shí)別
?? ?* String[] args 以前用于接收鍵盤(pán)錄入的
* C:演示案例
?? ?* 通過(guò)args接收鍵盤(pán)例如數(shù)據(jù)
###07.14_面向?qū)ο?工具類中使用靜態(tài))(了解)
* A:制作一個(gè)工具類
?? ?* ArrayTool
?? ?* 1,獲取最大值
?? ?* 2,數(shù)組的遍歷
?? ?* 3,數(shù)組的反轉(zhuǎn)
?? ?
###07.15_面向?qū)ο?說(shuō)明書(shū)的制作過(guò)程)(了解)
* A:對(duì)工具類加入文檔注釋
* B:通過(guò)javadoc命令生成說(shuō)明書(shū)
?? ?* @author(提取作者內(nèi)容)
?? ?* @version(提取版本內(nèi)容)
?? ?* javadoc -d 指定的文件目錄 -author -version ArrayTool.java
?? ?* @param 參數(shù)名稱//形式參數(shù)的變量名稱@return 函數(shù)運(yùn)行完返回的數(shù)據(jù)
###07.16_面向?qū)ο?如何使用JDK提供的幫助文檔)(了解)
* A:找到文檔,打開(kāi)文檔
* B:點(diǎn)擊顯示,找到索引,出現(xiàn)輸入框
* C:你應(yīng)該知道你找誰(shuí)?舉例:Scanner
* D:看這個(gè)類的結(jié)構(gòu)(需不需要導(dǎo)包)
?? ?* 成員變量?? ?字段
?? ?* 構(gòu)造方法?? ?構(gòu)造方法
?? ?* 成員方法?? ?方法
###07.17_面向?qū)ο?學(xué)習(xí)Math類的隨機(jī)數(shù)功能)(了解)
* 打開(kāi)JDK提供的幫助文檔學(xué)習(xí)
* A:Math類概述
?? ?* 類包含用于執(zhí)行基本數(shù)學(xué)運(yùn)算的方法
* B:Math類特點(diǎn)
?? ?* 由于Math類在java.lang包下,所以不需要導(dǎo)包。
?? ?* 因?yàn)樗某蓡T全部是靜態(tài)的,所以私有了構(gòu)造方法
* C:獲取隨機(jī)數(shù)的方法
?? ?* public static double random():返回帶正號(hào)的 double 值,該值大于等于 0.0 且小于 1.0。
* D:我要獲取一個(gè)1-100之間的隨機(jī)數(shù),腫么辦?
?? ?* int number = (int)(Math.random()*100)+1;
?? ?
###07.18_面向?qū)ο?猜數(shù)字小游戲案例)(了解)
* A:案例演示
?? ?* 需求:猜數(shù)字小游戲(數(shù)據(jù)在1-100之間)
###07.19_day07總結(jié)
把今天的知識(shí)點(diǎn)總結(jié)一遍。
###08.01_面向?qū)ο?代碼塊的概述和分類)(了解)(面試的時(shí)候會(huì)問(wèn),開(kāi)發(fā)不用或者很少用)
* A:代碼塊概述
?? ?* 在Java中,使用{}括起來(lái)的代碼被稱為代碼塊。
* B:代碼塊分類
?? ?* 根據(jù)其位置和聲明的不同,可以分為局部代碼塊,構(gòu)造代碼塊,靜態(tài)代碼塊,同步代碼塊(多線程講解)。
* C:常見(jiàn)代碼塊的應(yīng)用
?? ?* a:局部代碼塊?
?? ??? ?* 在方法中出現(xiàn);限定變量生命周期,及早釋放,提高內(nèi)存利用率
?? ?* b:構(gòu)造代碼塊 (初始化塊)
?? ??? ?* 在類中方法外出現(xiàn);多個(gè)構(gòu)造方法方法中相同的代碼存放到一起,每次調(diào)用構(gòu)造都執(zhí)行,并且在構(gòu)造方法前執(zhí)行
?? ?* c:靜態(tài)代碼塊?
?? ??? ?* 在類中方法外出現(xiàn),并加上static修飾;用于給類進(jìn)行初始化,在加載的時(shí)候就執(zhí)行,并且只執(zhí)行一次。
?? ??? ?* 一般用于加載驅(qū)動(dòng)
###08.02_面向?qū)ο?代碼塊的面試題)(掌握)
* A:看程序?qū)懡Y(jié)果
*?
?? ??? ?class Student {
?? ??? ??? ?static {
?? ??? ??? ??? ?System.out.println("Student 靜態(tài)代碼塊");
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?{
?? ??? ??? ??? ?System.out.println("Student 構(gòu)造代碼塊");
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?public Student() {
?? ??? ??? ??? ?System.out.println("Student 構(gòu)造方法");
?? ??? ??? ?}
?? ??? ?}
?? ?
?? ??? ?class Demo2_Student {
?? ??? ??? ?static {
?? ??? ??? ??? ?System.out.println("Demo2_Student靜態(tài)代碼塊");
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ?System.out.println("我是main方法");
?? ??? ??? ??? ?
?? ??? ??? ??? ?Student s1 = new Student();
?? ??? ??? ??? ?Student s2 = new Student();
?? ??? ??? ?}
?? ??? ?}
###08.03_面向?qū)ο?繼承案例演示)(掌握)
* A:繼承(extends)
?? ?* 讓類與類之間產(chǎn)生關(guān)系,子父類關(guān)系?
* B:繼承案例演示:
?? ?* 動(dòng)物類,貓類,狗類
?? ?* 定義兩個(gè)屬性(顏色,腿的個(gè)數(shù))兩個(gè)功能(吃飯,睡覺(jué))
* C:案例演示
?? ?* 使用繼承前
* D:案例演示
?? ?* 使用繼承后
###08.04_面向?qū)ο?繼承的好處和弊端)(掌握)
* A:繼承的好處
?? ?* a:提高了代碼的復(fù)用性
?? ?* b:提高了代碼的維護(hù)性
?? ?* c:讓類與類之間產(chǎn)生了關(guān)系,是多態(tài)的前提
* B:繼承的弊端
?? ?* 類的耦合性增強(qiáng)了。
?? ?
?? ?* 開(kāi)發(fā)的原則:高內(nèi)聚,低耦合。
?? ?* 耦合:類與類的關(guān)系
?? ?* 內(nèi)聚:就是自己完成某件事情的能力
###08.05_面向?qū)ο?Java中類的繼承特點(diǎn))(掌握)
* A:Java中類的繼承特點(diǎn)
?? ?* a:Java只支持單繼承,不支持多繼承。(一個(gè)兒子只能有一個(gè)爹)
?? ??? ?* 有些語(yǔ)言是支持多繼承,格式:extends 類1,類2,...
?? ?* b:Java支持多層繼承(繼承體系)
* B:案例演示
?? ?* Java中類的繼承特點(diǎn)
?? ??? ?* 如果想用這個(gè)體系的所有功能用最底層的類創(chuàng)建對(duì)象
?? ??? ?* 如果想看這個(gè)體系的共性功能,看最頂層的類?
###08.06_面向?qū)ο?繼承的注意事項(xiàng)和什么時(shí)候使用繼承)(掌握)
* A:繼承的注意事項(xiàng)
?? ?* a:子類只能繼承父類所有非私有的成員(成員方法和成員變量)
?? ?* b:子類不能繼承父類的構(gòu)造方法,但是可以通過(guò)super(馬上講)關(guān)鍵字去訪問(wèn)父類構(gòu)造方法。
?? ?* c:不要為了部分功能而去繼承
?? ?* 項(xiàng)目經(jīng)理 姓名 工號(hào) 工資 獎(jiǎng)金
?? ?* 程序員?? ?姓名 工號(hào) 工資
* B:什么時(shí)候使用繼承
?? ?* 繼承其實(shí)體現(xiàn)的是一種關(guān)系:"is a"。
?? ??? ?Person
?? ??? ??? ?Student
?? ??? ??? ?Teacher
?? ??? ?水果
?? ??? ??? ?蘋(píng)果
?? ??? ??? ?香蕉
?? ??? ??? ?橘子
?? ??? ??? ?
?? ?采用假設(shè)法。
?? ??? ?如果有兩個(gè)類A,B。只有他們符合A是B的一種,或者B是A的一種,就可以考慮使用繼承。
###08.07_面向?qū)ο?繼承中成員變量的關(guān)系)(掌握)
* A:案例演示
?? ?* a:不同名的變量
?? ?* b:同名的變量
###08.08_面向?qū)ο?this和super的區(qū)別和應(yīng)用)(掌握)
* A:this和super都代表什么
?? ?* this:代表當(dāng)前對(duì)象的引用,誰(shuí)來(lái)調(diào)用我,我就代表誰(shuí)
?? ?* super:代表當(dāng)前對(duì)象父類的引用
* B:this和super的使用區(qū)別
?? ?* a:調(diào)用成員變量
?? ??? ?* this.成員變量 調(diào)用本類的成員變量,也可以調(diào)用父類的成員變量
?? ??? ?* super.成員變量 調(diào)用父類的成員變量
?? ?* b:調(diào)用構(gòu)造方法
?? ??? ?* this(...)?? ?調(diào)用本類的構(gòu)造方法
?? ??? ?* super(...)?? ?調(diào)用父類的構(gòu)造方法
?? ?* c:調(diào)用成員方法
?? ??? ?* this.成員方法 調(diào)用本類的成員方法,也可以調(diào)用父類的方法
?? ??? ?* super.成員方法 調(diào)用父類的成員方法
?? ??? ?
###08.09_面向?qū)ο?繼承中構(gòu)造方法的關(guān)系)(掌握)
* A:案例演示
?? ?* 子類中所有的構(gòu)造方法默認(rèn)都會(huì)訪問(wèn)父類中空參數(shù)的構(gòu)造方法
* B:為什么呢?
?? ?* 因?yàn)樽宇悤?huì)繼承父類中的數(shù)據(jù),可能還會(huì)使用父類的數(shù)據(jù)。
?? ?* 所以,子類初始化之前,一定要先完成父類數(shù)據(jù)的初始化。
?? ?
?? ?* 其實(shí):
?? ??? ?* 每一個(gè)構(gòu)造方法的第一條語(yǔ)句默認(rèn)都是:super() Object類最頂層的父類。
###08.10_面向?qū)ο?繼承中構(gòu)造方法的注意事項(xiàng))(掌握)
* A:案例演示
?? ?* 父類沒(méi)有無(wú)參構(gòu)造方法,子類怎么辦?
?? ?* super解決
?? ?* this解決
* B:注意事項(xiàng)
?? ?* super(…)或者this(….)必須出現(xiàn)在構(gòu)造方法的第一條語(yǔ)句上
###08.11_面向?qū)ο?繼承中的面試題)(掌握)
* A:案例演示
* ?? ??? ?
?? ??? ?看程序?qū)懡Y(jié)果1
?? ??? ?class Fu{
?? ??? ??? ?public int num = 10;
?? ??? ??? ?public Fu(){
?? ??? ??? ??? ?System.out.println("fu");
?? ??? ??? ?}
?? ??? ?}
?? ??? ?class Zi extends Fu{
?? ??? ??? ?public int num = 20;
?? ??? ??? ?public Zi(){
?? ??? ??? ??? ?System.out.println("zi");
?? ??? ??? ?}
?? ??? ??? ?public void show(){
?? ??? ??? ??? ?int num = 30;
?? ??? ??? ??? ?System.out.println(num);
?? ??? ??? ??? ?System.out.println(this.num);
?? ??? ??? ??? ?System.out.println(super.num);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?class Test1_Extends {
?? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ?Zi z = new Zi();
?? ??? ??? ??? ?z.show();
?? ??? ??? ?}
?? ??? ?}
?? ??? ?看程序?qū)懡Y(jié)果2
?? ??? ?class Fu {
?? ??? ??? ?static {
?? ??? ??? ??? ?System.out.println("靜態(tài)代碼塊Fu");
?? ??? ??? ?}
?? ?
?? ??? ??? ?{
?? ??? ??? ??? ?System.out.println("構(gòu)造代碼塊Fu");
?? ??? ??? ?}
?? ?
?? ??? ??? ?public Fu() {
?? ??? ??? ??? ?System.out.println("構(gòu)造方法Fu");
?? ??? ??? ?}
?? ??? ?}
?? ?
?? ??? ?class Zi extends Fu {
?? ??? ??? ?static {
?? ??? ??? ??? ?System.out.println("靜態(tài)代碼塊Zi");
?? ??? ??? ?}
?? ?
?? ??? ??? ?{
?? ??? ??? ??? ?System.out.println("構(gòu)造代碼塊Zi");
?? ??? ??? ?}
?? ?
?? ??? ??? ?public Zi() {
?? ??? ??? ??? ?System.out.println("構(gòu)造方法Zi");
?? ??? ??? ?}
?? ??? ?}
?? ?
?? ??? ?Zi z = new Zi(); 請(qǐng)執(zhí)行結(jié)果。
###08.12_面向?qū)ο?繼承中成員方法關(guān)系)(掌握)
* A:案例演示
?? ?* a:不同名的方法
?? ?* b:同名的方法
###08.13_面向?qū)ο?方法重寫(xiě)概述及其應(yīng)用)(掌握)
* A:什么是方法重寫(xiě)
?? ?* 重寫(xiě):子父類出現(xiàn)了一模一樣的方法(注意:返回值類型可以是子父類,這個(gè)我們學(xué)完面向?qū)ο笾v)?
* B:方法重寫(xiě)的應(yīng)用:
?? ?* 當(dāng)子類需要父類的功能,而功能主體子類有自己特有內(nèi)容時(shí),可以重寫(xiě)父類中的方法。這樣,即沿襲了父類的功能,又定義了子類特有的內(nèi)容。
* C:案例演示
?? ?* a:定義一個(gè)手機(jī)類。
###08.14_面向?qū)ο?方法重寫(xiě)的注意事項(xiàng))(掌握)
* A:方法重寫(xiě)注意事項(xiàng)
?? ?* a:父類中私有方法不能被重寫(xiě)
?? ??? ?* 因?yàn)楦割愃接蟹椒ㄗ宇惛揪蜔o(wú)法繼承
?? ?* b:子類重寫(xiě)父類方法時(shí),訪問(wèn)權(quán)限不能更低
?? ??? ?* 最好就一致
?? ?* c:父類靜態(tài)方法,子類也必須通過(guò)靜態(tài)方法進(jìn)行重寫(xiě)
?? ??? ?* 其實(shí)這個(gè)算不上方法重寫(xiě),但是現(xiàn)象確實(shí)如此,至于為什么算不上方法重寫(xiě),多態(tài)中我會(huì)講解(靜態(tài)只能覆蓋靜態(tài))
?? ??? ?
?? ?* 子類重寫(xiě)父類方法的時(shí)候,最好聲明一模一樣。
* B:案例演示
?? ?* 方法重寫(xiě)注意事項(xiàng)
###08.15_面向?qū)ο?方法重寫(xiě)的面試題)(掌握)
* A:方法重寫(xiě)的面試題
?? ?* Override和Overload的區(qū)別?Overload能改變返回值類型嗎?
?? ?* overload可以改變返回值類型,只看參數(shù)列表
?? ?* 方法重寫(xiě):子類中出現(xiàn)了和父類中方法聲明一模一樣的方法。與返回值類型有關(guān),返回值是一致(或者是子父類)的
?? ?
?? ?* 方法重載:本類中出現(xiàn)的方法名一樣,參數(shù)列表不同的方法。與返回值類型無(wú)關(guān)。
?? ?* 子類對(duì)象調(diào)用方法的時(shí)候:
?? ??? ?* 先找子類本身,再找父類。
###08.16_面向?qū)ο?使用繼承前的學(xué)生和老師案例)(掌握)
* A:案例演示
?? ?* 使用繼承前的學(xué)生和老師案例
?? ?* 屬性:姓名,年齡
?? ?* 行為:吃飯
?? ?* 老師有特有的方法:講課
?? ?* 學(xué)生有特有的方法:學(xué)習(xí)
###08.17_面向?qū)ο?使用繼承后的學(xué)生和老師案例)(掌握)
* A:案例演示
?? ?* 使用繼承后的學(xué)生和老師案例
###08.18_面向?qū)ο?貓狗案例分析,實(shí)現(xiàn)及測(cè)試)(掌握)
* A:貓狗案例分析
* B:案例演示
?? ?* 貓狗案例繼承版
?? ?* 屬性:毛的顏色,腿的個(gè)數(shù)
?? ?* 行為:吃飯
?? ?* 貓?zhí)赜行袨?抓老鼠catchMouse
?? ?* 狗特有行為:看家lookHome
###08.19_面向?qū)ο?final關(guān)鍵字修飾類,方法以及變量的特點(diǎn))(掌握)
* A:final概述
* B:final修飾特點(diǎn)
?? ?* 修飾類,類不能被繼承
?? ?* 修飾變量,變量就變成了常量,只能被賦值一次
?? ?* 修飾方法,方法不能被重寫(xiě)
* C:案例演示
?? ?* final修飾特點(diǎn)
###08.20_面向?qū)ο?final關(guān)鍵字修飾局部變量)(掌握)
* A:案例演示
?? ?* 方法內(nèi)部或者方法聲明上都演示一下(了解)
?? ?* 基本類型,是值不能被改變
?? ?* 引用類型,是地址值不能被改變,對(duì)象中的屬性可以改變
###08.21_面向?qū)ο?final修飾變量的初始化時(shí)機(jī))(掌握)
* A:final修飾變量的初始化時(shí)機(jī)
?? ?* 顯示初始化?
?? ?* 在對(duì)象構(gòu)造完畢前即可
?? ?
###08.22_day08總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍。
###10.01_面向?qū)ο?package關(guān)鍵字的概述及作用)(了解)
* A:為什么要有包
?? ?* 將字節(jié)碼(.class)進(jìn)行分類存放?
?? ?* 包其實(shí)就是文件夾
* B:包的概述
*?
?? ?舉例:
?? ??? ?學(xué)生:增加,刪除,修改,查詢
?? ??? ?老師:增加,刪除,修改,查詢
?? ??? ?...
?? ??? ?
?? ??? ?方案1:按照功能分
?? ??? ??? ?com.heima.add
?? ??? ??? ??? ?AddStudent
?? ??? ??? ??? ?AddTeacher
?? ??? ??? ?com.heima.delete
?? ??? ??? ??? ?DeleteStudent
?? ??? ??? ??? ?DeleteTeacher
?? ??? ??? ?com.heima.update
?? ??? ??? ??? ?UpdateStudent
?? ??? ??? ??? ?UpdateTeacher
?? ??? ??? ?com.heima.find
?? ??? ??? ??? ?FindStudent
?? ??? ??? ??? ?FindTeacher
?? ??? ?
?? ??? ?方案2:按照模塊分
?? ??? ??? ?com.heima.teacher
?? ??? ??? ??? ?AddTeacher
?? ??? ??? ??? ?DeleteTeacher
?? ??? ??? ??? ?UpdateTeacher
?? ??? ??? ??? ?FindTeacher
?? ??? ??? ?com.heima.student
?? ??? ??? ??? ?AddStudent
?? ??? ??? ??? ?DeleteStudent
?? ??? ??? ??? ?UpdateStudent
?? ??? ??? ??? ?FindStudent
###10.02_面向?qū)ο?包的定義及注意事項(xiàng))(掌握)
* A:定義包的格式
?? ?* package 包名;
?? ?* 多級(jí)包用.分開(kāi)即可
* B:定義包的注意事項(xiàng)
?? ?* A:package語(yǔ)句必須是程序的第一條可執(zhí)行的代碼
?? ?* B:package語(yǔ)句在一個(gè)java文件中只能有一個(gè)
?? ?* C:如果沒(méi)有package,默認(rèn)表示無(wú)包名
* C:案例演示
?? ?* 包的定義及注意事項(xiàng)
?? ?
###10.03_面向?qū)ο?帶包的類編譯和運(yùn)行)(掌握)
* A:如何編譯運(yùn)行帶包的類
?? ?* a:javac編譯的時(shí)候帶上-d即可
?? ??? ?* javac -d . HelloWorld.java
?? ?* b:通過(guò)java命令執(zhí)行。
?? ??? ?* java 包名.HellWord
###10.04_面向?qū)ο?不同包下類之間的訪問(wèn))(掌握)
* A:案例演示
?? ?* 不同包下類之間的訪問(wèn)
###10.05_面向?qū)ο?import關(guān)鍵字的概述和使用)(掌握)
* A:案例演示
?? ?* 為什么要有import
?? ??? ?* 其實(shí)就是讓有包的類對(duì)調(diào)用者可見(jiàn),不用寫(xiě)全類名了?
* B:導(dǎo)包格式
?? ?* import 包名;
?? ?* 注意:
?? ?* 這種方式導(dǎo)入是到類的名稱。
?? ?* 雖然可以最后寫(xiě)*,但是不建議。
* C:package,import,class有沒(méi)有順序關(guān)系(面試題)
###10.06_面向?qū)ο?四種權(quán)限修飾符的測(cè)試)(掌握)
* A:案例演示
?? ?* 四種權(quán)限修飾符
* B:結(jié)論
*?
?? ??? ??? ??? ??? ?本類?? ? 同一個(gè)包下(子類和無(wú)關(guān)類)?? ?不同包下(子類)?? ?不同包下(無(wú)關(guān)類)
?? ??? ?private ?? ?Y?? ??? ?
?? ??? ?默認(rèn)?? ??? ??? ?Y?? ??? ?Y
?? ??? ?protected?? ?Y?? ??? ?Y?? ??? ??? ??? ??? ??? ??? ?Y
?? ??? ?public?? ??? ?Y?? ??? ?Y?? ??? ??? ??? ??? ??? ??? ?Y?? ??? ??? ??? ?Y
###10.07_面向?qū)ο?類及其組成所使用的常見(jiàn)修飾符)(掌握)
* A:修飾符:
?? ?* 權(quán)限修飾符:private,默認(rèn)的,protected,public
?? ?* 狀態(tài)修飾符:static,final
?? ?* 抽象修飾符:abstract
* B:類:
?? ?* 權(quán)限修飾符:默認(rèn)修飾符,public
?? ?* 狀態(tài)修飾符:final
?? ?* 抽象修飾符:abstract
?? ?
?? ?* 用的最多的就是:public
?? ?
* C:成員變量:
?? ?* 權(quán)限修飾符:private,默認(rèn)的,protected,public
?? ?* 狀態(tài)修飾符:static,final
?? ?
?? ?* 用的最多的就是:private
?? ?
* D:構(gòu)造方法:
?? ?* 權(quán)限修飾符:private,默認(rèn)的,protected,public
?? ?
?? ?* 用的最多的就是:public
?? ?
* E:成員方法:
?? ?* 權(quán)限修飾符:private,默認(rèn)的,protected,public
?? ?* 狀態(tài)修飾符:static,final
?? ?* 抽象修飾符:abstract
?? ?
?? ?* 用的最多的就是:public
?? ?
* F:除此以外的組合規(guī)則:
?? ?* 成員變量:public static final
?? ?* 成員方法:
?? ??? ?* public static?
?? ? ? ?* public abstract
?? ??? ?* public final
###10.08_面向?qū)ο?內(nèi)部類概述和訪問(wèn)特點(diǎn))(了解)
* A:內(nèi)部類概述
* B:內(nèi)部類訪問(wèn)特點(diǎn)
?? ?* a:內(nèi)部類可以直接訪問(wèn)外部類的成員,包括私有。
?? ?* b:外部類要訪問(wèn)內(nèi)部類的成員,必須創(chuàng)建對(duì)象。
?? ?* 外部類名.內(nèi)部類名 對(duì)象名 = 外部類對(duì)象.內(nèi)部類對(duì)象;
* C:案例演示
?? ?* 內(nèi)部類極其訪問(wèn)特點(diǎn)
?? ?
###10.09_面向?qū)ο?成員內(nèi)部類私有使用)(了解)
* private
###10.10_面向?qū)ο?靜態(tài)成員內(nèi)部類)(了解)
* static
* B:成員內(nèi)部類被靜態(tài)修飾后的訪問(wèn)方式是:
?? ?* 外部類名.內(nèi)部類名 對(duì)象名 = 外部類名.內(nèi)部類對(duì)象;
###10.11_面向?qū)ο?成員內(nèi)部類的面試題)(掌握)
* A:面試題
*?
?? ??? ?要求:使用已知的變量,在控制臺(tái)輸出30,20,10。
?? ??? ?
?? ??? ?class Outer {
?? ??? ??? ?public int num = 10;
?? ??? ??? ?class Inner {
?? ??? ??? ??? ?public int num = 20;
?? ??? ??? ??? ?public void show() {
?? ??? ??? ??? ??? ?int num = 30;
?? ??? ??? ??? ??? ?System.out.println(?);
?? ??? ??? ??? ??? ?System.out.println(??);
?? ??? ??? ??? ??? ?System.out.println(???);
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?class InnerClassTest {
?? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ?Outer.Inner oi = new Outer().new Inner();
?? ??? ??? ??? ?oi.show();
?? ??? ??? ?}?? ?
?? ??? ?}
###10.12_面向?qū)ο?局部?jī)?nèi)部類訪問(wèn)局部變量的問(wèn)題)(掌握)
* A:案例演示
?? ?* 局部?jī)?nèi)部類訪問(wèn)局部變量必須用final修飾
?? ?* 局部?jī)?nèi)部類在訪問(wèn)他所在方法中的局部變量必須用final修飾,為什么?
?? ??? ?因?yàn)楫?dāng)調(diào)用這個(gè)方法時(shí),局部變量如果沒(méi)有用final修飾,他的生命周期和方法的生命周期是一樣的,當(dāng)方法彈棧,這個(gè)局部變量也會(huì)消失,那么如果局部?jī)?nèi)部類對(duì)象還沒(méi)有馬上消失想用這個(gè)局部變量,就沒(méi)有了,如果用final修飾會(huì)在類加載的時(shí)候進(jìn)入常量池,即使方法彈棧,常量池的常量還在,也可以繼續(xù)使用
?? ??? ?但是jdk1.8取消了這個(gè)事情,所以我認(rèn)為這是個(gè)bug
###10.13_面向?qū)ο?匿名內(nèi)部類的格式和理解)
* A:匿名內(nèi)部類
?? ?* 就是內(nèi)部類的簡(jiǎn)化寫(xiě)法。
* B:前提:存在一個(gè)類或者接口
?? ?* 這里的類可以是具體類也可以是抽象類。
* C:格式:
*?
?? ??? ?new 類名或者接口名(){
?? ??? ??? ?重寫(xiě)方法;
?? ??? ?}
* D:本質(zhì)是什么呢?
?? ?* 是一個(gè)繼承了該類或者實(shí)現(xiàn)了該接口的子類匿名對(duì)象。
* E:案例演示
?? ?* 按照要求來(lái)一個(gè)匿名內(nèi)部類
?? ??? ?
###10.14_面向?qū)ο?匿名內(nèi)部類重寫(xiě)多個(gè)方法調(diào)用)
* A:案例演示
?? ?* 匿名內(nèi)部類的方法調(diào)用
###10.15_面向?qū)ο?匿名內(nèi)部類在開(kāi)發(fā)中的應(yīng)用)
* A:代碼如下
*?
?? ??? ?//這里寫(xiě)抽象類,接口都行
?? ??? ?abstract class Person {
?? ??? ??? ?public abstract void show();
?? ??? ?}
?? ?
?? ??? ?class PersonDemo {
?? ??? ??? ?public void method(Person p) {
?? ??? ??? ??? ?p.show();
?? ??? ??? ?}
?? ??? ?}
?? ?
?? ??? ?class PersonTest {
?? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ?//如何調(diào)用PersonDemo中的method方法呢?
?? ??? ??? ??? ?PersonDemo pd = new PersonDemo ();
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ?}
###10.16_面向?qū)ο?匿名內(nèi)部類的面試題)
* A:面試題
*?
?? ??? ?按照要求,補(bǔ)齊代碼
?? ??? ?interface Inter { void show(); }
?? ??? ?class Outer { //補(bǔ)齊代碼 }
?? ??? ?class OuterDemo {
?? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ? ?Outer.method().show();
?? ??? ??? ? ?}
?? ??? ?}
?? ??? ?要求在控制臺(tái)輸出”HelloWorld”
###10.17_day10總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍。
###11.01_Java開(kāi)發(fā)工具(常見(jiàn)開(kāi)發(fā)工具介紹)(了解)
* A:操作系統(tǒng)自帶的記事本軟件
* B:高級(jí)記事本軟件
* C:集成開(kāi)發(fā)環(huán)境 IDE
?? ?* (Integrated Development Environment)
* D:Eclipse和MyEclipse的區(qū)別
?? ?* a:Eclipse是一種可擴(kuò)展的開(kāi)放源代碼的IDE。
?? ?* b:Eclipse的特點(diǎn)描述
?? ??? ?* 免費(fèi)
?? ??? ?* 純Java語(yǔ)言編寫(xiě)
?? ??? ?* 免安裝
?? ??? ?* 擴(kuò)展性強(qiáng)
?? ?* c:MyEclipse
?? ??? ?* 在Eclipse基礎(chǔ)上追加的功能性插件,對(duì)插件收費(fèi)
?? ??? ?* 在WEB開(kāi)發(fā)中提供強(qiáng)大的系統(tǒng)架構(gòu)平臺(tái)
* E:下載 http://eclipse.org/
?? ?* org是非盈利團(tuán)體?
* F:安裝
?? ?* 綠色版?? ?解壓就可以使用(Eclipse)
?? ?* 安裝版 ? 雙擊運(yùn)行,一路next即可(JDK)
* G:卸載
?? ?* 綠色版?? ?直接刪除文件夾即可
?? ?* 安裝版 專業(yè)卸載軟件或者控制面板添加刪除程序
###11.02_Java開(kāi)發(fā)工具(Eclipse中HelloWorld案例以及漢化)(了解)
* A:選擇工作空間
?? ?* 工作空間 ?其實(shí)就是我們寫(xiě)的源代碼所在的目錄
* B:用Eclipse來(lái)完成一個(gè)HelloWorld案例
?? ?* 代碼以項(xiàng)目為基本單位
?? ?* 創(chuàng)建項(xiàng)目
?? ?* 創(chuàng)建包
?? ?* 創(chuàng)建類
?? ?* 編寫(xiě)代碼
* C:編譯和運(yùn)行
* D:Eclipse的漢化
?? ?* 從Eclipse3.5開(kāi)始,安裝目錄下就多了一個(gè)dropins目錄,只要將插件解壓后放到到該目錄即可。
?? ?* 同理,這種方式卸載插件也是特別的方便,推薦這種方式
* E:語(yǔ)法檢查提示
?? ?* 紅色波浪線
?? ??? ?* 必須處理,否則編譯通不過(guò)
?? ?* 黃色波浪線?? ?
?? ??? ?* 可以不搭理他?
###11.03_Java開(kāi)發(fā)工具(Eclipse的視窗和視圖概述)(了解)
* A:視窗 ?每一個(gè)基本的窗體被稱為視窗
?? ?* PackageExplorer ?顯示項(xiàng)目結(jié)構(gòu),包,類,及資源
?? ?* Outline ? 顯示類的結(jié)構(gòu),方便查找,識(shí)別,修改
?? ?* Console ?程序運(yùn)行的結(jié)果在該窗口顯示
?? ?* Hierarchy 顯示Java繼承層次結(jié)構(gòu),選中類后F4
* B:視圖 ?是由某些視窗的組合而成的
?? ?* Java視圖
?? ?* Debug視圖
###11.04_Java開(kāi)發(fā)工具(Eclipse工作空間的基本配置)(掌握)
* A:程序的編譯和運(yùn)行的環(huán)境配置(一般不改)
?? ?* window -- Preferences -- Java
?? ?* 編譯環(huán)境:Compiler?? ?默認(rèn)選中的就是最高版本。
?? ?* 運(yùn)行環(huán)境:Installed JREs?? ?默認(rèn)會(huì)找你安裝的那個(gè)JDK。建議配置了Java的環(huán)境變量。
?? ?* 問(wèn)題:
?? ??? ?* 低編譯,高運(yùn)行。可以。
?? ??? ?* 高編譯,低運(yùn)行。不可以。
?? ??? ?* 建議,編譯和運(yùn)行的版本一致。
* B:如何去掉默認(rèn)注釋?
?? ?* window -- Preferences -- Java -- Code Style -- Code Templates
?? ?* 選擇你不想要的內(nèi)容,通過(guò)右邊Edit編輯。
?? ?* 注意:請(qǐng)只刪除注釋部分,不是注釋部分的不要?jiǎng)h除。
* C:行號(hào)的顯示和隱藏
?? ?* 顯示:在代碼區(qū)域的最左邊的空白區(qū)域,右鍵 -- Show Line Numbers即可。
?? ?* 隱藏:把上面的動(dòng)作再做一次。
* D:字體大小及顏色
?? ?* a:Java代碼區(qū)域的字體大小和顏色:
?? ??? ?* window -- Preferences -- General -- Appearance -- Colors And Fonts --Java修改 -- Java Edit Text Font
?? ?* b:控制臺(tái)
?? ??? ?* window -- Preferences -- General -- Appearance -- Colors And Fonts -- Debug -- Console font
?? ?* c:其他文件
?? ??? ?* window -- Preferences -- General -- Appearance -- Colors And Fonts -- Basic -- Text Font
* E:窗體給弄亂了,怎么辦?
?? ?* window -- Reset Perspective
* F:控制臺(tái)找不到了,怎么辦?
?? ?* Window--Show View—Console
* G:取消懸浮提示
?? ?* window -- Preferences -- Java--Editor--Hovers。右邊將Combined Hover勾去掉。
?? ?* 這樣代碼的懸浮框就不會(huì)自動(dòng)出現(xiàn)了。如果想看提示,將光標(biāo)懸浮在代碼上,按F2即可。
?
###11.05_Java開(kāi)發(fā)工具(Eclipse中內(nèi)容輔助鍵的使用)(掌握)
* A:Alt+/ 起提示作用
* B:main+alt+/,syso+alt+/,給出其他提示
* C:補(bǔ)充輸出語(yǔ)句,選中需要輸出的部分,alt+/選擇最后一項(xiàng)即可
* C:定義自己的alt + /
?? ?* windows--perference-Java-Editor-Templates--New
###11.06_Java開(kāi)發(fā)工具(Eclipse中快捷鍵的使用)(掌握)
* A:新建 ctrl + n
* B:格式化 ?ctrl+shift+f
* C:導(dǎo)入包 ?ctrl+shift+o?
* D:注釋 ?ctrl+/,ctrl+shift+/,ctrl+shift+\
* E:代碼上下移動(dòng) 選中代碼alt+上/下箭頭
* F:查看源碼 ?選中類名(F3或者Ctrl+鼠標(biāo)點(diǎn)擊)
* G:查找具體的類 ctrl + shift + t
* H:查找具體類的具體方法 ctrl + o
* I:給建議 ctrl+1,根據(jù)右邊生成左邊的數(shù)據(jù)類型,生成方法
* J:刪除代碼 ctrl + d
* K:抽取方法alt + shift + m?
* L:改名alt + shift + r?
*?
###11.07_Java開(kāi)發(fā)工具(Eclipse中如何提高開(kāi)發(fā)效率)(掌握)
* alt + shift + s
* A:自動(dòng)生成構(gòu)造方法
* B:自動(dòng)生成get/set方法
###11.08_Java開(kāi)發(fā)工具(Eclipse中一個(gè)標(biāo)準(zhǔn)學(xué)生類及其測(cè)試)(掌握)
* A:案例演示
?? ?* 用Eclipse實(shí)現(xiàn)標(biāo)準(zhǔn)學(xué)生類及其測(cè)試
###11.09_Java開(kāi)發(fā)工具(Eclipse中接口抽象類具體類代碼體現(xiàn))(掌握)
* A:案例演示
?? ?* 用Eclipse實(shí)現(xiàn)接口抽象類具體類代碼
###11.10_Java開(kāi)發(fā)工具(Eclipse中如何生成jar包并導(dǎo)入到項(xiàng)目中)(了解)
* A:jar是什么?
?? ?* jar是多個(gè)class文件的壓縮包。
* B:jar有什么用?
?? ?* 用別人寫(xiě)好的東西?? ?
* C:打jar包
?? ?* 選中項(xiàng)目--右鍵--Export--Java--Jar--自己指定一個(gè)路徑和一個(gè)名稱--Finish
* D:導(dǎo)入jar包
?? ?* 復(fù)制到項(xiàng)目路徑下并添加至構(gòu)建路徑。
###11.11_Java開(kāi)發(fā)工具(Eclipse中如何刪除項(xiàng)目和導(dǎo)入項(xiàng)目)(掌握)
* A:刪除項(xiàng)目
?? ?* 選中項(xiàng)目 – 右鍵 – 刪除
?? ??? ?* 從項(xiàng)目區(qū)域中刪除
?? ??? ?* 從硬盤(pán)上刪除
* B:導(dǎo)入項(xiàng)目
?? ?* 在項(xiàng)目區(qū)域右鍵找到import
?? ?* 找到General,展開(kāi),并找到
?? ?* Existing Projects into Workspace
?? ?* 點(diǎn)擊next,然后選擇你要導(dǎo)入的項(xiàng)目
?? ?* 注意:這里選擇的是項(xiàng)目名稱
###11.12_Java開(kāi)發(fā)工具(Eclipse中斷點(diǎn)調(diào)試的基本使用)(了解)
* A:Debug的作用
?? ?* 調(diào)試程序
?? ?* 查看程序執(zhí)行流程
* B:如何查看程序執(zhí)行流程?? ??? ?
?? ?* 什么是斷點(diǎn):
?? ??? ?* 就是一個(gè)標(biāo)記,從哪里開(kāi)始。
?? ??? ?
?? ?* 如何設(shè)置斷點(diǎn):
?? ??? ?* 你想看哪里的程序,你就在那個(gè)有效程序的左邊雙擊即可。
?? ??? ?
?? ?* 在哪里設(shè)置斷點(diǎn):
?? ??? ?* 哪里不會(huì)點(diǎn)哪里。
?? ??? ?* 目前:我們就在每個(gè)方法的第一條有效語(yǔ)句上都加。
?? ??? ?
?? ?* 如何運(yùn)行設(shè)置斷點(diǎn)后的程序:
?? ??? ?* 右鍵 -- Debug as -- Java Application
?? ??? ?
?? ?* 看哪些地方:
?? ??? ?* Debug:斷點(diǎn)測(cè)試的地方
?? ??? ??? ?* 在這個(gè)地方,記住F6,或者點(diǎn)擊也可以。一次看一行的執(zhí)行過(guò)程。
?? ??? ?* Variables:查看程序的變量變化
?? ??? ?* ForDemo:被查看的源文件
?? ??? ?* Console:控制臺(tái)
?? ??? ?
?? ?* 如何去斷點(diǎn):
?? ??? ?* a:再次雙擊即可
?? ??? ?* b:找到Debug視圖,Variables界面,找到Breakpoints,并點(diǎn)擊,然后看到所有的斷點(diǎn),最后點(diǎn)擊那個(gè)雙叉。
###11.13_Java開(kāi)發(fā)工具(Eclipse查看Java中參數(shù)傳遞問(wèn)題)(了解)
* A:斷點(diǎn)演示
?? ?* 斷點(diǎn)查看Java中參數(shù)傳遞問(wèn)題
###11.14_常見(jiàn)對(duì)象(API概述)(了解)
* A:API(Application Programming Interface)?
?? ?* 應(yīng)用程序編程接口
* B:Java API
?? ?* 就是Java提供給我們使用的類,這些類將底層的實(shí)現(xiàn)封裝了起來(lái),
?? ?* 我們不需要關(guān)心這些類是如何實(shí)現(xiàn)的,只需要學(xué)習(xí)這些類如何使用。
###11.15_常見(jiàn)對(duì)象(Object類的概述)(了解)
* A:Object類概述
?? ?* 類層次結(jié)構(gòu)的根類
?? ?* 所有類都直接或者間接的繼承自該類
* B:構(gòu)造方法
?? ?* public Object()
?? ?* 回想面向?qū)ο笾袨槭裁凑f(shuō):
?? ?* 子類的構(gòu)造方法默認(rèn)訪問(wèn)的是父類的無(wú)參構(gòu)造方法
###11.16_常見(jiàn)對(duì)象(Object類的hashCode()方法)(了解)
* A:案例演示
?? ?* public int hashCode()
?? ?* a:返回該對(duì)象的哈希碼值。默認(rèn)情況下,該方法會(huì)根據(jù)對(duì)象的地址來(lái)計(jì)算。
?? ?* b:不同對(duì)象的,hashCode()一般來(lái)說(shuō)不會(huì)相同。但是,同一個(gè)對(duì)象的hashCode()值肯定相同。
###11.17_常見(jiàn)對(duì)象(Object類的getClass()方法)(在反射的時(shí)候掌握)
* A:案例演示
?? ?* public final Class getClass()
?? ?* a:返回此 Object 的運(yùn)行時(shí)類。
?? ?* b:可以通過(guò)Class類中的一個(gè)方法,獲取對(duì)象的真實(shí)類的全名稱。?? ?
?? ??? ?* public String getName()
###11.18_常見(jiàn)對(duì)象(Object類的toString()方法)(掌握)
* A:案例演示
?? ?* public String toString()
?? ?* a:返回該對(duì)象的字符串表示。
*?
?? ??? ?
?? ??? ?public Stirng toString() {
?? ??? ??? ?return name + "," + age;
?? ??? ?}
?? ?* b:它的值等于:?
?? ??? ?* getClass().getName() + "@" + Integer.toHexString(hashCode())?
?? ?* c:由于默認(rèn)情況下的數(shù)據(jù)對(duì)我們來(lái)說(shuō)沒(méi)有意義,一般建議重寫(xiě)該方法。
* B:最終版
?? ?* 自動(dòng)生成
###11.19_常見(jiàn)對(duì)象(Object類的equals()方法)(掌握)
* A:案例演示
?? ?* a:指示其他某個(gè)對(duì)象是否與此對(duì)象“相等”。?
?? ?* b:默認(rèn)情況下比較的是對(duì)象的引用是否相同。
?? ?* c:由于比較對(duì)象的引用沒(méi)有意義,一般建議重寫(xiě)該方法。
###11.20_常見(jiàn)對(duì)象(==號(hào)和equals方法的區(qū)別)(掌握)
* ==是一個(gè)比較運(yùn)算符號(hào),既可以比較基本數(shù)據(jù)類型,也可以比較引用數(shù)據(jù)類型,基本數(shù)據(jù)類型比較的是值,引用數(shù)據(jù)類型比較的是地址值
* equals方法是一個(gè)方法,只能比較引用數(shù)據(jù)類型,所有的對(duì)象都會(huì)繼承Object類中的方法,如果沒(méi)有重寫(xiě)Object類中的equals方法,equals方法和==號(hào)比較引用數(shù)據(jù)類型無(wú)區(qū)別,重寫(xiě)后的equals方法比較的是對(duì)象中的屬性
###11.21_day11總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍。
。
總結(jié)
以上是生活随笔為你收集整理的JavaSE基础知识(附上代码实现)1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 知识图谱综述浅谈
- 下一篇: MindFusion教程:Chartin