版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章緒論本章學(xué)習(xí)內(nèi)容Java應(yīng)用與歷史Java特點(diǎn)Java學(xué)習(xí)目標(biāo)與方法Java運(yùn)行環(huán)境安裝與配置Java集成開(kāi)發(fā)環(huán)境Java常用類1.Java基本概念-Java的應(yīng)用Java是一門(mén)工程類語(yǔ)言應(yīng)用非常廣泛Java企業(yè)級(jí)應(yīng)用移動(dòng)/嵌入式應(yīng)用開(kāi)發(fā)其他網(wǎng)絡(luò)服務(wù)器、算法庫(kù)、游戲等等1.Java基本概念-歷史1991JamesGosling等發(fā)起了Java語(yǔ)言項(xiàng)目Java最開(kāi)始起名為Oak,應(yīng)用于交互電視1995Sun公司發(fā)布Java1.0承諾"Writeonce,runanywhere"1998-2002發(fā)布J2SE1.2-1.42004發(fā)布J2SE5.0為了更好的反映Java開(kāi)發(fā)的成熟度2006發(fā)布JavaSE62009年Oracle收購(gòu)了Sun公司,2011JavaSE72014JavaSE8,截至2022年依然廣泛使用2018
Java
11(LTS版本),
2021
Java
17(版本)1.Java基本概念-歷史2009-2010期間Sun公司被Oracle收購(gòu),2011Oracle發(fā)布JavaSE72014發(fā)布JavaSE82017發(fā)布JavaSE92018發(fā)布JavaSE10未來(lái)…2.Java特點(diǎn)Java語(yǔ)言主要特點(diǎn)簡(jiǎn)單具有垃圾回收機(jī)制,無(wú)需直接管理內(nèi)存面向?qū)ο罂缙脚_(tái)Writeonce,runanywhere生態(tài)完善Java類庫(kù)完善、大量第三方類庫(kù)IDE強(qiáng)大(Eclipse、IntelliJIDEA等)從業(yè)人員多2.第一個(gè)Java程序基本功能輸出HelloWorld基本概念class關(guān)鍵字
類,HelloWorld類名main方法:程序入口println函數(shù):一般用于將字符串輸出到控制臺(tái)2.Java程序的建立、編譯、運(yùn)行1.建立一個(gè)文本文件HelloWorld.java擴(kuò)展名:.java,代表Java源程序2.編譯Java源程序,生成HelloWorld.classjavacHelloWorld.java注:HelloWorld.class是字節(jié)碼(bytecode)文件3.載入Java字節(jié)碼文件并運(yùn)行javaHelloWorld注1:java后面跟的是類名,不是文件名!注2:文件名、類名大小寫(xiě)敏感2.HelloWorld詳解主文件名與聲明為public的類名要相同System.out.printlnSystem是類,out是System內(nèi)一個(gè)對(duì)象println是out對(duì)象的方法2.HelloWorld詳解String[]args一個(gè)String數(shù)組,包含控制臺(tái)傳入的多個(gè)參數(shù)執(zhí)行javaHelloWorld112233將112233作為控制臺(tái)參數(shù)傳入程序傳入?yún)?shù)類型:String2.Java特點(diǎn)-跨平臺(tái)Java的跨平臺(tái)特性Java字節(jié)碼文件可以在多個(gè)操作系統(tǒng)上運(yùn)行前提:每個(gè)操作系統(tǒng)裝上對(duì)應(yīng)版本的虛擬機(jī)虛擬機(jī)是Java跨平臺(tái)運(yùn)行的關(guān)鍵2.Java特點(diǎn)-虛擬機(jī)虛擬機(jī)(JavaVirtualMachine,JVM)一個(gè)抽象的可運(yùn)行Java程序的計(jì)算機(jī)。不是真實(shí)的機(jī)器,只是一段程序,該程序可運(yùn)行字節(jié)碼程序字節(jié)碼程序只和虛擬機(jī)打交道不和操作系統(tǒng)交互字節(jié)碼文件平臺(tái)中立、結(jié)構(gòu)無(wú)關(guān)Java運(yùn)行時(shí)環(huán)境(JavaRuntimeEnvironment)JRE是一個(gè)軟件包,包含:虛擬機(jī)運(yùn)行Java所需的Java類庫(kù)2.Java特點(diǎn)-JDKJava開(kāi)發(fā)工具(JavaDevelopmentKit)包含了JRE、包含了Java開(kāi)發(fā)人員所需的開(kāi)發(fā)工具javac編譯器、javap反編譯工具JVM、JRE、JDK之間的關(guān)系JDK包含了JRE、JRE包含了JVM普通用戶使用JRE,Java開(kāi)發(fā)人員使用JDKOpenJDK提供了Java的開(kāi)源實(shí)現(xiàn),其他JDK是基于OpenJDKJDK的常見(jiàn)發(fā)行版本EclipseTemurin、AmazonCorretto、OracleJDK等國(guó)內(nèi):騰訊Kona、阿里巴巴Dragonwell、華為畢昇JDK2.Java程序開(kāi)發(fā)與運(yùn)行過(guò)程Java程序開(kāi)發(fā)與運(yùn)行過(guò)程總結(jié)編寫(xiě)源碼.java使用JDK中包含的編譯器進(jìn)行編譯,以生成平臺(tái)無(wú)關(guān)字節(jié)碼文件.class虛擬機(jī)載入相應(yīng)的字節(jié)碼文件在操作系統(tǒng)上運(yùn)行2.Java編程平臺(tái)JavaSE(StandardEdition)包含JavaSEAPI,提供Java語(yǔ)言的核心功能JavaEE(EnterpriseEdition)基于JavaSE,提供一些企業(yè)應(yīng)用特性現(xiàn)在叫做JakartaEEJavaME(MicroEdition)用于嵌入式與移動(dòng)設(shè)備總結(jié)基本概念跨平臺(tái)、JVM、JRE、JDK常用命令javac、java常見(jiàn)擴(kuò)展名.java.class.jarJava編程語(yǔ)言平臺(tái)JavaSE、JavaEE、JavaMEJavaFX課間練習(xí)與拓展資料3題,見(jiàn)Java預(yù)習(xí)課件參考資料:/xrq730/p/4826691.htmlJVM、JRE、JDK之間的聯(lián)系JCP、JSR虛擬機(jī)(規(guī)范、文檔)與虛擬機(jī)實(shí)現(xiàn)(如HotSpot)OracleJDK、OpenJDK3.學(xué)習(xí)Java的常用工具Java文檔Java官方在線文檔離線文檔文本編輯器Notepad++、VisualStudioCode等一個(gè)好用的Java集成開(kāi)發(fā)環(huán)境Eclipse、Netbeans、IntelliJIDEA一顆開(kāi)放、崇尚交流、好學(xué)的心學(xué)習(xí)論壇等搜索引擎3.Java學(xué)習(xí)目標(biāo)與方法學(xué)習(xí)Java的三個(gè)層面Java基本語(yǔ)法與常用類庫(kù)面向?qū)ο缶幊趟枷隞ava應(yīng)用學(xué)習(xí)方法視頻、書(shū)、線上練習(xí)
掌握基本概念、語(yǔ)法大量編程
編程能力培養(yǎng)參與項(xiàng)目開(kāi)發(fā)
實(shí)際應(yīng)用能力培養(yǎng)3.學(xué)習(xí)Java的常用工具Java文檔Java官方在線文檔離線文檔文本編輯器VisualStudioCode等一個(gè)好用的Java集成開(kāi)發(fā)環(huán)境Eclipse、Netbeans、IntelliJIDEA一顆開(kāi)放、崇尚交流、好學(xué)的心學(xué)習(xí)論壇等搜索引擎4.Java運(yùn)行環(huán)境安裝與配置見(jiàn)“Java運(yùn)行環(huán)境安裝與配置”目錄5.IDE:Eclipse基本概念Eclipse(免費(fèi)、開(kāi)源)一種集成開(kāi)發(fā)環(huán)境(IDE),用于管理Java軟件項(xiàng)目包含:編輯器、編譯器、調(diào)試器等免費(fèi)開(kāi)源基本概念工作空間(Workspace)包含多個(gè)項(xiàng)目的空間。通常需要設(shè)置某個(gè)目錄作為這個(gè)主工作區(qū)。項(xiàng)目(Project)存放并組織管理一個(gè)項(xiàng)目中的所有文件的基本單位一個(gè)項(xiàng)目通常對(duì)應(yīng)一個(gè)具體的軟件開(kāi)發(fā)任務(wù)5.Eclipse視圖Eclipse界面中的常見(jiàn)視圖(View)左側(cè):包資源管理器(PackageExplorer)中間:代碼編輯器中下:控制臺(tái)視圖(ConsoleView)
問(wèn)題視圖(Problemsview)右側(cè):類大綱(OutlineView)常見(jiàn)問(wèn)題某個(gè)view突然不見(jiàn)?選擇菜單Window-ResetPerspective或者菜單Windows-ShowView,選擇相應(yīng)的View5.Eclipse常用功能常用功能與快捷鍵快速運(yùn)行:Ctrl+F11代碼模板(內(nèi)容輔助):Alt+/main、sysout、for快速跳到函數(shù)定義處:Ctrl+點(diǎn)擊函數(shù)調(diào)用處常用功能菜單:Alt+Shift+S內(nèi)有格式化代碼、自動(dòng)生成代碼等功能小任務(wù)使用Eclipse創(chuàng)建JavaProject,新建HelloWorld.java,熟悉常見(jiàn)視圖與快捷鍵IntelliJIDEA:基本概念I(lǐng)ntelliJIDEA也是一款JavaIDECommunity版免費(fèi)、開(kāi)源Ultimate版閉源、收費(fèi)、功能強(qiáng)大幾個(gè)基本概念項(xiàng)目(Project)-頂層容器是一個(gè)工作空間(Workspace)可包含多個(gè)Module。模塊(Module)存放某個(gè)具體應(yīng)用的程序的代碼、資源等文件IDEA-視圖(view)IDEA常用功能常用功能與快捷鍵快速運(yùn)行:Shfit+F10實(shí)時(shí)模板功能main、sout、soutm、fori、iter、ifn快速修復(fù):Alt+Enter格式化代碼:Ctrl+Alt+L快速跳到函數(shù)定義處Ctrl+點(diǎn)擊方法名;
跳回:Alt+<-萬(wàn)能搜索:按兩下Shift小任務(wù)使用IDEA創(chuàng)建Project,然后在其中創(chuàng)建若干module并嘗試運(yùn)行,熟悉常見(jiàn)視圖與快捷鍵6.Java常用類目標(biāo):使用JDK文檔查詢常用類用法。String類給定一個(gè)代表身份證號(hào)碼的字符取出其中的日期信息Math類如何求開(kāi)根號(hào)?Integer、Double類parseInt、parseDouble方法print、println、printf方法print,不換行輸出;println輸出后然后換行printf,格式化輸出參考資料JDK離線文檔java中printf中用法詳解/seakt/p/4478045.html
Scanner類的使用Scanner類處理控制臺(tái)輸入處理字符串基本概念(標(biāo)記、分隔符)比如,對(duì)于“1357”常用方法next,讀入一個(gè)標(biāo)記(token,字符串類型),標(biāo)記之間以空格、多個(gè)空格或者回車(chē)換行等進(jìn)行分隔。nextInt、nextDouble…讀入標(biāo)記并轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)類型nextLine,讀入一行hasNext,判斷是否還有其他標(biāo)記Scanner類的使用小任務(wù)1(使用Scanner處理控制臺(tái)輸入):從控制臺(tái)讀入3個(gè)浮點(diǎn)數(shù),然后依次輸出,輸出的每個(gè)數(shù)之間以1個(gè)空格分隔。輸出的最后一個(gè)數(shù)后也有一個(gè)空格。對(duì)3個(gè)浮點(diǎn)數(shù)相加后開(kāi)跟號(hào),然后在第2行輸出開(kāi)根號(hào)的后的結(jié)果,并輸出回車(chē)換行。測(cè)試方法:1.控制臺(tái)直接輸入。2.在記事本中統(tǒng)一輸入完以后,復(fù)制粘貼到控制臺(tái)。小任務(wù)2(使用Scanner處理字符串):
給定一行字符串“12345”,將其中的所有標(biāo)記讀出,轉(zhuǎn)換成整型并相加,最后輸出。課程線上實(shí)驗(yàn)平臺(tái)登錄、注冊(cè)與綁定到注冊(cè)賬號(hào)。登錄系統(tǒng)后點(diǎn)擊右上角用戶-“個(gè)人中心”-使用綁定碼綁定學(xué)號(hào)與姓名。
提交第一個(gè)Java程序編程題類名必須為Main,不得有包名函數(shù)題只需要給出函數(shù)相關(guān)代碼。學(xué)會(huì)使用Scanner處理輸入與輸出測(cè)試:匹配輸出。測(cè)試技巧:批量測(cè)試。參考資料拼題網(wǎng)站
PTA中提交Java程序的一些套路/zhrb/p/6347738.html第2章Java基本語(yǔ)法主講人:羅方芳本章學(xué)習(xí)內(nèi)容Java的基本語(yǔ)法變量運(yùn)算符選擇結(jié)構(gòu)語(yǔ)句循環(huán)結(jié)構(gòu)語(yǔ)句方法數(shù)組枚舉類型1Java的基本語(yǔ)法1.1基本語(yǔ)法—Java代碼的基本格式Java代碼的基本格式Java中的程序代碼都必須放在一個(gè)類中類需使用class關(guān)鍵字定義在class前面可以有一些修飾符
1.2基本語(yǔ)法—注釋單行注釋
多行注釋文檔注釋1.3基本語(yǔ)法—Java中的標(biāo)識(shí)符標(biāo)識(shí)符編程過(guò)程中,經(jīng)常需要在程序中定義一些符號(hào)來(lái)標(biāo)記一些名稱。如,包名、類名、方法名、參數(shù)名、變量名等,這些符號(hào)被稱為標(biāo)識(shí)符。標(biāo)識(shí)符的命名規(guī)則可由任意順序的大小寫(xiě)字母、數(shù)字、下劃線(_)和美元符號(hào)($)組成不能以數(shù)字開(kāi)頭不能是Java中的關(guān)鍵字(如for,if等)。1.3基本語(yǔ)法—Java中的標(biāo)識(shí)符合法的標(biāo)識(shí)符usernameusername123_username$username變量x不合法的標(biāo)識(shí)符123usernameclass98.3HelloWorld1.4基本語(yǔ)法—Java中的關(guān)鍵字關(guān)鍵字編程語(yǔ)言里事先定義好并賦予了特殊含義的單詞不能用作標(biāo)識(shí)符Java中的關(guān)鍵字abstractbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnshortstaticstrictfpsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhileassertenum1.5基本語(yǔ)法—Java中的常量常量就是在程序中固定不變的值,是不能改變的數(shù)據(jù)。finalintx=10;//現(xiàn)在不能對(duì)x進(jìn)行修改如下均為字面常量值,可在代碼中直接使用100.23'a'"HelloWorld"true、falsenull2Java中的變量2.1Java中的變量——變量的定義變量的定義程序會(huì)將程序運(yùn)行時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù)保存在一些內(nèi)存單元中,每個(gè)內(nèi)存單元都用一個(gè)標(biāo)識(shí)符來(lái)標(biāo)識(shí)。這些內(nèi)存單元我們稱之為變量。定義的標(biāo)識(shí)符就是變量名。內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)就是變量的值。內(nèi)存intx0inty內(nèi)存intx0inty3y=x+32.2變量的數(shù)據(jù)類型數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型數(shù)值型字符型(char)布爾型(boolean)類(class)接口(interface)數(shù)組枚舉(enum)注解(Annotation)整數(shù)類型(byte,short,int,long)浮點(diǎn)類型(float,double)2.2變量的數(shù)據(jù)類型(1)整數(shù)類型變量用來(lái)存儲(chǔ)整數(shù)數(shù)值。即,沒(méi)有小數(shù)部分的值。整數(shù)字面常量 bytex=127;//自動(dòng)轉(zhuǎn)換inty=66;longz=2147483647+1L;
inta=100_0000;類型占用空間取值范圍byte8位(1個(gè)字節(jié))-27~27-1short16位(2個(gè)字節(jié))-215~215-1int32位(4個(gè)字節(jié))-231~231-1long64位(8個(gè)字節(jié))-263~263-18十進(jìn)制int0b1001二進(jìn)制int017八進(jìn)制int0x2F,0X2F十六進(jìn)制int3L,3l十進(jìn)制long2.2變量的數(shù)據(jù)類型(2)浮點(diǎn)數(shù)類型變量可存儲(chǔ)包含小數(shù)部分得數(shù)值。分為兩種單精度浮點(diǎn)數(shù)(float,有效位6-7位,較少使用)雙精度浮點(diǎn)數(shù)(double,有效位15位)double型的精度是float型的兩倍通常使用double型類型占用空間取值范圍float32位(4個(gè)字節(jié))1.4E-45
~3.4E+38,-3.4E+38~-1.4E-45double64位(8個(gè)字節(jié))4.9E-324~1.7E+308,-1.7E+308~-4.9E-3242.2變量的數(shù)據(jù)類型浮點(diǎn)數(shù)字面常量doublex=10.0;//最常用floatpi=3.14f;浮點(diǎn)數(shù)是不精確的!不能用于金融計(jì)算 2.0–1.1=?,1.01+2.02=?如果你余額有99.9999元,是無(wú)法買(mǎi)100元的東西3.14ffloat3.0double3.14d,3.14Ddouble123e3,123E-3double2.2變量的數(shù)據(jù)類型(3)字符類型變量用于存儲(chǔ)單個(gè)字符,在Java中用char表示。每個(gè)char類型的字符變量占用2個(gè)字節(jié),Unicode(UTF-16)字符。范圍:'\u0000'至'\uffff'賦值時(shí),要用英文半角格式的單引號(hào)('')把字符括起來(lái),如'a'。注意:
'a'與"a"不同,""與""也不同。2.2變量的數(shù)據(jù)類型以反斜杠(\)開(kāi)頭的字符,反斜杠將其后面的字符轉(zhuǎn)變?yōu)榱硗獾暮x,稱為轉(zhuǎn)義字符。常見(jiàn)轉(zhuǎn)義字符轉(zhuǎn)義字符名稱轉(zhuǎn)義字符名稱\b退格\"雙引號(hào)\t制表符\'單引號(hào)\n換行\(zhòng)\反斜杠\r回車(chē)\uxxxx十六進(jìn)制指定的Unicode字符\f換頁(yè)\xxx八進(jìn)制指定的Unicode字符2.2變量的數(shù)據(jù)類型(4)布爾類型變量用于存儲(chǔ)布爾值,在Java中用boolean表示。布爾類型變量只有兩個(gè)值,即true和false2.3變量類型的轉(zhuǎn)換把一種數(shù)據(jù)類型的值賦給另一種數(shù)據(jù)類型的變量時(shí)需進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換2.3變量類型的轉(zhuǎn)換(1)自動(dòng)類型轉(zhuǎn)換兩種數(shù)據(jù)類型在轉(zhuǎn)換的過(guò)程中不需要顯式地進(jìn)行聲明。要實(shí)現(xiàn)自動(dòng)類型轉(zhuǎn)換,必須同時(shí)滿足兩個(gè)條件:兩種數(shù)據(jù)類型彼此兼容;目標(biāo)類型的取值范圍大于源類型的取值范圍。2.3變量類型的轉(zhuǎn)換(1)自動(dòng)類型轉(zhuǎn)換doubled=20;//正確inti=20.0;//錯(cuò)誤charc='a';
shorts=c;//錯(cuò)誤longx=1024+1L;//正確charc1=65535;//正確charc2=65536;//錯(cuò)誤int
z='A'+1;//正確
(2)強(qiáng)制類型轉(zhuǎn)換當(dāng)兩種類型彼此不兼容或者目標(biāo)類型取值范圍小于源類型時(shí),自動(dòng)類型轉(zhuǎn)換無(wú)法進(jìn)行,這時(shí)就需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換的格式:
可能造成數(shù)據(jù)大小的損失
2.3變量類型的轉(zhuǎn)換目標(biāo)類型變量=(目標(biāo)類型)值會(huì)造成數(shù)據(jù)損失!2.4變量的作用域當(dāng)變量需要在它的作用范圍內(nèi)才可以被使用。在程序中,變量一定會(huì)被定義在某一對(duì)大括號(hào)中,該大括號(hào)所包含的代碼區(qū)域便是這個(gè)變量的作用域。
作用域演示3Java中的運(yùn)算符(圖缺位運(yùn)算符)3.1Java中的運(yùn)算符算術(shù)運(yùn)算符算術(shù)運(yùn)算符就是用來(lái)處理四則運(yùn)算的符號(hào)。算數(shù)運(yùn)算符分兩大類二元運(yùn)算符+-*/%(求模,也叫取余)一元運(yùn)算符+-正負(fù)號(hào)++--3.1Java中的運(yùn)算符二元算數(shù)運(yùn)算符詳解+加法運(yùn)算符:對(duì)兩個(gè)運(yùn)算數(shù)進(jìn)行加法運(yùn)算3+5,1+'a'+還可用于字符串拼接!
任何運(yùn)算數(shù)+字符串都將轉(zhuǎn)化為字符串3+"5"->"35"3.1Java中的運(yùn)算符/除法運(yùn)算符整數(shù)之間相除為取整:3/2->1,1/10->0整數(shù)與浮點(diǎn)數(shù)相除:3/2.0->1.5常見(jiàn)用法:截取數(shù)字取1998的千位與百位:1998/100%求模運(yùn)算符常用于整數(shù)取余:18%5->3可用于浮點(diǎn)數(shù):5.5%2->1.5,2%0.4->0.3999常見(jiàn)用法讓任意數(shù)不超過(guò)指定的n:x%n截取數(shù)字:1998%1003.1Java中的運(yùn)算符一元算數(shù)運(yùn)算符詳解正(+)負(fù)(-)運(yùn)算符+5,-5應(yīng)用:將x的正負(fù)號(hào)改變intx=-5;x=-x; //53.1Java中的運(yùn)算符一元算數(shù)運(yùn)算符詳解++--自增、自減運(yùn)算符變量自身加1、減1x++與x=x+1等價(jià)作為前綴,則先加。結(jié)果為增加后的值。x=5;y=++x;//該語(yǔ)句執(zhí)行完x=5,y=6作為后綴,則后加。結(jié)果為增加前的值。x=5;y=x++;//該語(yǔ)句執(zhí)行完x=6,y=53.2Java中的運(yùn)算符——賦值運(yùn)算符賦值運(yùn)算符賦值運(yùn)算符的作用就是將常量、變量或表達(dá)式的值賦給某一個(gè)變量。
=:賦值。x=3;將3賦值給x
+=
:x+=2等價(jià)于x=x+2設(shè)x=5運(yùn)算符算式結(jié)果*=x
*=
2
x=10/=x/=2x=2%=x%=2x=13.3Java中的運(yùn)算符——比較運(yùn)算符比較運(yùn)算符比較運(yùn)算符用于對(duì)兩個(gè)數(shù)值或變量進(jìn)行比較,其結(jié)果是一個(gè)布爾值,即true或false。注意
比較運(yùn)算符“==”與賦值運(yùn)算符“=”不一樣運(yùn)算符說(shuō)明例子值==判斷是否相等5==3;true==falsefalsefalse!=不相等5!=3true<小于5<3false>大于5>3true<=小于等于5<=5true>=大于等于3>=3false表達(dá)式1==2的值應(yīng)使用什么類型的變量存放?
[填空1]
作答正常使用填空題需3.0以上版本雨課堂可為此題添加文本、圖片、公式等解析,且需將內(nèi)容全部放在本區(qū)域內(nèi)。正常使用需3.0以上版本答案解析答案解析填空題1分3.4Java中的運(yùn)算符——邏輯運(yùn)算符邏輯運(yùn)算符邏輯運(yùn)算符用于對(duì)布爾型的數(shù)據(jù)進(jìn)行操作,其結(jié)果是一個(gè)布爾值。主要包含:與運(yùn)算&、短路與&&,或運(yùn)算|、短路或||異或運(yùn)算^,非運(yùn)算!注:上表也適用于&&、||與運(yùn)算值true&truetruetrue&falsefalsefalse&truefalsefalse&falsefalse或運(yùn)算值true|truetruetrue|falsetruefalse|truetruefalse|falsefalse3.4Java中的運(yùn)算符——邏輯運(yùn)算符邏輯運(yùn)算符異或運(yùn)算^:兩個(gè)布爾值不相同則為true非運(yùn)算!:對(duì)布爾值取其非異或運(yùn)算值true^truefalsefalse^falsefalsetrue^falsetruefalse^truetrue“非”運(yùn)算值!truefalse!falsetrue應(yīng)用:判斷某個(gè)變量是否為false設(shè)isExist變量用來(lái)判斷是否存在,為false代表不存在。則if(!isExist){dosth}代表,如果不存在(即,isExist為false)則dosth.3.4Java中的運(yùn)算符——邏輯運(yùn)算符邏輯“與”&&,邏輯“或”||,邏輯“非”!如果x值為101&&與||以“短路”方式求值設(shè)e1,e2為表達(dá)式e1&&e2,當(dāng)e1為false就不算e2e1||e2,當(dāng)e1為true就不算e2int
x=5,y=5,z=5;1.t=(x!=5)&y==(z=y/x);t=[填空1]z=[填空2]
2.t=(x!=5)&&y==(z=y/x);t=[填空3]z=[填空4]
注意:分別單獨(dú)計(jì)算作答正常使用填空題需3.0以上版本雨課堂可為此題添加文本、圖片、公式等解析,且需將內(nèi)容全部放在本區(qū)域內(nèi)。正常使用需3.0以上版本答案解析答案解析填空題4分3.4Java中的運(yùn)算符——邏輯運(yùn)算符邏輯運(yùn)算符使用“&”進(jìn)行運(yùn)算時(shí),不論左邊為true或者false,右邊的表達(dá)式都會(huì)進(jìn)行運(yùn)算。使用“&&”進(jìn)行運(yùn)算,當(dāng)左邊為false時(shí),右邊的表達(dá)式不會(huì)進(jìn)行運(yùn)算,因此“&&”被稱作短路與?!皘|”表示短路或,當(dāng)運(yùn)算符“||”的左邊為true時(shí),右邊的表達(dá)式不會(huì)進(jìn)行運(yùn)算例子若x=5,y=5,z=5;則t=(x!=5)&y==(z=y/x);//z=?則t=(x!=5)&&y==(z=y/x);//z=?3.5位運(yùn)算符位運(yùn)算符:包括逐位操作與移位操作逐位操作:&(按位與)|(按位或)^(按位異或)
~(按位取反)整數(shù)值二進(jìn)制910013119&319|310119^31010~9111111111111111111111111111101103.5位運(yùn)算符&運(yùn)算符常用來(lái)截取指定位數(shù)值截取任意整數(shù)低8位的值截取x的第5位值3.5位運(yùn)算符移位操作:左移(<<)、右移(>>,用符號(hào)位填充高位)、<<低位補(bǔ)0,相當(dāng)于乘2無(wú)符號(hào)右移(>>>,用0填空高位)3.6Java中的運(yùn)算符—運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)在對(duì)一些比較復(fù)雜的表達(dá)式進(jìn)行運(yùn)算時(shí),要明確表達(dá)式中所有運(yùn)算符參與運(yùn)算的先后順序,把這種順序稱作運(yùn)算符的優(yōu)先級(jí)。k=j>i&&8==m問(wèn):&&第幾個(gè)算?a=a+1
問(wèn):先算=,還是先算+?x=x+++-y問(wèn):這個(gè)表達(dá)式要干嗎?最佳實(shí)踐遇事不決加圓括號(hào)()與適當(dāng)?shù)目崭駅=(j>i)&&(8==m)x=x+++(-y)3.6Java中的運(yùn)算符—運(yùn)算符的優(yōu)先級(jí)運(yùn)算符(從上到下依次降低)備注.[]()(方法調(diào)用)!~++--()(強(qiáng)制類型轉(zhuǎn)換)+-(正負(fù)符號(hào))new大部分是一元*/%二元(乘、除、取余)+-二元(加減)<<>>>>>移位<<=>>=instanceof關(guān)系==!=比較&按位與^按位異或|按位或&&短路與||短路或?:三元運(yùn)算符=+=-=*=/=%=&=!=^=<<=>>=>>>=賦值小練習(xí)c=++a+b;z=+x--yfalse||3>2a^b<<23.7表達(dá)式、語(yǔ)句與代碼塊一個(gè)Java程序是由表達(dá)式(expression)、語(yǔ)句(statement)與塊(block)組成的publicclassMain{publicstaticvoidmain(String[]args){
intx,y,z;x=1;y
=
2;
z=x*y;System.out.println("result="+z);
}}
3.7表達(dá)式、語(yǔ)句與代碼塊表達(dá)式由變量、運(yùn)算符、字面量、方法調(diào)用等組成對(duì)表達(dá)式計(jì)算將得到一個(gè)值intx=3;//得到int0.1*3*5+(5-2)*10//得到doubledoubley=Math.sqrt(6);//得到doublebooleanflag=5>3;//得到booleanStringx=""+123;//得到Stringif(x>y)……;//得到true或false"x>y"http://得到String3.7表達(dá)式、語(yǔ)句與語(yǔ)句塊語(yǔ)句:一個(gè)完整的執(zhí)行單元。
intx;//聲明語(yǔ)句
x=3*5+(2-1)*10;//表達(dá)式語(yǔ)句
x++;//表達(dá)式語(yǔ)句
System.out.println(x);//表達(dá)式語(yǔ)句說(shuō)明:藍(lán)色字為表達(dá)式,黃色底為語(yǔ)句。聲明一個(gè)變量x。將表達(dá)式計(jì)算得到的值25賦給變量x。執(zhí)行x++。最后調(diào)用方法輸出x。上述語(yǔ)句均以分號(hào)(;)結(jié)尾其他語(yǔ)句:流程控制語(yǔ)句等3.7表達(dá)式、語(yǔ)句與代碼塊代碼塊:花括號(hào)({})之間的一組語(yǔ)句。以{開(kāi)始,以}結(jié)束該例中代碼塊中包含著多條語(yǔ)句。注意:代碼塊中也可以不包含語(yǔ)句4選擇結(jié)構(gòu)4.1選擇結(jié)構(gòu)—if條件語(yǔ)句(1)if條件語(yǔ)句if條件語(yǔ)句分為三種語(yǔ)法格式,具體如下:if語(yǔ)句if…else語(yǔ)句if…elseif…else語(yǔ)句4.1選擇結(jié)構(gòu)(2)if條件語(yǔ)句if語(yǔ)句指如果滿足某種條件,就進(jìn)行某種處理語(yǔ)法格式:if(條件語(yǔ)句){
語(yǔ)句塊}4.1選擇結(jié)構(gòu)—if條件語(yǔ)句(2)if…else條件語(yǔ)句if…else語(yǔ)句是指如果滿足某種條件,就進(jìn)行某種處理,否則就進(jìn)行另一種處理。語(yǔ)法格式:if(判斷條件){
語(yǔ)句塊1}else{
語(yǔ)句塊2}4.1選擇結(jié)構(gòu)—if條件語(yǔ)句(2)if…else條件語(yǔ)句在Java中有一種特殊的運(yùn)算叫做三元運(yùn)算,它和if-else語(yǔ)句類似三元運(yùn)算通常用于對(duì)某個(gè)變量進(jìn)行賦值,當(dāng)判斷條件成立時(shí),運(yùn)算結(jié)果為表達(dá)式1的值,否則結(jié)果為表達(dá)式2的值。語(yǔ)法格式:
判斷條件?表達(dá)式1:表達(dá)式24.1選擇結(jié)構(gòu)—if條件語(yǔ)句(3)if…elseif…else條件語(yǔ)句if…elseif
…else語(yǔ)句用于對(duì)多個(gè)條件進(jìn)行判斷,進(jìn)行多種不同的處理。語(yǔ)法格式:if(判斷條件1){
語(yǔ)句塊1}elseif(判斷條件2){
語(yǔ)句塊2}...elseif(判斷條件n){
語(yǔ)句塊n}else{
語(yǔ)句塊n+1}例子:ifelse多重嵌套從鍵盤(pán)輸入兩個(gè)數(shù)x,y代表學(xué)生兩門(mén)科目的成績(jī)。如果有一門(mén)成績(jī)不及格(<60)則判定為不通過(guò);否則,如果兩門(mén)科目成績(jī)平均分>=85,判定為優(yōu)秀,否則平均成績(jī)>=70判定為良好,否則判定為及格4.2選擇結(jié)構(gòu)—switch條件語(yǔ)句switch條件語(yǔ)句switch語(yǔ)句也是一種很常見(jiàn)的選擇語(yǔ)句。和if條件語(yǔ)句不同,它只能針對(duì)某個(gè)表達(dá)式的值做出判斷,從而決定執(zhí)行哪一段代碼執(zhí)行到break則從switch中跳出。不要隨意省略break!語(yǔ)法格式見(jiàn)右側(cè)4.2選擇結(jié)構(gòu)—switch條件語(yǔ)句switch條件語(yǔ)句例:使用數(shù)字1~7表示周一到周日,如果想根據(jù)某個(gè)輸入的數(shù)字輸出中文格式的星期值代碼SwitchDemo01SwitchDemo025循環(huán)結(jié)構(gòu)5.1while循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)
while循環(huán)語(yǔ)句會(huì)反復(fù)地進(jìn)行條件判斷,只要條件成立,{}內(nèi)的執(zhí)行語(yǔ)句就會(huì)執(zhí)行,直到條件不成立,while循環(huán)結(jié)束。語(yǔ)法格式:WhileDemo01while(循環(huán)條件){
語(yǔ)句塊
}5.2do...while循環(huán)結(jié)構(gòu)do...while循環(huán)結(jié)構(gòu)do...while循環(huán)語(yǔ)句先執(zhí)行{}內(nèi)語(yǔ)句,再進(jìn)行循環(huán)條件的判斷。語(yǔ)法格式:do{
語(yǔ)句塊1}while(循環(huán)條件);WhileDemo025.3for循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)一般用于循環(huán)次數(shù)已知的情況語(yǔ)法格式:1——初始化表達(dá)式2——循環(huán)條件3——操作表達(dá)式4——循環(huán)體for(1;2;3){4}for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){
執(zhí)行語(yǔ)句
......}ForDemo01一,執(zhí)行1;二,執(zhí)行2,如2為true執(zhí)行三,否則跳出循環(huán)三,執(zhí)行4四,執(zhí)行3,然后跳轉(zhuǎn)到二五,退出循環(huán)5.4嵌套循環(huán)嵌套循環(huán)是指在一個(gè)循環(huán)語(yǔ)句的循環(huán)體中再定義一個(gè)循環(huán)語(yǔ)句的語(yǔ)法結(jié)構(gòu)。while、do…while、for循環(huán)語(yǔ)句都可以進(jìn)行嵌套。最常見(jiàn)的在for循環(huán)中嵌套for循環(huán)for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){......
for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){
執(zhí)行語(yǔ)句
......}......
}ForDemo025.5跳轉(zhuǎn)語(yǔ)句用于實(shí)現(xiàn)循環(huán)執(zhí)行過(guò)程中程序流程的跳轉(zhuǎn)。Java中的跳轉(zhuǎn)語(yǔ)句有break、continue與returnbreak語(yǔ)句用在循環(huán)與switch條件語(yǔ)句中,作用:1.跳出break所在層次的循環(huán);2.終止某個(gè)case并跳出switch結(jié)構(gòu)。continue語(yǔ)句作用:終止本輪循環(huán),進(jìn)行下一次循環(huán)continue下方語(yǔ)句在本輪不再執(zhí)行return語(yǔ)句從當(dāng)前方法跳出,返回到方法調(diào)用處BreakDemo01ContinueDemo016方法6.1方法問(wèn)題:假設(shè)有一個(gè)游戲程序,程序在運(yùn)行過(guò)程中,要不斷地發(fā)射炮彈。發(fā)射炮彈的動(dòng)作需要編寫(xiě)100行的代碼。在每次實(shí)現(xiàn)發(fā)射炮彈的地方都需要重復(fù)編寫(xiě)這100行代碼。——程序臃腫,可讀性差可以使用方法(method)解決將發(fā)射炮彈的代碼提取出來(lái)放在一個(gè){}中,并為這段代碼起個(gè)名字。(形成一個(gè)方法)在每次發(fā)射炮彈的地方通過(guò)這個(gè)名字來(lái)調(diào)用發(fā)射炮彈的代碼6.1方法在Java中,聲明一個(gè)方法的具體語(yǔ)法格式返回值函數(shù)內(nèi)無(wú)return,則使用void。即,無(wú)返回值參數(shù)需指定參數(shù)類型。也可以無(wú)參數(shù)。方法簽名(methodsignature)方法的名字與參數(shù)可唯一確定一個(gè)方法修飾符返回值方法名([參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2,...]){
執(zhí)行語(yǔ)句
......return返回值;//可選}MethodDemo01、026.1使用方法的注意事項(xiàng)方法的定義與方法的調(diào)用不同方法總是要在類中定義方法中出現(xiàn)return,但未必返回值6.1方法-值調(diào)用值調(diào)用(callbyvalue)Java中的方法對(duì)參數(shù)的調(diào)用總是采用值調(diào)用,即將參數(shù)的值復(fù)制(拷貝)一份在方法內(nèi)使用。因此,方法不能修改傳遞給他的參數(shù)變量的值。x(0x1000)1方法內(nèi)x(0x2000)1拷貝需求假設(shè)要在程序中實(shí)現(xiàn)一個(gè)對(duì)數(shù)字求和的方法,由于參與求和數(shù)字的個(gè)數(shù)和類型都不確定因此要針對(duì)不同的情況去設(shè)計(jì)不同的方法是否真的需要設(shè)計(jì)多個(gè)名字不同的功能相似的方法?6.2方法——方法的重載(overload)可以使用方法的重載解決上述需求什么是重載?一個(gè)類中,可以定義多個(gè)同名方法,但參數(shù)的類型或個(gè)數(shù)不同。即方法簽名不同。6.2方法——方法的重載MethodDemo04、056.2方法——可變輸入?yún)?shù)可變輸入?yún)?shù)調(diào)用方法時(shí),入?yún)⒌臄?shù)量可變定義時(shí)使用3個(gè).。實(shí)際上是將數(shù)量變化的參數(shù)放入一個(gè)數(shù)組。因此參數(shù)類型需一直。7數(shù)組7.1數(shù)組——數(shù)組的定義數(shù)組的定義一組固定長(zhǎng)度數(shù)據(jù)的集合;可存放任意類型元素一個(gè)數(shù)組中存放的元素類型必須一致數(shù)組定義的格式,如下:為了更好地理解數(shù)組的定義方式,可以把上述代碼定義為兩行來(lái)寫(xiě):可使用下標(biāo)訪問(wèn)數(shù)組元素,如a[index]0≤index取值≤
數(shù)組長(zhǎng)度-17.1數(shù)組——數(shù)組的長(zhǎng)度數(shù)組的定義以下內(nèi)存圖演示數(shù)組在創(chuàng)建過(guò)程中的內(nèi)存分配情況數(shù)組長(zhǎng)度:“數(shù)組名.length”0≤
數(shù)組下標(biāo)取值≤
數(shù)組名.length-1ArrayDemo01棧內(nèi)存a->0x1000堆內(nèi)存0x100000102030407.1數(shù)組——數(shù)組的初始化數(shù)組的初始化:當(dāng)數(shù)組被成功創(chuàng)建后,數(shù)組中元素會(huì)被自動(dòng)賦予一個(gè)默認(rèn)值。靜態(tài)初始化:在定義數(shù)組的同時(shí)就為數(shù)組的每個(gè)元素賦值。元素類型默認(rèn)初始值byte,short,int,long0float,double0.0char空字符,'\u0000'booleanfalse引用數(shù)據(jù)類型null,變量不存儲(chǔ)任何引用ArrayDemo02、037.1數(shù)組的遍歷ArrayOperate017.1數(shù)組作為方法參數(shù)方法不能修改參數(shù)的值,但可以修改參數(shù)所指向?qū)ο螅ㄟ@里是數(shù)組)內(nèi)部的值分析:change1中的arr本來(lái)指向{0,1,5},在方法內(nèi)arr指向的是另外一個(gè)5個(gè)大小的數(shù)組空間。不會(huì)影響原digits數(shù)組digits015arrArrayDemo047.2數(shù)組的常見(jiàn)操作數(shù)組的最值A(chǔ)rrayOperate027.2數(shù)組的常見(jiàn)操作數(shù)組的排序也可直接使用Arrays.sort方法進(jìn)行排序ArrayOperate037.3多維數(shù)組多維數(shù)組的定義多維數(shù)組可以簡(jiǎn)單地理解為在數(shù)組中嵌套數(shù)組在程序中比較常見(jiàn)的就是二維數(shù)組二維數(shù)組的定義:方式一:上面的代碼定義了一個(gè)3行4列的二維數(shù)組,它的結(jié)構(gòu)如下圖所示。xx[0]xx[1]xx[2]xx[0][0]xx[0][1]xx[0][2]xx[0][3]xx[1][0]xx[1][1]xx[1][2]xx[1][3]xx[2][0]xx[2][1]xx[2][2]xx[2][3]intxx[][]7.3多維數(shù)組常見(jiàn)操作int[][]xx=newint[3][4]訪問(wèn)二維數(shù)組xx第0行第2個(gè)元素:xx[0][2]xx.length為3,xx[0].length為4遍歷:7.3多維數(shù)組方式二:與第一種方式類似,只是數(shù)組中每個(gè)元素的長(zhǎng)度不確定,采用第二種方式常見(jiàn)的數(shù)組結(jié)構(gòu)如下圖所示。xx[0]xx[1]xx[2]xx[0][0]xx[1][0]xx[1][1]xx[2][0]xx[2][1]xx[2][2]intxx[][]7.3多維數(shù)組方式三:該二維數(shù)組有三個(gè)元素,這三個(gè)元素都是數(shù)組,分別是{1,2}、{3,4,5,6}、{7,8,9}。數(shù)組結(jié)構(gòu)如下圖所示。xx[0]xx[1]xx[2]123456789intxx[][]7.3多維數(shù)組多維數(shù)組的訪問(wèn)多維數(shù)組對(duì)元素的訪問(wèn)也是通過(guò)角標(biāo)的方式例如,訪問(wèn)二維數(shù)組中第一個(gè)元素?cái)?shù)組的第二個(gè)元素不規(guī)則數(shù)組應(yīng)用場(chǎng)景:假設(shè)有3個(gè)銷售小組,每個(gè)小組有若干銷售人員,且各小組人員數(shù)量不同?,F(xiàn)在需記錄每個(gè)銷售人員銷售額,請(qǐng)問(wèn)如何使用二維數(shù)組存放這些銷售人員的銷售額數(shù)據(jù)并進(jìn)行統(tǒng)計(jì)。MultiArrayDemo01應(yīng)用于數(shù)組的工具類java.util包下的Arrays類提供很多操作數(shù)組的方法。需import。排序數(shù)組,sort(a)返回以字符表達(dá)的數(shù)組內(nèi)容,toString(a)填充數(shù)組,fill(a,val)拷貝數(shù)組,copyOfRange(src,begin,end)比較數(shù)組,equals(a1,a2)java.lang包下的System類也提供了快速?gòu)?fù)制數(shù)組的方法。無(wú)需importSystem.arraycopy(src,0,dest,destPos,length)ArraysTest枚舉類型(enum)如果取值是一組常量,可使用enum類型枚舉類型實(shí)際上是枚舉類常結(jié)合switch使用Main(枚舉類型-簡(jiǎn)易版)枚舉類型(enum)常用方法方法說(shuō)明枚舉類名.values(),如Size.values()以數(shù)組的形式返回枚舉類中所有值.返回[SMALL,LARGE]枚舉類名.valueOf(x),如Size.valueOf("LARGE")返回字符串x對(duì)應(yīng)的枚舉常量值。返回Size.LARGE枚舉對(duì)象.name()如Size.LARGE.name()以字符串形式返回枚舉常量對(duì)應(yīng)的name。也可使用toString方法代替。返回"LARGE"枚舉對(duì)象.ordinal()如Size.LARGE.ordial()返回枚舉常量對(duì)應(yīng)的序號(hào),從0開(kāi)始。返回1枚舉類型(enum)常用方法枚舉類名.values()以數(shù)組的形式返回枚舉類中所有值枚舉類名.valueOf(x)返回字符串x對(duì)應(yīng)的枚舉常量值enum小練習(xí)設(shè)計(jì)一個(gè)枚舉類,包含內(nèi)容:A,B,C,D,E。然后聲明該枚舉類的變量grade,賦一個(gè)枚舉值。編寫(xiě)switch語(yǔ)句,根據(jù)不同的grade值,輸出不同的內(nèi)容A90分以上B80~89C70~79D60~69E未及格什么是引用類型?基本數(shù)據(jù)類型int、double、boolean等類型變量存放值本身引用類型引用類型變量存放的是指向?qū)ο蟮囊冒ǎ侯?、接口、?shù)組、枚舉、標(biāo)注==用于引用類型比較兩個(gè)變量存放的引用是否相同
如a==b
//比較a、b存放的引用是否指向同一個(gè)對(duì)象使用引用類型聲明變量與賦值Stringstr=newString("abc");使用new關(guān)鍵字創(chuàng)建對(duì)象讓str變量存放指向"abc"對(duì)象的引用str注意:引用類型變量不存放對(duì)象本身,只存引用。引用類似于c中的指針,通過(guò)引用可以找到對(duì)象。雖然很像地址,但不是地址。abcStack內(nèi)存Heap內(nèi)存null值Stringstr=null;代表:str變量不存放指向任何對(duì)象的引用注意:null代表沒(méi)有值,不代表0null到底是什么?Java虛擬機(jī)規(guī)范并沒(méi)有強(qiáng)制規(guī)定null應(yīng)該是什么值null與NullPointerExceptionStringstr=null;str.toString();會(huì)拋出空指針異常,因?yàn)閟tr變量不指向任何對(duì)象常用對(duì)象-String字符串應(yīng)用非常廣泛網(wǎng)頁(yè)、文檔、搜索引擎等包含的字符信息String類(代表字符串)代表字符的序列包含大量的操作字符串的方法,比在c中處理字符串方便的多內(nèi)部使用byte數(shù)組存儲(chǔ)創(chuàng)建字符串說(shuō)明使用new創(chuàng)建:這里用了兩種不同的構(gòu)造方法使用字面值創(chuàng)建:雙引號(hào)括起來(lái)空字符串:代表沒(méi)有存放字符,不同于空格字符串字符串的拼接使用運(yùn)算符+
可進(jìn)行字符串的拼接字符串與字符串Stringx="ab"+"cd";//abcd字符串與其他基本數(shù)據(jù)類型的數(shù)據(jù)拼接Stringx1="12"+12;//1212Stringx2="ab"+false;//abfalse字符串的拼接字符串與引用類型數(shù)據(jù)(對(duì)象)拼接,調(diào)用對(duì)象的toString()方法
Integernum=newInteger(10);Stringx3="ab"+num;//ab10原理
調(diào)用了num所指向的Integer對(duì)象的toString()方法,該方法返回一個(gè)String對(duì)象。然后,將該對(duì)象與"ab"這個(gè)字符串對(duì)象進(jìn)行拼接字符串的比較使用==對(duì)兩個(gè)引用類型變量進(jìn)行比較,實(shí)際上是對(duì)兩個(gè)變量的值(引用)進(jìn)行比較y1,y2指向兩個(gè)不同對(duì)象,引用自然不一樣y1
y2123123字符串的比較-equals方法publicbooleanequals(x)方法如果字符串x對(duì)象不為空,且與當(dāng)前對(duì)象的內(nèi)容(字符序列)相同,返回true。進(jìn)階:equals方法實(shí)際上存在每個(gè)對(duì)象中。結(jié)論:凡是對(duì)字符串的內(nèi)容進(jìn)行比較都用equalsString常用APIequalsIgnoreCase//不區(qū)分大小寫(xiě)進(jìn)行比較format
//格式化字符串,也可格式化日期String.format("%.+2fisdouble,%disint,%sisaString%n",2.234,3,"str")
返回"+2.23isdouble,3isint,strisaString",%n代表?yè)Q行compareTo//比較字符串大小endsWith(x)//是否以x結(jié)尾charAt(i)//獲得第i個(gè)位置的字符
substring//截取字符串index//在字符串中進(jìn)行查找split//分割字符串更多String常用方法請(qǐng)查詢相關(guān)jdk文檔字符串常量池當(dāng)使用雙引號(hào)創(chuàng)建字符串時(shí)首先查看字符串常量池中有無(wú)該對(duì)象如沒(méi)有,則創(chuàng)建該對(duì)象否則,直接引用該對(duì)象所以,z2、z3指向同一個(gè)對(duì)象優(yōu)點(diǎn):減少內(nèi)存占用,提升性能!123z2z3String的不可變性String是不可變(immutable)類即,字符串對(duì)象一旦創(chuàng)建,無(wú)法修改其中內(nèi)容Stringx="abc";x=x+"123";說(shuō)明:x本來(lái)指向的"abc"對(duì)象并未改變,而是新生成了一個(gè)對(duì)象"abc123",并讓x指向該對(duì)象進(jìn)階:接下來(lái)"abc"對(duì)象怎么處理?abcabc123xString的不可變性嘗試執(zhí)行上述代碼,發(fā)現(xiàn)久久未能完成原因:String是不可變的,整個(gè)過(guò)程中使用+進(jìn)行拼接操作,會(huì)生成大量無(wú)用的String對(duì)象進(jìn)階:當(dāng)執(zhí)行完最后一句,內(nèi)存中有幾個(gè)字符串對(duì)象?字符串常量池中有幾個(gè)對(duì)象?String的不可變性有什么用?更安全比如有兩個(gè)Person他們的name(String類型)本來(lái)都叫“張三”。如果Person1需要改名,且String是可變的,那會(huì)發(fā)生是什么?張三Person1namePerson2nameStringBuilder類大量拼接字符串使用StringBuilder類。示例代碼如下:StringBuilderstringBuilder=newStringBuilder();for(inti=0;i<1000_0000;i++){ stringBuilder.append(i);}System.out.println("testStringBuilderdone");其他凡是涉及到對(duì)字符串的頻繁修改,一律使用StringBuilder!慎用StringBuffer類。StringBuilder類length方法與capacity方法StringBuilder的length()方法同String,均為返回實(shí)際存儲(chǔ)的字符的個(gè)數(shù)但StringBuilder還有一個(gè)capacity屬性capacity(容量)內(nèi)部使用數(shù)組存放,該數(shù)組的容量一般大于字符個(gè)數(shù)可以使用capacity()方法查看內(nèi)部容量進(jìn)階:查看源代碼,StringBuilder的capacity怎么確定的?Java程序設(shè)計(jì)引用類型之包裝類、枚舉類包裝類(WrapperClass)Java是面向?qū)ο笳Z(yǔ)言,所有基本數(shù)據(jù)類型都有相應(yīng)的包裝類基本數(shù)據(jù)類型對(duì)應(yīng)的包裝類byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean數(shù)值類包裝類所有數(shù)值類型的包裝類都是(is-a)Number用途當(dāng)方法需要引用類型作為方法參數(shù)包含每種類型的MIN_VALUE與MAX_VALUE類型轉(zhuǎn)換:與基本數(shù)據(jù)類型轉(zhuǎn)換、與字符串行進(jìn)行轉(zhuǎn)換、在多個(gè)進(jìn)制之間進(jìn)行轉(zhuǎn)換數(shù)值包裝類的使用1-轉(zhuǎn)換生成Integer對(duì)象不要使用newInteger(3)方式創(chuàng)建Integer對(duì)象,要用valueOf方法IntegervalueOf(inti)valueOf(Strings)按照10進(jìn)制創(chuàng)建IntegervalueOf(Strings,intradix)按照指定進(jìn)制(radix)創(chuàng)建IntegerIntegerx=Integer.valueOf(3);Integer轉(zhuǎn)化成基本數(shù)據(jù)類型Integerx=Integer.valueOf("10");intz1=Value();//Integer->intlongz2=x.longValue();//Integer->long數(shù)值包裝類的使用1-轉(zhuǎn)換靜態(tài)工具方法(整型與字符串互轉(zhuǎn))://使用10進(jìn)制的方式將字符串"10"轉(zhuǎn)換為int值10intx=Integer.parseInt("10");//使用16進(jìn)制的方式轉(zhuǎn)換,結(jié)果為15inty=Integer.parseInt("F",16);//將int值10轉(zhuǎn)換成字符串"10"Stringz=Integer.toString(10);//將255轉(zhuǎn)換為16進(jìn)制字符串Stringa=Integer.toHexString(255);數(shù)值包裝類的使用2-常用方法與屬性Integer.MAX_VALUE、Integer.MIN_VALUEint類型的最小值、最大值,分別為:0x80000000、0x7fffffffDoublePOSITIVE_INFINITY正無(wú)窮大,NEGATIVE_INFINITY負(fù)無(wú)窮大compare(doubled1,doubled2)//比較兩個(gè)double類型數(shù)值大小其他包裝類用法與Integer類似,詳見(jiàn)JDK文檔數(shù)值包裝類的使用3-裝箱、拆箱Integer(int的包裝類)數(shù)值包裝類可以與基本類型數(shù)據(jù)直接進(jìn)行運(yùn)算自動(dòng)裝箱(Autoboxing):20被自動(dòng)轉(zhuǎn)化為Integer對(duì)象自動(dòng)拆箱(Unboxing):變量o指向的Integer對(duì)象(30)被自動(dòng)轉(zhuǎn)換成基本類型數(shù)據(jù)p數(shù)值包裝類是不可變類不可變Integer對(duì)象一旦創(chuàng)建,就無(wú)法改變其值如下代碼中,x原來(lái)指向的Integer(1)并未被改變Integerx=1,y=x;x++;System.out.println(x+""+y);//輸出什么?與數(shù)值運(yùn)算相關(guān)Math類java.lang包中的Math類Math.sqrt(4);//開(kāi)根號(hào)還有cos、sin、abs、cell、floor、min、max、round等Math.random()//生成[0.0,1.0)的double類型隨機(jī)數(shù)。內(nèi)部調(diào)用Random對(duì)象max、min等,詳見(jiàn)JDK文檔Math類中的常數(shù)Math.E//自然對(duì)數(shù)的底數(shù)Math.PI//圓周率其他包裝類Boolean(bool類型包裝類)Character(char類型包裝類)isLetter//是否式為字母(英文字母、漢字、梵文等)isDigit//是否式數(shù)字isWhitespace//是否是空白字符普通空格’'、制表符'\t'、換行符'\n'、回車(chē)符'\r'、換頁(yè)符'\f'isUpperCase、isLowerCase//判斷大小寫(xiě)toUpperCase、toLowerCase//轉(zhuǎn)化為大小寫(xiě)toSting//轉(zhuǎn)換為字符串?dāng)?shù)組列表-ArrayList數(shù)組一旦創(chuàng)建,無(wú)法改變大小相當(dāng)于固定大小的容器如何創(chuàng)建容量動(dòng)態(tài)變化的數(shù)組?使用java.util包中的ArrayList類:類似數(shù)組,但在添加或刪除元素時(shí),具有自動(dòng)調(diào)節(jié)容量的功能。ArrayList不能添加基本類型數(shù)據(jù),如int、double等數(shù)組列表-例子List<String>arrList=newArrayList<>();arrList.add("a-1");arrList.add("a-2");for(inti=0;i<arrList.size();i++){//遍歷列表
System.out.print(arrList.get(i));}System.out.println();arrList.remove(1);//移除位置為1的元素for(Stringe:arrList){//使用forEach進(jìn)行遍歷System.out.println(e);}for(inti=0;i<10000;i++){//內(nèi)部存儲(chǔ)容量動(dòng)態(tài)調(diào)整arrList.add(i+"");}//小練習(xí):嘗試自己敲一遍,并分析輸出結(jié)果數(shù)組列表-常用方法List<Integer>intList=newArrayList<>();intList.add(5);//添加元素intList.size();//返回列表中包含的實(shí)際元素?cái)?shù)目intList.get(i);//獲得第i個(gè)元素,相當(dāng)于a[i]intList.set(i,10);//設(shè)置第i個(gè)元素,相當(dāng)于a[i]=10;注意:少用set,而盡量使用add方法添加新元素?cái)?shù)組列表-常用方法staff.remove(i);//刪除元素。i位置之后的元素都向前移動(dòng)一個(gè)位置staff.add(i,e);//添加元素。i位置及之后的元素都向后移動(dòng)一個(gè)位置回憶數(shù)據(jù)結(jié)構(gòu)中學(xué)過(guò)的往空間存儲(chǔ)位置連續(xù)的線性表中添加元素時(shí)的效率如果需要頻繁對(duì)一個(gè)列表進(jìn)行插入刪除操作List的另一個(gè)實(shí)現(xiàn)類LinkedList數(shù)組列表-ArrayList與LinkedListArrayList與LinkedList的區(qū)別List<Integer>arrList=newArrayList<>();List<Integer>linkedList=newLinkedList<>();內(nèi)部使用了不同的存儲(chǔ)方法,一個(gè)是數(shù)組、一個(gè)是鏈表最終導(dǎo)致插入、刪除等性能的不同數(shù)組列表-ArrayList與數(shù)組轉(zhuǎn)化將列表中的元素拷貝到數(shù)組List<String>list=newArrayList<>();//往list中添加一些元素String[]strs=list.toArray(newString[0]);//調(diào)用ArrayList的toArray方法將列表中的元素放入數(shù)組strs。注意:newString[0]實(shí)際上只是將String[](String數(shù)組)這個(gè)類型傳遞進(jìn)去,方便進(jìn)行類型轉(zhuǎn)換。第3章面向?qū)ο蠡A(chǔ)主講人:本章學(xué)習(xí)內(nèi)容面向?qū)ο蠡靖拍顚?duì)象與引用封裝與模塊化對(duì)象的初始化類變量、類方法(static關(guān)鍵字)final關(guān)鍵字使用包管理類面向?qū)ο蠡靖拍蠲嫦蜻^(guò)程編程ProceduralProgramming基于過(guò)程調(diào)用的編程范式,如C語(yǔ)言面向?qū)ο缶幊蘋(píng)OP(Object-OrientedProgram)基于對(duì)象的編程范式(萬(wàn)物皆對(duì)象)程序設(shè)計(jì)基于類與對(duì)象面向過(guò)程與面向?qū)ο髮?duì)比任務(wù):把貓放到盒子里以面向過(guò)程的編程方式OpenBox()PutInBox(cat)CloseBox()在c語(yǔ)言中,cat為存放數(shù)據(jù)的結(jié)構(gòu)體。面向過(guò)程編程的關(guān)注點(diǎn)過(guò)程(函數(shù))面向過(guò)程與面向?qū)ο髮?duì)比貓又要被放到盒子里了!以面向?qū)ο蟮木幊谭绞剑築oxbox=newBox();box.open();//變量名.方法Catcat=newCat();box.putIn(cat);box.close();面向?qū)ο缶幊桃c(diǎn)先要有對(duì)象(box、cat)然后調(diào)用對(duì)象的方法(方法是與對(duì)象綁定的)小練習(xí)比較c語(yǔ)言與Java語(yǔ)言中的HelloWorld程序,有何不同?面向?qū)ο蠡靖拍?對(duì)象對(duì)象(Object):狀態(tài)與行為相綁定。狀態(tài):對(duì)象中的字段(field)/屬性行為:對(duì)象中的方法(method)面向?qū)ο蠡靖拍?對(duì)象狀態(tài)與行為綁定的含義不同的對(duì)象有不一樣的狀態(tài);每個(gè)對(duì)象的方法的執(zhí)行結(jié)果根據(jù)狀態(tài)不同而不同。面向?qū)ο蠡靖拍?類與對(duì)象類(class)對(duì)象的藍(lán)圖,是對(duì)象的抽象描述如,對(duì)人抽象出的Person類包含屬性:name、age方法:show通過(guò)類這個(gè)藍(lán)圖可以創(chuàng)建出多個(gè)對(duì)象面向?qū)ο蠡靖拍?類與對(duì)象類只是一個(gè)模板,有了這個(gè)模板就可以創(chuàng)建對(duì)象由類創(chuàng)建對(duì)象的過(guò)程稱之為實(shí)例化使用new關(guān)鍵字進(jìn)行實(shí)例化對(duì)象實(shí)例的屬性與方法稱為實(shí)例成員實(shí)例(instance)張三
Person類將對(duì)象抽象為類對(duì)類進(jìn)行實(shí)例化抽象出什么樣的類?問(wèn):如何從“人”這個(gè)復(fù)雜概念中抽取出一個(gè)“類”?答:這完全取決于你要解決什么問(wèn)題。醫(yī)療系統(tǒng):“年齡、病史、過(guò)敏源”等屬性。健身應(yīng)用:“身高、體重、體脂率”等屬性。門(mén)禁系統(tǒng):“姓名、工號(hào)、人臉特征”等屬性。核心原則:類的設(shè)計(jì),始于問(wèn)題,終于問(wèn)題。脫離具體問(wèn)題場(chǎng)景討論類的屬性是沒(méi)有意義的。小練習(xí):如何抽象出類?需求編寫(xiě)一段代碼,可以處理包含任意半徑的多個(gè)圓形對(duì)象。處理過(guò)程中,希望可以方便地獲得每個(gè)圓形對(duì)象的面積?請(qǐng)?jiān)O(shè)計(jì)這個(gè)類聲明類的步驟取名設(shè)計(jì)屬性等聲明方法思考如果使用c語(yǔ)言怎么設(shè)計(jì)?典型錯(cuò)誤1未創(chuàng)建對(duì)象,卻想直接訪問(wèn)屬性解決方法:先創(chuàng)建對(duì)象,再訪問(wèn)對(duì)象的屬性。典型錯(cuò)誤2將類的定義誤寫(xiě)入另外一個(gè)類中解決方法:將Circle類聲明移到Main類外或?qū)ircle類放到Circle.java文件中聲明類使用class關(guān)鍵字聲明命名規(guī)范類類名首字母大寫(xiě)屬性(成員變量)首字母小寫(xiě)多個(gè)單詞,駝峰命名法方法命名規(guī)則同屬性創(chuàng)建對(duì)象與使用聲明好類,就可以創(chuàng)建對(duì)象,并調(diào)用其方法使用new創(chuàng)建對(duì)象Datenow=newDate();now是Date類型變量,存放Date對(duì)象的引用然后調(diào)用其方法
Strings=now.toString();使用對(duì)象兩部曲創(chuàng)建對(duì)象調(diào)用對(duì)象的方法創(chuàng)建對(duì)象與使用一個(gè)典型的Java程序會(huì)創(chuàng)建許多對(duì)象,對(duì)象之間通過(guò)調(diào)用方法進(jìn)行互動(dòng)。Java類庫(kù)中常見(jiàn)類的使用Math類常見(jiàn)數(shù)學(xué)常數(shù)與方法Arrays類操作數(shù)組的工具類,toString、sort方法Random類隨機(jī)數(shù)、種子的概念String、Integer查看內(nèi)部狀態(tài)與相應(yīng)的方法ArrayList可以替代數(shù)組
指向?qū)ο蟮囊?基本概念引用類型變量存放指向?qū)ο蟮囊?,存放的不是?duì)象本身通過(guò)該引用(reference)可以找到相應(yīng)對(duì)象分析Person.Java中如下代碼執(zhí)行結(jié)果name=“Tom”age=15name
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年涉外中英文保密協(xié)議
- 2026年標(biāo)準(zhǔn)版離婚協(xié)議
- 城市綠化養(yǎng)護(hù)與管理規(guī)范
- 2025年健康體檢與評(píng)估流程手冊(cè)
- 銷售費(fèi)用題目及答案答案
- 消化系統(tǒng)試題及答案
- 風(fēng)險(xiǎn)管理流程控制手冊(cè)
- 收獲機(jī)械制造工春節(jié)假期安全告知書(shū)
- 2025年企事業(yè)單位財(cái)務(wù)管理制度規(guī)范
- 家政保潔服務(wù)操作手冊(cè)
- 2025至2030年中國(guó)碲化鎘行業(yè)競(jìng)爭(zhēng)格局及市場(chǎng)發(fā)展?jié)摿︻A(yù)測(cè)報(bào)告
- 2026黑龍江省生態(tài)環(huán)境廳所屬事業(yè)單位招聘57人筆試備考試題及答案解析
- (2025年)(完整版)建筑工地三級(jí)安全教育試題(附答案)
- 2026新人教版七年級(jí)下冊(cè)英語(yǔ)知識(shí)點(diǎn)(生詞+詞組+語(yǔ)法)
- 名師工作室工作考核自評(píng)報(bào)告
- 工會(huì)法知識(shí)試題及答案
- 擒敵術(shù)課件底圖
- GB/T 38082-2025生物降解塑料購(gòu)物袋
- 宴會(huì)工作流程培訓(xùn)
- 黑山峽工程施工方案
- 工業(yè)電路布線技術(shù)標(biāo)準(zhǔn)與示例
評(píng)論
0/150
提交評(píng)論