Java語(yǔ)言程序設(shè)計(jì) 課件全套 沈澤剛 第1-19章 Java起步入門- Java網(wǎng)絡(luò)編程_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì) 課件全套 沈澤剛 第1-19章 Java起步入門- Java網(wǎng)絡(luò)編程_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì) 課件全套 沈澤剛 第1-19章 Java起步入門- Java網(wǎng)絡(luò)編程_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì) 課件全套 沈澤剛 第1-19章 Java起步入門- Java網(wǎng)絡(luò)編程_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì) 課件全套 沈澤剛 第1-19章 Java起步入門- Java網(wǎng)絡(luò)編程_第5頁(yè)
已閱讀5頁(yè),還剩1650頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java語(yǔ)言程序設(shè)計(jì)第1章Java起步入門

1Java起源與演進(jìn)23主要內(nèi)容Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社2023Java平臺(tái)與運(yùn)行機(jī)制建立開發(fā)環(huán)境45第一個(gè)Java程序集成開發(fā)環(huán)境6JShell交互式編程環(huán)境Java語(yǔ)言程序設(shè)計(jì)Java的起源與演進(jìn)Java的起源與演進(jìn)Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社最初是由美國(guó)Sun公司的JamesGosling等人開發(fā)的一種面向?qū)ο缶幊陶Z(yǔ)言。語(yǔ)言最初取名為Oak(橡樹),后取名Java。Java于1995年5月23日正式發(fā)布。Java隨著互聯(lián)網(wǎng)的迅猛發(fā)展而發(fā)展,逐漸成為重要的網(wǎng)絡(luò)編程語(yǔ)言。Java具備顯著優(yōu)勢(shì)和廣闊前景。

Java的起源與演進(jìn)Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社20多年來,Java語(yǔ)言不斷推出新版本,增加新功能。1995.5.23正式發(fā)布1996Java1.01999J2SE2000Java1.32002Java1.42004J2SE52006Java62007JavaFX2021.9Java172018.9Java112014Java82010Java72017.9Java9Java的起源與演進(jìn)Java的起源與演進(jìn)Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社Java語(yǔ)言的優(yōu)點(diǎn)簡(jiǎn)單的面向?qū)ο蟮姆植际降慕忉屝偷钠脚_(tái)獨(dú)立的可移植的健壯的安全的高性能的多線程的動(dòng)態(tài)的Java的起源與演進(jìn)Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社面向?qū)ο蟮模篔ava語(yǔ)言是一種面向?qū)ο蟮恼Z(yǔ)言,面向?qū)ο蟮木幊谭椒ㄊ钱?dāng)今主流的編程方法,Java語(yǔ)言支持所有的面向?qū)ο筇卣鳌C嫦驅(qū)ο缶幊谭椒ㄒ彩潜菊n程的重點(diǎn)。平臺(tái)獨(dú)立的:Java語(yǔ)言是平臺(tái)獨(dú)立的,或者是跨平臺(tái)的。Java源程序經(jīng)過編譯以后產(chǎn)生的類文件(字節(jié)碼文件),這種文件可以不用修改,即可在不同的平臺(tái)上運(yùn)行。從而實(shí)現(xiàn),“編寫一次,到處運(yùn)行”。JVM(JavaVirtualMachine)Java虛擬機(jī)。運(yùn)行字節(jié)碼。JRE(JavaRuntimeEnviromet)Java運(yùn)行時(shí)環(huán)境。

JVM和Java類庫(kù)一起構(gòu)成。Java語(yǔ)言程序設(shè)計(jì)Java平臺(tái)與運(yùn)行機(jī)制Java字節(jié)碼與平臺(tái)獨(dú)立Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社“Java是平臺(tái)獨(dú)立的”或“跨平臺(tái)的”。傳統(tǒng)的編程中,源代碼要編譯成可執(zhí)行代碼。源代碼編譯本機(jī)代碼Java字節(jié)碼與平臺(tái)獨(dú)立Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社“Java中,源代碼被編譯成字節(jié)碼(bytecode)。字節(jié)碼需要在Java虛擬機(jī)上運(yùn)行。

Java成為一種跨平臺(tái)的語(yǔ)言,進(jìn)而實(shí)現(xiàn)“編寫一次,到處運(yùn)行”。源代碼編譯字節(jié)碼WindowsJVMUnixJVMLinuxJVMJVM、JRE和JDKJava語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社JVM(JavaVirtualMachine)Java虛擬機(jī)。運(yùn)行字節(jié)碼。JRE(JavaRuntimeEnviroment)Java運(yùn)行時(shí)環(huán)境。

JVM和Java類庫(kù)一起構(gòu)成。JDK(JavaDevelopmentToolkit)Java開發(fā)工具包。包括編譯器、解釋器和其他工具。它是編譯和運(yùn)行Java程序的必備軟件。JVMJREJDKJava平臺(tái)有三大版本,分別代表Java的三個(gè)應(yīng)用領(lǐng)域。Java標(biāo)準(zhǔn)版(JavaStandardEdition,JavaSE)Java企業(yè)版(JavaEnterpriseEdition,JavaEE)Java微型版(JavaMicroEdition,JavaME)用Java可以開發(fā)下面類型的程序:控制臺(tái)和窗口應(yīng)用程序。在服務(wù)器上運(yùn)行的Servlet、JSP、JSF以及其他JavaEE標(biāo)準(zhǔn)支持的應(yīng)用程序。嵌入式應(yīng)用程序,如在Android系統(tǒng)下運(yùn)行的程序。1.2.1Java平臺(tái)與應(yīng)用領(lǐng)域Java語(yǔ)言程序設(shè)計(jì)建立開發(fā)環(huán)境JDK的下載與安裝Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社可從Oracle官方網(wǎng)站/免費(fèi)下載JDK。下載Windows版本的64位的JDK17,文件名為:jdk-17_windows-x64_bin.exe以下網(wǎng)址還提供了在線API文檔:/en/java/javase/17/index.html從JDK下載頁(yè)面可找到JavaAPI文檔下載鏈接。JDK的下載與安裝Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社假設(shè)下載的文件名為jdk-17_windows-x64_bin.msi,要安裝在Windows10上。雙擊該文件即開始安裝,安裝過程需要用戶指定安裝路徑,默認(rèn)路徑是C:\ProgramFiles\Java\jdk-17\目錄,可通過點(diǎn)擊“更改”按鈕指定新的位置,如圖1-4所示。關(guān)于環(huán)境變量Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社JDK安裝時(shí),創(chuàng)建一個(gè)目錄:

C:\ProgramFiles\CommonFiles\Oracle\Java\javapath并將下面文件復(fù)制到該目錄中:javac.exe,java.exe,javaw.exe,jshell.exe并且將上述目錄添加到PATH環(huán)境變量中,因此不需要設(shè)置PATH環(huán)境變量就可以編譯和運(yùn)行程序。Java語(yǔ)言程序設(shè)計(jì)第一個(gè)Java程序第一個(gè)Java程序Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社開發(fā)Java程序通常分三步:1.編輯源程序;2.編譯源程序;3.執(zhí)行或調(diào)試程序,得到程序輸出結(jié)果。HelloWorld.javaHelloWorld.classC:\>javaHelloWorldHello,World!publicclassMyProgram{publicstaticvoidmain(String[]args){

System.out.println(“千里之行,始于足下!");}}為了保存源文件和編譯后的類文件,先在D盤上創(chuàng)建一個(gè)名為study的目錄。第一個(gè)Java程序Java語(yǔ)言程序設(shè)計(jì)集成開發(fā)環(huán)境1.5集成開發(fā)環(huán)境IDE是IntegratedDevelopmentEnviroment的縮寫,稱為集成開發(fā)環(huán)境。Eclipse下載地址是

IntelliJIDEA下載地址是

Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社2023/12/9Java語(yǔ)言程序設(shè)計(jì)使用IntelliJIDEA開發(fā)工具使用IntelliJIDEA開發(fā)程序Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社IntelliJIDEA是JetBrains公司的產(chǎn)品,簡(jiǎn)稱IDEA,它是業(yè)界被公認(rèn)為最好的Java開發(fā)工具。IDEA有兩個(gè)版本:旗艦版(Ultimate)和社區(qū)版(Community)。旗艦版需要付費(fèi),但有30天試用期,社區(qū)版是免費(fèi)開源的。IntelliJIDEA下載地址是http:///idea/download。2023/12/9Java語(yǔ)言程序設(shè)計(jì)JShell交互式編程環(huán)境JDK提供的一種命令行工具,稱為JavaREPL(Read-Eval-Print-Loop)。在jshell>提示符下,允許用戶直接輸入代碼片段,表達(dá)式。語(yǔ)句。各種聲明(類、接口、方法等)。1.6Jshell交互式編程環(huán)境Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社啟動(dòng)命令提示符窗口,在提示符下輸入jshell,顯示jshell>提示符。安裝了JDK并設(shè)置了Path環(huán)境變量后即可使用JShell。啟動(dòng)命令提示符窗口,在提示符下輸入jshell,顯示jshell>提示符,如圖1-12所示。1.6Jshell交互式編程環(huán)境提示,在輸入表達(dá)式或語(yǔ)句時(shí),不必在語(yǔ)句的結(jié)尾使用分號(hào)(;),JShell會(huì)自動(dòng)給表達(dá)式添加分號(hào)。另外,在輸入時(shí)可以按Tab鍵顯示激活代碼提示,再次按Tab鍵顯示所有輸入提示。如果輸入一個(gè)表達(dá)式,JShell將自動(dòng)計(jì)算并顯示表達(dá)式的值,同時(shí)為表達(dá)式指定一個(gè)變量,自動(dòng)為變量命名,變量名使用$開頭。1.6Jshell交互式編程環(huán)境在JShell中還可以定義變量,執(zhí)行循環(huán)語(yǔ)句等,如圖1-14所示。1.6Jshell交互式編程環(huán)境Java語(yǔ)言程序設(shè)計(jì)第2章數(shù)據(jù)類型與運(yùn)算符

1Java類型系統(tǒng)23主要內(nèi)容Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社2022變量與賦值基本類型及字面值45字符串類型軟件開發(fā)過程6數(shù)據(jù)類型轉(zhuǎn)換7運(yùn)算符89程序文檔風(fēng)格和注釋案例:求解線性方程組10案例:計(jì)算顯示當(dāng)前時(shí)間Java語(yǔ)言程序設(shè)計(jì)2.1Java類型系統(tǒng)2.1Java類型系統(tǒng)Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社Java的數(shù)據(jù)類型可分為兩種:基本數(shù)據(jù)類型(primitivedatatype)引用數(shù)據(jù)類型(referencedatatype)6.1.12.1Java類型系統(tǒng)基本數(shù)據(jù)類型整數(shù)類型字節(jié)型byte短整型short整型int長(zhǎng)整型long浮點(diǎn)類型單浮點(diǎn)型float雙浮點(diǎn)型double字符類型char布爾類型boolean

引用數(shù)據(jù)類型類class

數(shù)組[]name

接口interface記錄類型record

枚舉類型enum

注解類型@interfaceJava語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社2.1.1基本數(shù)據(jù)類型Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社數(shù)據(jù)類型占字節(jié)數(shù)所占位數(shù)數(shù)的范圍byte18-27~27-1(-128~127)short216-215~215-1(-32768~32767)int432-231~231-1(-2147483648~2147483647)long864-263~263-1(-9223372036854775808~9223372036854775807)float432約1.4×10-45~3.4×1038,IEEE754標(biāo)準(zhǔn)double864約4.9×10-432~1.79×10308,IEEE754標(biāo)準(zhǔn)boolean11只有true和false兩個(gè)值char2160~65535Unicode2.1.1基本數(shù)據(jù)類型Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社整數(shù)的表示(5)byte00000101short0000000000000101int00000000000000000000000000000101long0000000000000000000000000000000000000000000000000000000000000101浮點(diǎn)數(shù)的表示(-5.5)float表示1100000001100000000000000000000double表示110000000110000000000000000000000000000011000000000000000000002.1.1基本數(shù)據(jù)類型Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社數(shù)據(jù)類型占字節(jié)數(shù)所占位數(shù)數(shù)的范圍byte18-27~27-1(-128~127)short216-215~215-1(-32768~32767)int432-231~231-1(-2147483648~2147483647)long864-263~263-1(-9223372036854775808~9223372036854775807)float432約1.4×10-45~3.4×1038,IEEE754標(biāo)準(zhǔn)double864約4.9×10-432~1.79×10308,IEEE754標(biāo)準(zhǔn)boolean11只有true和false兩個(gè)值char2160~655352.1.2引用數(shù)據(jù)類型Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社類型定義方法對(duì)象聲明類(抽象類)classStudent{}Studenttstud=newStudent();接口interfacePlayer{}Playerp=newMusicPlayer();枚舉enumColor{RED,GREEN,BLUE;}Colorc=Color.BLUE;記錄recordPoint(int

x,inty){}Pointp=newPoint(5,8);注解@interfaceAuthor{}@Author{}publicclassEmployee{}數(shù)組int[]numbernumber=newint[5];Java語(yǔ)言程序設(shè)計(jì)2.2變量與賦值6.1.1Java標(biāo)識(shí)符標(biāo)識(shí)符(identifier)用來為變量、方法和類進(jìn)行命名。命名規(guī)則:以字母、下劃線(_)或美元符($)開頭,其后可以是字母、下劃線、美元符或數(shù)字,長(zhǎng)度沒有限制。合法標(biāo)識(shí)符:intTest,Manager_Name,_var,$Var6.1.1多單詞的標(biāo)識(shí)符有兩種命名方法:

PascalCase,每個(gè)單詞的首字母大寫。類、接口用該方法命名

camelCase,第一個(gè)單詞的首字母小寫,變量和方法用該方法命名合法的標(biāo)識(shí)符:Student,BankAccountnumberOfStudent,setName()Java標(biāo)識(shí)符6.1.1標(biāo)識(shí)符是區(qū)分大小寫的,下面兩個(gè)標(biāo)識(shí)符是不同的。myName,MyName不推薦使用無意義的單個(gè)字母命名標(biāo)識(shí)符,應(yīng)該使用有意義的單詞或單詞組合為對(duì)象命名。Java標(biāo)識(shí)符6.1.1Java關(guān)鍵字abstractcontinuefornewswitchassertdefaultgoto

*packagesynchronizedbooleandoifprivatethisbreakdoubleimplementsprotectedthrowbyteelseimportpublicthrowscaseenuminstanceofreturntransientcatchextendsintshorttrycharfinalinterfacestaticvoidclassfinallylongstrictfpvolatileconst*floatnativesuperwhile6.1.1變量(variable)用于在程序中臨時(shí)存放數(shù)據(jù)。Java有兩大類型的變量:變量與賦值1:基本類型的變量:數(shù)值型(整數(shù)型和浮點(diǎn)型)、布爾型和字符型。2:引用類型的變量:類、接口、枚舉和數(shù)組等。6.1.1變量在使用前必須先聲明,然后初始化:

類型名變量名;intnumber;變量與賦值變量的初始化就是給變量賦初值:number=100;可以在聲明的同時(shí)初始化變量:intnumber=100;Java語(yǔ)言程序設(shè)計(jì)2.3基本類型及字面值6.1.1字面值(literals)是某種類型值的表示形式,比如,100是int型字面值。字面值有三種類型:1)基本類型的字面值:基本類型的字面值有4種類型:整數(shù)型、浮點(diǎn)型、布爾型、字符型。如123、-789為int型字面值,3.456、2e3為double型字面值,true、false為布爾型字面值,‘g’、‘我’為字符字面值2)字符串字面值:用雙引號(hào)定界的字符序列,如“Hello”是一個(gè)字符串字面值

3)null字面值6.1.12.3.1整數(shù)類型Java提供4種整數(shù)類型,分別是byte型、short型、int型和long型。數(shù)據(jù)類型占字節(jié)數(shù)所占位數(shù)數(shù)的范圍byte18-27~27-1(-128~127)short216-215~215-1(-32768~32767)int432-231~231-1(-2147483648~2147483647)long864-263~263-1(-9223372036854775808~9223372036854775807)Java的整型字面值有四種表示方法。

1)十進(jìn)制數(shù)2)二進(jìn)制數(shù),以0b或0B開頭3)八進(jìn)制數(shù),以0開頭4)十六進(jìn)制數(shù),以0x或0X開頭2.3.1整數(shù)類型Java的整型變量使用byte、short、int、long等聲明,下面是幾個(gè)整型變量的定義。2.3.1整數(shù)類型bytenum1=120;shortnum2=1000;

intnum3=99999999;longnum4=12345678900L;//超出int值范圍必須用L表示注意下面代碼的輸出:2.3.1整數(shù)類型bytea=0b00101010;//二進(jìn)制形式

intb=0200;//八進(jìn)制形式longc=0x1F;//十六進(jìn)制形式

System.out.println("a="+a);//輸出:a=42

System.out.println("b="+b);//輸出:b=128

System.out.println("c="+c);//輸出:c=31注意,在給變量賦值時(shí),不能超出該數(shù)據(jù)類型所允許的范圍,否則發(fā)生編譯錯(cuò)誤。下面語(yǔ)句發(fā)生編譯錯(cuò)誤。byteb=200;2.3.1整數(shù)類型編譯錯(cuò)誤說明類型不匹配,不能將一個(gè)int型的值轉(zhuǎn)換成byte型值。因?yàn)?00超出了byte型數(shù)據(jù)的范圍(-128~127),因此編譯器拒絕編譯。packagecom.boda.xy;publicclassLightYear{publicstaticvoidmain(String[]args){intspeed=300000;//光速為每秒300000公里longseconds=365*24*60*60;//假設(shè)一年為365天longdistance=speed*seconds;System.out.println("一光年的距離是"+distance+"公里。");}}程序2.1LightYear.java6.1.1有兩種浮點(diǎn)類型,分別是float(單精度)和double(雙精度)。它們符合IEEE-754標(biāo)準(zhǔn)。數(shù)據(jù)類型占字節(jié)數(shù)所占位數(shù)數(shù)的范圍float432約1.4×10-45~3.4×1038double864約4.9×10-432~1.7×10308浮點(diǎn)數(shù)類型6.1.1浮點(diǎn)型字面值有兩種表示方法。1)十進(jìn)制數(shù)形式3.142)科學(xué)記數(shù)法形式4.5e+3浮點(diǎn)數(shù)類型浮點(diǎn)型變量使用float和double關(guān)鍵字定義,如下兩行分別聲明了兩個(gè)浮點(diǎn)型變量pi和d:doubled=.00001005;floatpi=3.1415926F;System.out.println("doubled="+d);System.out.println("floatpi="+pi);代碼運(yùn)行結(jié)果如下:doubled=1.005E-5floatpi=3.1415925float型字面值必須加F或f6.1.1浮點(diǎn)數(shù)的運(yùn)算是不精確的,不適合做財(cái)務(wù)計(jì)算。因?yàn)楦↑c(diǎn)數(shù)計(jì)算可能存在舍入誤差,而財(cái)務(wù)計(jì)算中的舍入誤差是不能接受的。

2.0-1.1結(jié)果是0.8999999999999999需要精確而無舍入誤差的數(shù)字計(jì)算,可以使用java.math.BigDecimal類。2.3.2浮點(diǎn)數(shù)類型6.1.1從Java7開始,在數(shù)值型字面值中可以使用下劃線(_)將一些數(shù)字進(jìn)行分組,這可以增強(qiáng)代碼的可讀性。下劃線可以用在浮點(diǎn)型數(shù)和整型數(shù)(包括二進(jìn)制、八進(jìn)制、十六進(jìn)制和十進(jìn)制)的表示中。浮點(diǎn)數(shù)類型6.1.1字符是程序中可以出現(xiàn)的任何單個(gè)符號(hào)。Java使用Unicode為字符編碼,Unicode字符集使用兩個(gè)字節(jié)(16位)為字符編碼,可表示65536個(gè)字符。字面值用單引號(hào)將字符括起來,大多數(shù)可見的字符都可用這種方式表示,如'a'、'@'、'我'等。有些特殊字符用轉(zhuǎn)義序列來表示。用反斜杠(\)表示轉(zhuǎn)義,如'\n'表示換行。字符類型在Java程序中還可以使用反斜杠加3位八進(jìn)制數(shù)表示字符,格式為‘\ddd’,如‘\141’表示字符‘a(chǎn)’。也可以使用反斜杠加4位十六進(jìn)制數(shù)表示字符,格式為‘\uxxxx’,如‘\u0062’表示字符‘b’,‘\u4F60’和'\u597D'分別表示中文的“你”和“好”。任何的Unicode字符都可用這種方式表示。字符類型轉(zhuǎn)義字符說

明轉(zhuǎn)義字符說

明\'單引號(hào)字符\b退格\"雙引號(hào)字符\r回車\\反斜杠字符\n換行\(zhòng)f換頁(yè)\t水平制表符也可以使用反斜杠加4位十六進(jìn)制數(shù)表示字符,格式為'\uxxxx',如'\u0062'表示字符'b','\u4F60'和'\u597D'分別表示中文的“你”和“好”。

6.1.1布爾型字面值很簡(jiǎn)單,只有兩個(gè)值true和false,分別用來表示邏輯真和邏輯假。布爾型值使用boolean關(guān)鍵字聲明,如下面語(yǔ)句聲明了布爾型變量t并為其賦初值true:

booleant=true;所有關(guān)系表達(dá)式的返回值都是布爾型的數(shù)據(jù),如表達(dá)式10<9的結(jié)果為false。布爾型數(shù)據(jù)也經(jīng)常用于選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的條件中布爾類型booleanb;charch1,ch2;ch1='Y';ch2=65;System.out.println("ch1="+ch1+",ch2="+ch2);//ch1=Y,ch2=Ab=ch1==ch2;System.out.println(b);//falsech2++;System.out.println("ch2="+ch2);//ch2=B程序2.2CharBoolDemo.javaJava語(yǔ)言程序設(shè)計(jì)2.4字符串類型6.1.1Java程序中經(jīng)常要使用字符串。字符串是字符序列,不屬于基本數(shù)據(jù)類型,是一種引用類型。字符串是通過String類實(shí)現(xiàn)的??捎肧tring聲明和創(chuàng)建一個(gè)字符串??梢酝ㄟ^雙引號(hào)定界符創(chuàng)建一個(gè)字符串字面值。Strings="Javaiscool.";字符串類型注意,一個(gè)字符串字面值不能分在兩行來寫。例如,下面代碼產(chǎn)生編譯錯(cuò)誤:Strings="學(xué)而時(shí)習(xí)之,

不亦說乎?";字符串類型對(duì)于較長(zhǎng)的字符串,可以使用加號(hào)運(yùn)算符(+)將兩個(gè)字符串連接:Strings1="有朋自遠(yuǎn)方來”+",不亦樂乎?";Strings2="人不知而不慍“+",不亦君子乎?";可以將一個(gè)String和一個(gè)基本類型或者另一個(gè)對(duì)象連接在一起。例如,下面代碼就是字符串常量和一個(gè)int型變量及double型變量連接。

intage=25;doublesalary=8000;

System.out.println("我的年齡是:"+age);

System.out.println("我的工資是:"+salary);字符串類型字符串與其他類型值連接,系統(tǒng)首先將其他類型值轉(zhuǎn)換為字符串,然后兩個(gè)字符串再連接。Java語(yǔ)言程序設(shè)計(jì)2.5軟件開發(fā)過程軟件開發(fā)過程Java語(yǔ)言程序設(shè)計(jì)(第4版)

軟件開發(fā)過程是指軟件設(shè)計(jì)思路和實(shí)現(xiàn)方法的一般過程。一般都是一個(gè)多階段過程,通常包括需求確定、系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、部署和維護(hù)。這里重點(diǎn)討論幾個(gè)重要步驟。理解問題。就是需求分析。開發(fā)解決方案。算法是解決問題所需的一組邏輯步驟。實(shí)現(xiàn)。也稱為編碼。測(cè)試。測(cè)試的目的是發(fā)現(xiàn)程序的錯(cuò)誤。問題描述Java語(yǔ)言程序設(shè)計(jì)(第4版)

編寫一個(gè)簡(jiǎn)單的計(jì)算圓面積的程序,要求從鍵盤輸入圓的半徑,程序計(jì)算并輸出圓的面積和周長(zhǎng)。軟件開發(fā)過程Java語(yǔ)言程序設(shè)計(jì)(第4版)

理解問題。首先需要仔細(xì)閱讀并準(zhǔn)確理解需求說明書,這通常包括提問以確認(rèn)對(duì)問題的理解是否正確。開發(fā)解決方案。設(shè)計(jì)算法。算法是解決問題所需的一組邏輯步驟。

第1步:讀取半徑值,存入變量radius中。

第2步:使用下面公式計(jì)算圓面積area和周長(zhǎng)perimeter:area=PI*radius*radiusperimeter=2*PI*radius

第3步:顯示面積值area和周長(zhǎng)perimeter。軟件開發(fā)過程Java語(yǔ)言程序設(shè)計(jì)(第4版)

實(shí)現(xiàn)。實(shí)現(xiàn)也稱為編碼(編寫代碼)。編寫代碼就是將算法轉(zhuǎn)換成程序。測(cè)試。程序測(cè)試是為發(fā)現(xiàn)程序的錯(cuò)誤而執(zhí)行程序。設(shè)計(jì)一些用例。

編譯錯(cuò)誤(語(yǔ)法錯(cuò)誤)

運(yùn)行時(shí)錯(cuò)誤。運(yùn)行時(shí)用戶輸入了錯(cuò)誤數(shù)據(jù)

邏輯錯(cuò)誤。是最難發(fā)現(xiàn)和糾正的錯(cuò)誤,對(duì)于本例,假如將計(jì)算圓周長(zhǎng)公式錯(cuò)寫成perimeter=Math.PI*radius。doubleradius;doublearea,perimeter;Scannerinput=newScanner(System.in);System.out.print("請(qǐng)輸入半徑值:");radius=input.nextDouble();area=Math.PI*radius*radius;perimeter=2*Math.PI*radius;System.out.println("圓的面積為:"+area);System.out.println("圓的周長(zhǎng)為:"+perimeter);程序2.3ComputeArea.java6.1.1

publicintnextInt()publicbytenextByte()publicshortnextShort()publiclongnextLong()publicfloatnextFloat()

publicdoublenextDouble()publicbooleannextBoolean()

publicStringnextLine()Scanner類的其他方法Java語(yǔ)言程序設(shè)計(jì)2.6數(shù)據(jù)類型轉(zhuǎn)換6.1.1數(shù)據(jù)類型轉(zhuǎn)換整型、浮點(diǎn)型、字符型數(shù)據(jù)可能需要混合運(yùn)算或相互賦值,這就涉及類型轉(zhuǎn)換的問題。轉(zhuǎn)換分為:

自動(dòng)類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換6.1.1自動(dòng)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換也稱加寬轉(zhuǎn)換,它是指將具有較少位數(shù)的數(shù)據(jù)類型轉(zhuǎn)換為具有較多位數(shù)的數(shù)據(jù)類型。

byteb=120;

inti=b;可用圖表示。

bytedoublecharshortintlongfloat6.1.1強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換:將位數(shù)較多的數(shù)據(jù)類型轉(zhuǎn)換為位數(shù)較少的數(shù)據(jù)類型。其語(yǔ)法是用圓括號(hào)運(yùn)算符。例如:將double型數(shù)據(jù)轉(zhuǎn)換為byte型數(shù)據(jù)。

doubled=200.5;byteb=(byte)d;

System.out.println(b);//輸出-56200的二進(jìn)制是00000000000000000000000011001000轉(zhuǎn)換成byte型只保留低8位110010006.1.1表達(dá)式類型提升除了賦值可能發(fā)生類型轉(zhuǎn)換外,在含有變量的表達(dá)式中也有類型轉(zhuǎn)換的問題。bytea=40;byteb=50;bytec=a+b;//編譯錯(cuò)誤c=(byte)(a+b);//正確

inti=a+b;6.1.1程序2.4CastDemo.javaJava中的浮點(diǎn)數(shù)通常保留15位有效數(shù)字,比如,圓周率在Java中用Math.PI常量表示,默認(rèn)情況下輸出它的值是3.141592653589793。假設(shè)希望將該值四舍五入保留4位小數(shù),可以通過下面程序?qū)崿F(xiàn)。數(shù)據(jù)類型轉(zhuǎn)換doublepi=Math.PI;pi=pi*10000+0.5;//將原值擴(kuò)大10000倍,再加0.5pi=(int)pi;//強(qiáng)制轉(zhuǎn)換成整數(shù)pi=pi/10000;//再除以10000,達(dá)到四舍五入效果System.out.println(pi);Java語(yǔ)言程序設(shè)計(jì)2.7運(yùn)算符6.1.1運(yùn)算符表示各種不同運(yùn)算的符號(hào)稱為運(yùn)算符(operator),參與運(yùn)算的各種數(shù)據(jù)稱為操作數(shù)(operand)。表達(dá)式(expression)是由運(yùn)算符和操作數(shù)按一定語(yǔ)法規(guī)則組成的符號(hào)序列。

(2+3)*(8-5)a>b每個(gè)表達(dá)式經(jīng)過運(yùn)算后都會(huì)產(chǎn)生一個(gè)確定的值。6.1.1按照功能分

算術(shù)運(yùn)算符

邏輯運(yùn)算符關(guān)系運(yùn)算符賦值運(yùn)算符

位運(yùn)算符等按照所需要的操作數(shù)個(gè)數(shù)分

一元運(yùn)算符++a二元運(yùn)算符a&&b三元運(yùn)算符a>b?a:b運(yùn)算符6.1.1算術(shù)運(yùn)算符算術(shù)運(yùn)算符有

二元運(yùn)算符:加(+)、減(-)、乘(*)、除(/)、取余數(shù)(%)5個(gè)

一元運(yùn)算符:正(+)、負(fù)(-)、自增(++)、自減(--)4個(gè)。6.1.1運(yùn)算符含

義運(yùn)算符含

義>大于<=小于或等于>=大于或等于==相等<小于!=不相等關(guān)系運(yùn)算符(也稱比較運(yùn)算符)用來比較兩個(gè)值的大小或是否相等。可構(gòu)成關(guān)系表達(dá)式,結(jié)果為true或false。關(guān)系運(yùn)算符6.1.1邏輯運(yùn)算符包括以下幾種:?。ㄟ壿嫹牵?、&(邏輯與)、|(邏輯或)、^(邏輯異或)

&&(短路與)、||(短路或)邏輯運(yùn)算符6.1.1AB!AA&BA|BA^BA&&BA||Bfalsefalsetruefalsefalsefalsefalsefalsefalsetruetruefalsetruetruefalsetruetruefalsefalsefalsetruetruefalsetruetruetruefalsetruetruefalsetruetrue邏輯運(yùn)算符6.1.1賦值運(yùn)算符(assignmentoperator)用來為變量指定新值。賦值運(yùn)算符主要有兩類,

簡(jiǎn)單賦值運(yùn)算符:使用等號(hào)(=)復(fù)合賦值運(yùn)算符:如(+=,-=)賦值運(yùn)算符6.1.1位運(yùn)算在整數(shù)的二進(jìn)制位上操作,有兩類:

位邏輯運(yùn)算(bitwise)

移位運(yùn)算(shift)位(bit)運(yùn)算符6.1.1整數(shù)的二進(jìn)制表示整數(shù)是用二進(jìn)制補(bǔ)碼表示的,int型值用4個(gè)字節(jié)32位二進(jìn)制表示。42的原碼為

00000000000000000000000000101010+42的補(bǔ)碼為

00000000000000000000000000101010-42的補(bǔ)碼為

111111111111111111111111110101106.1.1共有4個(gè)位邏輯運(yùn)算符:~(按位取反)、&(按位與)、|(按位或)、^(按位異或)位邏輯運(yùn)算是對(duì)一個(gè)整數(shù)的二進(jìn)制位進(jìn)行運(yùn)算。AB~AA&BA|BA^B001000011011100011110110位邏輯運(yùn)算符6.1.1移位運(yùn)算符共有3個(gè)移位運(yùn)算符:<<左移運(yùn)算符>>右移運(yùn)算符>>>無符號(hào)右移運(yùn)算符6.1.1運(yùn)算符優(yōu)先級(jí)運(yùn)算優(yōu)先級(jí)是指在一個(gè)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符又沒有用括號(hào)分隔時(shí),先運(yùn)算哪個(gè)后運(yùn)算哪個(gè)。

3+4*5>(5*(2+4)–10)&&8–4>5

3+4*5>(5*6–10)&&8–4>5

3+4*5>(30–10)&&8–4>5

3+4*5>20&&8–4>5

3+20>20&&8–4>5

23>20&&8–4>5

23>20&&4>5

true&&4>5

true&&false

false6.1.1運(yùn)算符優(yōu)先級(jí)不必死記硬背運(yùn)算符的優(yōu)先級(jí)。必要時(shí)可以在表達(dá)式中使用圓括號(hào),圓括號(hào)的優(yōu)先級(jí)最高。圓括號(hào)還可以使表達(dá)式顯得更加清晰。例如,考慮以下代碼:

intx=5;inty=5;booleanz=x*5==y+21;

booleanz=(x*5)==(y+21);6.1.1運(yùn)算符結(jié)合性結(jié)合性是指對(duì)某個(gè)運(yùn)算符構(gòu)成的表達(dá)式,計(jì)算時(shí)如果先取運(yùn)算符左邊的操作數(shù),后取運(yùn)算符,則該運(yùn)算符是左結(jié)合的,若先取運(yùn)算符右側(cè)的操作數(shù),后取運(yùn)算符,則是右結(jié)合的。所有的二元運(yùn)算符(如+、<<等)都是左結(jié)合的,而賦值運(yùn)算符(=、+=等)是右結(jié)合的。Java語(yǔ)言程序設(shè)計(jì)2.8程序文檔風(fēng)格和注釋寫出正確的、可運(yùn)行的Java程序固然重要,但是,編寫出易于閱讀和可維護(hù)的程序同樣重要。概述采用統(tǒng)一的編碼規(guī)范是使代碼易于閱讀的方法之一。編碼規(guī)范包括文件名、文件的組織、縮進(jìn)、注釋、聲明、語(yǔ)句、空格以及命名規(guī)范等。保持一致的縮進(jìn)會(huì)使程序更加清晰、易讀、易于調(diào)試和維護(hù)。即使將程序的所有語(yǔ)句都寫在一行中,程序也可以編譯和運(yùn)行,但適當(dāng)?shù)目s進(jìn)可使人們更容易讀懂和維護(hù)代碼。2.8.1一致的縮進(jìn)和空白Java規(guī)范建議的縮進(jìn)為4個(gè)字符,有的學(xué)者也建議縮進(jìn)2個(gè)字符,這可根據(jù)你自己的習(xí)慣決定,但只要一致即可。二元操作符的兩邊也應(yīng)該各加一個(gè)空格,如下面語(yǔ)句所示:

System.out.println(3+4*5);//不好的風(fēng)格

System.out.println(3+4*5);//好的風(fēng)格代碼塊是由花括號(hào)圍起來的一組語(yǔ)句,如類體、方法體、初始化塊等。代碼塊的花括號(hào)有兩種寫法,行末格式,即左花括號(hào)寫在上一行的末尾,右花括號(hào)寫在下一行,如程序1.1所示。次行格式,即將左花括號(hào)單獨(dú)寫在下一行,右花括號(hào)與左花括號(hào)垂直對(duì)齊,如下代碼所示:2.8.2塊的風(fēng)格publicclassHelloWorld{publicstaticvoidmain(String[]args){

System.out.println("HelloWorld!");}}這兩種格式?jīng)]有好壞之分,但Java的文檔規(guī)范推薦使用行末格式,這樣使代碼更緊湊,且占據(jù)較少空間。本書與JavaAPI源代碼保持一致,采用行末格式。次行格式Java允許在源程序中加入注釋。注釋是對(duì)程序功能的解釋或說明,是為閱讀和理解程序的功能提供方便。所有注釋的內(nèi)容都被編譯器忽略。Java源程序支持三種類型的注釋。2.8.3程序注釋(1)單行注釋,以雙斜杠(//)開頭,在該行的末尾結(jié)束,例如://這里是注釋內(nèi)容(2)多行注釋,以/*開始,以*/結(jié)束的一行或多行文字,例如:

/*該文件的文件名必須為:HelloWorld.java*/

(3)文檔注釋,以/**開始,以*/結(jié)束的多行。文檔注釋是Java特有的,主要用來生成類定義的API文檔。具體使用JDK的javadoc命令將文檔注釋提取到一個(gè)HTML文件中。關(guān)于文檔注釋的更詳細(xì)信息,請(qǐng)參閱有關(guān)文獻(xiàn)。

/**這是一個(gè)類的定義*/2.8.3程序注釋Java語(yǔ)言程序設(shè)計(jì)2.9案例:求解線性方程組編寫程序,求解一個(gè)方程組并顯示x和y的值。要求從鍵盤輸入方程組的系數(shù),程序應(yīng)該判斷方程組無解的情況。問題描述下面是一個(gè)二元一次線性方程組,計(jì)算它的解x、y的公式如下:設(shè)計(jì)思路這里,如果ad-bc=0,方程組無解。我們用Scanner對(duì)象的nextDouble()方法從鍵盤讀取a、b、e以及c、d、f值。首先判斷a*d–b*c的值,如果其值為0,則方程組無解,否則計(jì)算并輸出它的解。Scannerinput=newScanner(System.in);doublea,b,c,d,e,f;doublex,y;System.out.print("請(qǐng)輸入a,b,e值:");a=input.nextDouble();b=input.nextDouble();e=input.nextDouble();System.out.print("請(qǐng)輸入c,d,f值:");c=input.nextDouble();d=input.nextDouble();f=input.nextDouble();程序2.7LinearEquation.javaf=input.nextDouble();if((a*d–b*c)==0){System.out.println("此方程組無解。");}else{x=(e*d-b*f)/(a*d-b*c);y=(a*f-e*c)/(a*d-b*c);System.out.println("x="+x);System.out.println("y="+y);}Java語(yǔ)言程序設(shè)計(jì)2.10案例:計(jì)算顯示當(dāng)前時(shí)間編寫程序,以GMT(格林尼治時(shí)間)來顯示當(dāng)前的時(shí)間,以“小時(shí):分鐘:秒”的格式來顯示。要求得到類似下面的輸出結(jié)果。

當(dāng)前時(shí)間:11:10:27問題描述編程語(yǔ)言大多都提供獲得系統(tǒng)時(shí)間的方法。Java語(yǔ)言有多種方法可以獲得系統(tǒng)當(dāng)前時(shí)間。比如,可以用System.currentTimeMillis()方法的返回值來計(jì)算當(dāng)前系統(tǒng)時(shí)間。該方法返回GMT1970年1月1日00:00:00開始到當(dāng)前時(shí)刻的毫秒數(shù)。按下列步驟計(jì)算出當(dāng)前的秒數(shù)、分鐘和小時(shí)數(shù):(1)調(diào)用System.currentTimeMillis()方法返回1970年1月1日午夜到現(xiàn)在的毫秒數(shù)(例如:1592280564718毫秒),將其存放到變量t中。設(shè)計(jì)思路(2)將總毫秒數(shù)t除以1000可以得到總秒數(shù)(例如,1592280564718/1000=1592280564秒),將其存到變量seconds中。(3)計(jì)算seconds%60,結(jié)果的余數(shù)就是當(dāng)前的秒數(shù)(1592280564%60=24秒),將其存放到變量s中。(4)計(jì)算seconds/60,可以得到當(dāng)前總分鐘數(shù)(1592280564/60=26538009分鐘),將其存放到變量mimutes中。設(shè)計(jì)思路(5)計(jì)算mimutes%60,的余數(shù)就是當(dāng)前的分鐘數(shù)(26538009%60=9分鐘),將其存放到變量m中。(6)計(jì)算mimutes/60,可以得到當(dāng)前總小時(shí)數(shù)(例如,26538009/60=442300小時(shí)),將其存放到變量hours中。(7)計(jì)算hours%24的結(jié)果,就得到當(dāng)前的小時(shí)數(shù)(例如,442300%24=4),將其存放到變量h中。longt=System.currentTimeMillis();longseconds=t/1000;//總秒數(shù)longs=seconds%60;longminutes=seconds/60;//總分鐘數(shù)longm=minutes%60;longhours=minutes/60;//總小時(shí)數(shù)longh=hours%24; System.out.println("當(dāng)前時(shí)間:"+h+":"+m+":"+s);程序2.8CurrentTime.java6.1.1課堂討論及訓(xùn)練問題描述:1.要求用戶從鍵盤讀入一個(gè)double型數(shù),輸出該數(shù)的整數(shù)部分和小數(shù)部分。2.表達(dá)式25/4的結(jié)果是多少?如果希望得到浮點(diǎn)數(shù)結(jié)果,如何重寫表達(dá)式?

3.如何用最有效的方法計(jì)算22乘以8等于多少?6.1.1課堂討論及訓(xùn)練編寫程序,要求用戶從鍵盤輸入a、b和c的值,計(jì)算下列表達(dá)式的值。

提示:用Math.sqrt(x)求x的平方根。Java語(yǔ)言程序設(shè)計(jì)第3章結(jié)構(gòu)化編程

1選擇結(jié)構(gòu)23主要內(nèi)容Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社2022switch語(yǔ)句與switch表達(dá)式案例:兩位數(shù)加減法45循環(huán)結(jié)構(gòu)案例:求最大公約數(shù)6案例:打印輸出若干素?cái)?shù)Java語(yǔ)言程序設(shè)計(jì)選擇結(jié)構(gòu)6.1.1三種控制結(jié)構(gòu)Java語(yǔ)言程序設(shè)計(jì)(第4版)答疑結(jié)構(gòu)化程序設(shè)計(jì)有三種基本控制結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)比較簡(jiǎn)單,程序按語(yǔ)句的順序依次執(zhí)行。選擇結(jié)構(gòu):根據(jù)是否滿足某個(gè)條件確定執(zhí)行哪些操作。循環(huán)結(jié)構(gòu):根據(jù)是否滿足某個(gè)條件確定反復(fù)執(zhí)行某些操作。6.1.1單分支結(jié)構(gòu)Java語(yǔ)言程序設(shè)計(jì)(第4版)

if(條件){//語(yǔ)句組}<條件>是一個(gè)布爾表達(dá)式,布爾表達(dá)式應(yīng)該使用圓括號(hào)括住,它的值為true或false。程序執(zhí)行的流程是:首先計(jì)算條件表達(dá)式的值,若其值為true,則執(zhí)行語(yǔ)句(組)語(yǔ)句序列,否則轉(zhuǎn)去執(zhí)行if結(jié)構(gòu)后面的語(yǔ)句條件語(yǔ)句組truefalse程序要求用戶從鍵盤輸入兩個(gè)整數(shù),分別存入變量a與b,如果a大于b,則交換a和b的值,也就是保證a小于或等于b,最后輸出a和b的值。單分支if語(yǔ)句Scannerinput=newScanner(System.in);System.out.print("請(qǐng)輸入整數(shù)a:");inta=input.nextInt();System.out.print("請(qǐng)輸入整數(shù)b:");intb=input.nextInt();if(a>b){intt=b;b=a;a=t;}程序3.1ExchangeDemo.javaSystem.out.println("a="+a);System.out.println("b="+b);在if語(yǔ)句中,如果花括號(hào)內(nèi)只有一條語(yǔ)句,則可以省略化括號(hào)。if(num%5==0){

System.out.println(num+"能被5整除。");}單分支if語(yǔ)句與下面代碼等價(jià)。if(num%5==0)

System.out.println(num+"能被5整除。");6.1.1雙分支if-else語(yǔ)句Java語(yǔ)言程序設(shè)計(jì)(第4版)

if(條件){//語(yǔ)句組1}else{//語(yǔ)句組2}雙分支if-else語(yǔ)句是最常用的選擇結(jié)構(gòu),它根據(jù)條件是真是假,決定執(zhí)行的路徑。if-else結(jié)構(gòu)的一般格式如下:條件truefalse語(yǔ)句組2語(yǔ)句組1判斷年份是否是閏年。符合下面兩個(gè)條件之一的年份即為閏年:(1)能被400整除;(2)能被4整除,但不能被100整除。if~else語(yǔ)句應(yīng)用if(year%400==0||(year%4==0&&year%100!=0){//輸出是閏年}else{//輸出不是閏年}Scannerscan=newScanner(System.in);System.out.print("請(qǐng)輸入年份:");intyear=scan.nextInt();if(year%400==0||(year%4==0&&year%100!=0)){System.out.println(year+"年是閏年。");}else{System.out.println(year+"年不是閏年。");}條件運(yùn)算符(conditionaloperator)的格式如下:<條件表達(dá)式>?<表達(dá)式1>:<表達(dá)式2>因?yàn)橛腥齻€(gè)操作數(shù),又稱為三元運(yùn)算符。條件運(yùn)算符<條件表達(dá)式>為關(guān)系或邏輯表達(dá)式,其計(jì)算結(jié)果為布爾值。如果該值為true,則計(jì)算<表達(dá)式1>的值,并將其結(jié)果作為條件表達(dá)式的結(jié)果;如果該值為false,則計(jì)算<表達(dá)式2>的值,并將其結(jié)果作為條件表達(dá)式的結(jié)果。6.1.1條件運(yùn)算符Java語(yǔ)言程序設(shè)計(jì)(第4版)

條件運(yùn)算符可實(shí)現(xiàn)if~else結(jié)構(gòu)。若max,a,b是int型變量:max=(a>b)?a:b;if(a>b){max=a;}else{max=b;}6.1.1嵌套的if語(yǔ)句Java語(yǔ)言程序設(shè)計(jì)(第4版)

if或if-else結(jié)構(gòu)中語(yǔ)句可以是任意合法的Java語(yǔ)句,甚至可以是其他的if或if-else結(jié)構(gòu)。內(nèi)層的if結(jié)構(gòu)稱為嵌套在外層的if結(jié)構(gòu)中。例如,下面就是一個(gè)嵌套的if結(jié)構(gòu),其功能是求a、b和c中最大值并將其保存到max中。。6.1.1多分支的if-else結(jié)構(gòu)Java語(yǔ)言程序設(shè)計(jì)(第4版)

如果程序邏輯需要多個(gè)選擇,可以在if語(yǔ)句中使用一系列的elseif語(yǔ)句,這種結(jié)構(gòu)稱為階梯式if-else結(jié)構(gòu)。問題描述編寫程序,要求輸入一個(gè)人的身高和體重,計(jì)算并打印出他的BMI,同時(shí)顯示BMI是高還是低。對(duì)于一個(gè)成年人,BMI值的含義如下:BMI<18.5,表示偏瘦;18.5≤BMI<25.0,表示正常;25.0≤BMI<30.0,表示超重;BMI≥30.0,表示過胖。Scannerinput=newScanner(System.in);doubleweight,height;doublebmi;System.out.print("請(qǐng)輸入你的體重(單位:公斤):");weight=input.nextDouble();System.out.print("請(qǐng)輸入你的身高(單位:米):");height=input.nextDouble();bmi=weight/(height*height);程序3.2ComputeBMI.java

System.out.println("你的身體質(zhì)量指數(shù)是:"+bmi);if(bmi<18.5){System.out.println("你的體重偏瘦。");}elseif(bmi<25.0){System.out.println("你的體重正常。");}elseif(bmi<30.0){System.out.println("你的體重超重。");}else{System.out.println("你的體重過胖。");}Java語(yǔ)言程序設(shè)計(jì)switch語(yǔ)句和switch表達(dá)式Java語(yǔ)言從一開始就提供了switch語(yǔ)句實(shí)現(xiàn)多分支結(jié)構(gòu)。從Java12開始對(duì)switch語(yǔ)句進(jìn)行了修改并支持switch表達(dá)式。盡管Java仍然支持舊的switch結(jié)構(gòu),但建議讀者熟悉并使用新的switch語(yǔ)句和switch表達(dá)式。概述如果需要從多個(gè)選項(xiàng)選擇其中一個(gè),可以使用switch語(yǔ)句。switch語(yǔ)句主要實(shí)現(xiàn)多分支結(jié)構(gòu),一般格式如下:switch語(yǔ)句switch(表達(dá)式){

case

值1->

語(yǔ)句(組)1;

case值2->

語(yǔ)句(組)2;…

case值n->

語(yǔ)句(組)n;[default->語(yǔ)句(組)]}表達(dá)式值類型為byte,short,int,char,enum,String值為常量或常量表達(dá)式語(yǔ)句組,多個(gè)語(yǔ)句使用大括號(hào)結(jié)束switch結(jié)構(gòu)所有情況都不匹配執(zhí)行的語(yǔ)句組值后面是->,不是冒號(hào):當(dāng)程序執(zhí)行到switch語(yǔ)句,首先計(jì)算<表達(dá)式>的值,然后用該值依次與每個(gè)case中的常量值(或常量表達(dá)式)進(jìn)行比較,如果等于某個(gè)值,則執(zhí)行該case子句中后面的語(yǔ)句(組),之后結(jié)束switch結(jié)構(gòu)。每個(gè)case后面使用箭頭號(hào)(->)指定要執(zhí)行的語(yǔ)句(組),這里可以是一條語(yǔ)句,也可以包含多條語(yǔ)句。如果包含多條語(yǔ)句,使用花括號(hào)。switch語(yǔ)句switch語(yǔ)句的執(zhí)行流程如圖3-3所示。用switch結(jié)構(gòu)實(shí)現(xiàn)多重選擇。下面程序要求從鍵盤輸入一個(gè)季節(jié)數(shù)字(1,2,3,4),程序根據(jù)輸入的數(shù)輸出一句話。switch語(yǔ)句Scannerinput=newScanner(System.in);System.out.print("輸入一個(gè)季節(jié)(1,2,3,4):");intseason=input.nextInt();switch(season){case1->System.out.println("春雨驚春清谷天");case2->System.out.println("夏滿忙夏暑相連");case3->System.out.println("秋處露秋寒霜降");case4->System.out.println("冬雪雪冬小大寒");default->System.out.println("季節(jié)輸入非法.");}程序3.3SwitchDemo.java在switch結(jié)構(gòu)中,除了可以執(zhí)行語(yǔ)句外,還可以使用switch表達(dá)式,即通過switch結(jié)構(gòu)返回一個(gè)值,并將該值賦給變量。例如,下面代碼根據(jù)day的值返回一個(gè)數(shù)值賦給變量numLetters。switch表達(dá)式DayOfWeekday=DayOfWeek.SATURDAY;intnumLetters=switch(day){

caseMONDAY,FRIDAY,SUNDAY->6;caseTUESDAY->7;caseTHURSDAY,SATURDAY->8;caseWEDNESDAY->9;};System.out.println(numLetters);//輸出:8下面程序從鍵盤輸入一個(gè)年份(如2000年)和一個(gè)月份(如2月),用switch表達(dá)式返回該月的天數(shù)(29),將其存入一個(gè)變量。switch表達(dá)式Scannerinput=newScanner(System.in);System.out.print("輸入一個(gè)年份:");intyear=input.nextInt();System.out.print("輸入一個(gè)月份:");intmonth=input.nextInt();intnumDays=switch(month){case1,3,5,7,8,10,12->31;case4,6,9,11->30;程序3.5SwitchExprDemo.java//對(duì)2月需要判斷是否是閏年case2->{ if(((year%4==0)&&!(year%100==0))||(year%400==0))

yield29;

else

yield28;}default->0;};System.out.println("該月的天數(shù)為:"+numDays);6.1.1switch語(yǔ)句Java語(yǔ)言程序設(shè)計(jì)(第4版)

編寫程序,從鍵盤輸入一個(gè)年份(如2016年)和一個(gè)月份(如2月),輸出該月的天數(shù)(29)。問題描述:Java語(yǔ)言程序設(shè)計(jì)案例:兩位數(shù)加減運(yùn)算開發(fā)一個(gè)讓小學(xué)生練習(xí)兩位整數(shù)加減法的程序,要求程序運(yùn)行隨機(jī)生成兩個(gè)兩位數(shù)及加減號(hào)(要保證減法算式的被減數(shù)大于減數(shù)),顯示題目讓學(xué)生輸入計(jì)算結(jié)果,程序判斷結(jié)果是否正確。兩位數(shù)加減運(yùn)算(1)要實(shí)現(xiàn)加減法運(yùn)算,首先應(yīng)該隨機(jī)產(chǎn)生兩個(gè)兩位整數(shù)。隨機(jī)生成整數(shù)有多種方法,可以使用Math.random()方法生成一個(gè)隨機(jī)浮點(diǎn)數(shù),然后將它擴(kuò)大再取整。random()方法返回0.0~1.0(不包括)之間的浮點(diǎn)數(shù),要得到10~99之間的整數(shù),可以使用下面表達(dá)式:intnumber1=10+(int)(Math.random()*90);(2)確定加或減運(yùn)算。這也可以通過產(chǎn)生2個(gè)隨機(jī)數(shù)(比如,0和1,0表示加法,1表示減法)確定。

intoperator=(int)(Math.random()*2);(3)設(shè)學(xué)生沒有學(xué)過負(fù)數(shù)概念,如果做減法運(yùn)算,要保證第一個(gè)數(shù)大于第二個(gè)數(shù)。也就是如果number1小于number2,應(yīng)該交換這兩個(gè)數(shù)。if(number1<number2){

inttemp=number2;number2=number1;number1=temp;}

Scannerinput=newScanner(System.in);intnumber1=10+(int)(Math.random()*90);intnumber2=10+(int)(Math.random()*90);intoperator=(int)(Math.random()*2);intresult,answer;if(operator==0){result=number1+number2;System.out.print(number1+"+"+number2+"=");}else{if(number1<number2){程序3.7Calculator.javainttemp=number2;number2=number1;number1=temp;}result=number1-number2;System.out.print(number1+"-"+number2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論