Java程序設(shè)計基礎(chǔ)教程(慕課版)(第2版) 課件 朱麗萍 第1-6單元 Java基礎(chǔ)知識 -綜合實訓-集合和數(shù)組_第1頁
Java程序設(shè)計基礎(chǔ)教程(慕課版)(第2版) 課件 朱麗萍 第1-6單元 Java基礎(chǔ)知識 -綜合實訓-集合和數(shù)組_第2頁
Java程序設(shè)計基礎(chǔ)教程(慕課版)(第2版) 課件 朱麗萍 第1-6單元 Java基礎(chǔ)知識 -綜合實訓-集合和數(shù)組_第3頁
Java程序設(shè)計基礎(chǔ)教程(慕課版)(第2版) 課件 朱麗萍 第1-6單元 Java基礎(chǔ)知識 -綜合實訓-集合和數(shù)組_第4頁
Java程序設(shè)計基礎(chǔ)教程(慕課版)(第2版) 課件 朱麗萍 第1-6單元 Java基礎(chǔ)知識 -綜合實訓-集合和數(shù)組_第5頁
已閱讀5頁,還剩250頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1單元Java基礎(chǔ)知識Java程序設(shè)計基礎(chǔ)教程((慕課版)(第2版))目錄導航1.1

Java簡介1.3

Java開發(fā)工具的使用1.5單元小結(jié)1.2

Java開發(fā)環(huán)境搭建1.4項目實戰(zhàn)1.1.1Java的發(fā)展歷程1999

年。Java2平臺的發(fā)布是Java發(fā)展過程中最重要的一個里程碑,標志著Java的應用開始普及。1995年,Sun公司推出了可以嵌入網(wǎng)頁且可以隨網(wǎng)頁在網(wǎng)絡(luò)上傳輸?shù)腁pplet(一種將小程序嵌入網(wǎng)頁中執(zhí)行的技術(shù))并申請了商標。由于Oak已經(jīng)被使用,其名稱被修改為Java。1991年成立了Green小組。Java之父詹姆斯·高斯林與其他幾個工程師一起開發(fā)出了被稱為Oak的面向?qū)ο笳Z言,這就是Java語言的前身。1996年,JDK(JavaDevelopmentKit,Java軟件開發(fā)工具包)1.0發(fā)布,這是Java發(fā)展歷程中的重要里程碑,標志著Java成為一種獨立的開發(fā)工具。2004年,J2SE1.5發(fā)布,并更名為JavaSE5.0。Java10于

2018年3月發(fā)布。1.1.2Java語言的特點1.簡單性相對于C和C++而言,Java沒有g(shù)oto語句,使用break和continue語句及異常處理語句代替;沒有C++的運算符過載和多繼承特征,免去了預處理程序。Java奉行一切皆是對象的理念,避免了對指針的使用。同時,Java自帶垃圾回收機制,讓開發(fā)者無須關(guān)心存儲管理問題。2.面向?qū)ο驤ava是使用類(Class)來組織的,類的概念完美地契合了面向?qū)ο蟮睦砟?。類是屬性和行為的集合,即?shù)據(jù)和操作方法的集合。結(jié)合包(Package)的分層分體系來組織類,使得Java的層次感更強,方法的調(diào)用和開發(fā)更加方便和簡單。1.1.2Java語言的特點3.分布性Java支持多種層次的網(wǎng)絡(luò)連接,Socket類提供了可靠的流(Stream)連接,所以用戶可以使用Java來構(gòu)建分布式的客戶機和服務(wù)器。4.編譯和解釋性Java編譯程序生成字節(jié)碼(Bytecode),而不是常見的機器碼。Java程序可以在任何支持Java解釋程序的系統(tǒng)上運行。

Java支持快速原型,可實現(xiàn)快速程序開發(fā)。這是與傳統(tǒng)的、耗時的“編譯、鏈接和測試”形成鮮明對比的精巧的開發(fā)過程。5.穩(wěn)健性Java不支持指針的使用,這增強了程序的穩(wěn)健性,簡化了出錯處理和恢復操作。1.1.2Java語言的特點可移植性安全性Java沒有指針,并且會在加載前對字節(jié)碼文件進行安全性驗證,這些特點使Java相對安全。Java是運行在Java虛擬機(JavaVirtualMachine,JVM)上的,所以其運行不依賴于平臺和操作系統(tǒng)。高性能為了提升性能,JVM會根據(jù)代碼邏輯和當前系統(tǒng)重新排列字節(jié)碼中程序執(zhí)行的邏輯順序。這種重排不僅不會影響程序的邏輯,還會大大提升程序的運行性能。0806071.1.2Java語言的特點動態(tài)性多線程Java支持多線程開發(fā),并給出了一系列的類和關(guān)鍵字等,以確保在多線程環(huán)境中變量的位置保持一致。Java是一種動態(tài)的語言,可適應變化的環(huán)境。例如,Java中的類是根據(jù)需要載入的,其中部分類是通過網(wǎng)絡(luò)獲取的。0405目錄導航1.1

Java簡介1.3

Java開發(fā)工具的使用1.5單元小結(jié)1.2

Java開發(fā)環(huán)境搭建1.4項目實戰(zhàn)1.2.1JDK、JRE與JVM

JDK是Sun公司針對Java開發(fā)者發(fā)布的產(chǎn)品。JDK中包含JRE。JDK的安裝目錄下有一個名為jre的目錄,里面有兩個文件夾,分別為bin文件夾和lib文件夾。在這里可以認為bin文件夾中是JVM,lib文件夾中則是JVM工作所需要的類庫,而bin文件夾和lib文件夾合起來就稱為JRE。01JDK

JRE是Java程序不可缺少的運行環(huán)境。有了它,Java開發(fā)者才可以發(fā)布自己開發(fā)的程序,讓用戶使用。

JRE中包含JVM、RuntimeClassLibraries和JavaApplicationLauncher,這些是運行Java程序的必要組件。

與JDK不同,JRE是Java的運行環(huán)境,而不是開發(fā)環(huán)境,所以它沒有包含任何開發(fā)工具(如編譯器和調(diào)試器),只是針對使用Java程序的用戶。02JRE

JVM是Java實現(xiàn)跨平臺運行的核心部分。通常Java程序會先被編譯為.class文件,這種文件可以在虛擬機上執(zhí)行。

.class文件并不直接與操作系統(tǒng)交互,而是通過JVM與系統(tǒng)交互。JVM的這種屏蔽具體操作系統(tǒng)的特點是實現(xiàn)Java跨平臺運行的關(guān)鍵。03JVM1.2.2系統(tǒng)環(huán)境變量配置1.安裝JDKstep01

在Oracle官網(wǎng)中下載JDK的安裝包,下載頁面如圖1-1所示。本書以JDK1.8為例進行介紹,JDK11及更新版本的安裝和使用方法類似。step02

首先根據(jù)自己的操作系統(tǒng)選擇安裝包(本書以Windows10、64位的操作系統(tǒng)為例,選擇Windowsx64安裝包)。下載后得到的安裝文件是jdk-8u401-windows-x64.exe。雙擊該文件即可開始安裝,安裝界面如圖1-2所示。1.2.2系統(tǒng)環(huán)境變量配置step03

單擊“下一步”按鈕,進入定制安裝界面,如圖所示。step04

保持默認設(shè)置,單擊“下一步”按鈕,進入安裝執(zhí)行界面,如圖所示。step05

安裝執(zhí)行需要一定的時間,此處只需要等待即可。安裝完成之后,會提示用戶定制安裝JRE,選擇安裝目標文件夾后如圖所示。step06

保持默認配置,單擊“下一步”按鈕,將彈出JRE的安裝界面,如圖所示。step07

耐心等待,直到安裝完成,如圖1-7所示,單擊“關(guān)閉”按鈕即可完成JDK的安裝。1.2.2系統(tǒng)環(huán)境變量配置默認的JDK安裝路徑是系統(tǒng)盤中的Java目錄,找到該目錄,其結(jié)構(gòu)如圖所示。從這個目錄結(jié)構(gòu)可以看出,JDK的安裝包含JRE的安裝。進入JDK的文件目錄,其結(jié)構(gòu)如圖所示。JDK目錄下有很多子目錄和文件,它們都有其特定的功能,其中主要的子目錄和文件功能如下。bin目錄:用于存放可執(zhí)行程序。db目錄:小型的數(shù)據(jù)庫管理系統(tǒng),自JDK1.6之后引入,是一個純Java實現(xiàn)、開源的數(shù)據(jù)庫管理系統(tǒng),可直接使用,小巧輕便,支持JDBC4.0規(guī)范。include目錄:JDK是使用C和C++實現(xiàn)的,該目錄存放的是C類語言的頭文件。

jre目錄:JRE的根目錄,包含JVM、運行時的類包、Java應用啟動器和bin目錄,但不包含開發(fā)環(huán)境中的開發(fā)工具。lib目錄:用于存放開發(fā)工具使用的歸檔包文件。

src.zip文件:用于存放JDK核心類的源代碼文件,通過該文件可以查看Java基礎(chǔ)類的源代碼。1.2.2系統(tǒng)環(huán)境變量配置2.配置環(huán)境變量step01

打開文件資源管理器,右擊“此電腦”選項,在彈出的快捷菜單中選擇“屬性”,或在控制面板中選擇“系統(tǒng)”,然后單擊“高級系統(tǒng)設(shè)置”→“環(huán)境變量”按鈕,如圖1-10所示。打開環(huán)境變量配置界面,如圖1-11所示。和JDK相關(guān)的環(huán)境變量有3個,分別是JAVA_HOME、Path和CLASSPATH。其中JAVA_HOME是JDK的安裝目錄,用來定義Path和CLASSPATH的相關(guān)位置;Path環(huán)境變量告訴操作系統(tǒng)到何處找JDK工具;LASSPATH環(huán)境變量告訴JDK工具到何處找類文件(.class文件)。下面以Windows10系統(tǒng)為例,介紹JDK環(huán)境變量的配置。Windows系統(tǒng)其他版本的配置方式都是類似的,讀者可以查閱資料。1.2.2系統(tǒng)環(huán)境變量配置step02

在系統(tǒng)環(huán)境目錄下創(chuàng)建JAVA_HOME環(huán)境變量,該變量的值是JDK的安裝目錄。首先單擊“新建”按鈕,然后在“變量名”文本框中輸入“JAVA_HOME”,在“變量值”文本框中輸入JDK的安裝路徑,單擊“確定”按鈕,如圖1-12所示。CLASSPATH環(huán)境變量的配置方法同JAVA_HOME環(huán)境變量,如圖1-13所示。與JAVA_HOME和CLASSPATH不同,在計算機中Path環(huán)境變量是存在的,所以只需要為其添加內(nèi)容即可,如圖1-14所示。環(huán)境變量分為兩類,一類是用戶的環(huán)境變量,另一類是系統(tǒng)環(huán)境變量。1.2.2系統(tǒng)環(huán)境變量配置step03

配置完畢之后,按【W(wǎng)IN+R】組合鍵打開“運行”對話框,輸入“cmd”,單擊“確定”按鈕,打開Windows的命令提示符窗口,如圖1-15所示。step04

輸入“java–version”,按【Enter】鍵,命令提示符窗口中會顯示Java的版本信息,如圖1-16所示。step05

輸入“javac”,按【Enter】鍵,窗口會顯示Java的javac工具,如圖1-17所示。目錄導航1.1

Java簡介1.3

Java開發(fā)工具的使用1.5單元小結(jié)1.2

Java開發(fā)環(huán)境搭建1.4項目實戰(zhàn)1.3

Java開發(fā)工具的使用JDK安裝配置完成之后就可以進行Java的開發(fā)了,此時,你只需要使用文本編輯器就可以開發(fā)Java代碼了。讓我們來體驗一下吧!使用文本編輯器編寫一個Java程序,代碼如下:publicclassHelloJava{publicstaticvoidmain(String[]args){System.out.println("Helloworld,HelloJava!");}}按【W(wǎng)IN+R】組合鍵,輸入“cmd”,打開命令提示符窗口;先使用javac編譯.java文件,然后使用java運行程序。需要注意的是,文件的名稱必須和類名一致。這里的文件名稱是HelloJava.java。javac用于編譯文件,所以使用“javacHelloJava.java”;java運行的是類,所以使用“javaHelloJava”,運行效果如圖1-18所示。1.3.1比較流行的Java開發(fā)工具簡介JDK安裝配置完成之后就可以進行Java的開發(fā)了,此時,你只需要使用文本編輯器就可以開發(fā)Java代碼了。讓我們來體驗一下吧!1.EclipseEclipse是一款主要用Java編寫的免費JavaIDE(IntegratedDevelopmentEnvironment,集成開發(fā)環(huán)境)。Eclipse允許用戶創(chuàng)建各種可用于手機、網(wǎng)絡(luò)、桌面和企業(yè)領(lǐng)域的跨平臺Java應用程序。Eclipse的主要功能包括Windows生成器、集成Maven、Mylyn、XML(ExtensibleMarkupLanguage,可擴展標記語言)編輯器、Git客戶端、CVS(ConcumentVersionsSystem,并發(fā)版本系統(tǒng))客戶端、PyDev,并且Eclipse還有一個基本工作區(qū),里面的可擴展插件系統(tǒng)可滿足用戶自定義IDE的需求。Eclipse在Eclipse公共協(xié)議下可用,并且適用于Windows、macOS和Linux系統(tǒng)。1.3.1比較流行的Java開發(fā)工具簡介2.NetBeansNetBeans是一款用Java編寫的開源IDE,是最受歡迎的JavaIDE編輯器之一。

NetBeans支持所有Java應用類型(包括JavaSE、JavaFX、JavaME、Web應用、EJB和移動App)的標準開箱即用式開發(fā)。NetBeans模塊化的設(shè)計意味著它可以由第三方插件來擴展其功能,如NetBeans的PDF插件。

NetBeans既可用于Java開發(fā),也支持其他語言,特別是PHP、C/C++和HTML5(HyperTextMarkupLanguage5,超文本標記語言第5版)。

NetBeans是基于Ant的項目系統(tǒng),支持Maven、重構(gòu)、版本控制(包括CVS、Subversion、Git、Mercurial和ClearCase),并且是在由通用開發(fā)與發(fā)布許可證(CommonDevelopmentandDistributionLicense,CDDL)v1.0和GNU通用公共許可證(GeneralPubicLicense,GPL)v2.0構(gòu)成的雙重協(xié)議下發(fā)布的。

NetBeans可在多個平臺上運行,包括Windows、macOS、Linux、Solaris和其他支持兼容JVM的平臺。1.3.1比較流行的Java開發(fā)工具簡介3.IntelliJIDEAIntelliJIDEA是一款免費的JavaIDE,主要用于Android應用開發(fā)、Scala、Groovy、JavaSE和JavaEE編程。它設(shè)計精巧,并提供了JUnit測試、TestNG、調(diào)試、代碼檢查、智能代碼補全、多元重構(gòu)、Maven和Ant構(gòu)建工具、可視化GUI(GraphicalUserInterface,圖形用戶界面)設(shè)計器以及XML和Java代碼編輯器等實用功能。4.MyEclipseMyEclipse是一個出色的Eclipse插件集合,專門用于Java、J2EE開發(fā)。MyEclipse的功能非常強大,支持面也十分廣,尤其是對多種開源產(chǎn)品的支持都不錯。MyEclipse支持JavaServlet、AJAX(AsynchronousJavaScriptAndXML,異步JavaScript和XML)、JSP(JavaServerPage,Java服務(wù)器頁面)、JSF(JavaServerFaces,Java服務(wù)器界面)、Struts、Spring、Hibernate、EJB3(EnterpriseJavaBean3,企業(yè)級JavaBean第3版)、JDBC(JavaDatabaseConneetivity,Java數(shù)據(jù)庫連接)數(shù)據(jù)庫連接工具等多項功能。目前MyEclipse提供Windows、macOS和Linux3種操作系統(tǒng)的安裝包,可在這3種操作系統(tǒng)上安裝。1.3.1比較流行的Java開發(fā)工具簡介5.其他工具Java的魅力是支持多種工具,例如構(gòu)建工具Ant、包管理工具Maven和項目運行容器Tomcat等。這些工具可以幫助Java開發(fā)者快速創(chuàng)建項目及進行項目的持續(xù)集成等。其中Maven是項目包管理的重要工具,它可以減少包導入導致的項目占用空間巨大和Java包沖突等問題;Tomcat則是JavaWeb項目發(fā)布時需要使用的服務(wù)器,可以讓Web項目在其上運行并提供服務(wù)。1.3.2Eclipse的安裝及使用目前Eclipse有很多版本,本書以Neon版本為例進行說明。用戶只需下載“eclipse-inst-win64.exe”安裝包,并按照提示安裝即可,步驟如下。step01

雙擊安裝包,選擇“EclipseIDEforJavaDevelopers”選項,如圖1-20所示;進入安裝配置界面,單擊“INSTALL”按鈕安裝即可,如圖1-21所示;安裝時會跳出協(xié)議界面,單擊“確定”按鈕繼續(xù)安裝。step02

安裝完成之后會在桌面上生成一個快捷圖標。雙擊快捷圖標運行軟件,軟件打開后界面如圖1-22所示。目錄導航1.1

Java簡介1.3

Java開發(fā)工具的使用1.5單元小結(jié)1.2

Java開發(fā)環(huán)境搭建1.4項目實戰(zhàn)項目1-1使用Eclipse編寫HelloWorld程序我們學習一門新的語言,編寫的第一個程序基本上都是HelloWorld。本項目就是使用Java語言編寫HelloWorld程序,開發(fā)工具使用Eclipse。Eclipse的使用較為簡單,首先創(chuàng)建項目,然后創(chuàng)建類,執(zhí)行一個入口類就可以查看運行結(jié)果了。如果編輯中出現(xiàn)簡單的錯誤,編輯器會進行提示,在錯誤代碼下顯示一條紅色的波浪線。具體步驟如下。step01

創(chuàng)建項目。選擇“File”→“new”→“Project”→“JavaProject”,或者按【Alt+Shift+N】組合鍵后選擇“Project”→“JavaProject”;然后輸入項目名稱“firstprogram”,再依次單擊“Finish”→“Yes”即可,如圖1-23、圖1-24所示。項目1-1使用Eclipse編寫HelloWorld程序step02

項目創(chuàng)建完成之后,就進入了Java項目的編輯界面,如圖1-25所示。step03

創(chuàng)建類。在項目文件結(jié)構(gòu)中使用默認的包(包的概念在第5單元中介紹)新建一個類,方法為:右擊src文件夾,在彈出的快捷菜單中選擇“New”→“Class”,如圖1-26所示;在彈出的“NewJavaClass”對話框的“Package”文本框中輸入包名稱“firstprogram”,在“Name”文本框中輸入類名稱“HelloJava”,勾選“publicstaticvoidmain(String[]args)”,默認創(chuàng)建一個主方法,其他選項保持默認值不變,如圖1-27所示。項目1-1使用Eclipse編寫HelloWorld程序step04

單擊“Finish”按鈕后,就可成功地創(chuàng)建Java類了。創(chuàng)建完成之后,編輯器會自動打開所創(chuàng)建類的視圖,如圖1-28所示。step05

此時,Java類已經(jīng)創(chuàng)建完成。為了形成對比,此處使用與在文本編輯器中編寫的Java類相似的執(zhí)行邏輯:在main()方法中通過System.out.println()輸出“HelloEclipse,HelloJava!”;在類文件中右擊,選擇“Runas”,會在控制臺中輸出“HelloEclipse,HelloJava!”,如圖1-29所示。項目1-1使用Eclipse編寫HelloWorld程序Java提供了豐富的API,這些API可以幫助開發(fā)者快速開發(fā)項目。這些API按照功能被放在了不同的包中,具體如下。

java.util包:包含大量的工具類,例如Arrays、List和Map等。

包:包含與網(wǎng)絡(luò)編程相關(guān)的類和接口。

java.io包:包含所有與輸入輸出操作相關(guān)的類和接口。

java.awt包:包含與圖像界面相關(guān)的類和接口。

java.lang包:包含與語言相關(guān)的類和接口。

java.sql包:包含與數(shù)據(jù)庫相關(guān)的類和接口。

java.rmi包:包含與遠程調(diào)用相關(guān)的類和接口。目錄導航1.1

Java簡介1.3

Java開發(fā)工具的使用1.5單元小結(jié)1.2

Java開發(fā)環(huán)境搭建1.4項目實戰(zhàn)1.5單元小結(jié)本單元是Java的基本介紹單元,1.1節(jié)主要講解了Java的發(fā)展歷程和語言特點,并指出了Java熱度不減的原因;1.2節(jié)講解了JDK、JRE和JVM的關(guān)系、JDK的安裝及系統(tǒng)環(huán)境變量的配置,這是開發(fā)Java項目必不可少的環(huán)節(jié);1.3節(jié)介紹了Java常用的開發(fā)工具,這些開發(fā)工具各有優(yōu)點,其中Eclipse較為常用,Eclipse有免安裝版本,可以直接解壓后使用;1.4節(jié)的項目實戰(zhàn)主要介紹了Eclipse工具的使用,帶領(lǐng)讀者了解了使用Eclipse創(chuàng)建Java項目和Java類并運行的方法,讀者可以根據(jù)自己的興趣使用Eclipse創(chuàng)建并編寫一個Java項目。

Java最大的優(yōu)勢之一就是盡力讓開發(fā)者只關(guān)注業(yè)務(wù)邏輯,這極大地減少了C類程序中讓開發(fā)者頭疼的空間管理和指針問題,而且Java豐富的類庫讓開發(fā)者更容易入手,加上Java強大的擴展能力,使其成為開發(fā)領(lǐng)域中最活躍的編程語言之一。單元1站點創(chuàng)建與制作商品簡介頁面HTML5+CSS3網(wǎng)頁設(shè)計與制作實用教程學習快樂!工信精品軟件技術(shù)系列教材人民郵電出版社第2單元基本數(shù)據(jù)類型及運算符Java程序設(shè)計基礎(chǔ)教程((慕課版)(第2版))目錄導航2.1基本數(shù)據(jù)類型2.3項目實戰(zhàn)2.2運算符2.4單元小結(jié)2.1.1基本數(shù)據(jù)類型分類Java中的整型可以分為以下4種類型。基本型:用int表示。

短整型:用short表示。

長整型:用long表示。

字節(jié)型:用byte表示。01OPTION整型Java的基本數(shù)據(jù)類型可以分為三大類,分別是字符型(char)、布爾型(boolean)和數(shù)值類型(byte、short、int、long、float和double),數(shù)值類型又分為整型(byte、short、int和long)和浮點型(float和double)。數(shù)據(jù)類型內(nèi)存占用大小取值范圍byte8位(1個字節(jié))-128~127short16位(2個字節(jié))-32768~32767int32位(4個字節(jié))-231~231-1long64位(8個字節(jié))-263~263-1表2-1Java中整型的內(nèi)存占用大小及取值范圍2.1.1基本數(shù)據(jù)類型分類Java的數(shù)據(jù)類型是以補碼的形式存放在內(nèi)存中的。以short為例,它有16位,能存儲的最小數(shù)是:這個數(shù)是-216,換算成十進制數(shù)就是-32768。

它能存儲的最大數(shù)是:這個數(shù)是216-1,換算成十進制數(shù)就是32767。其他數(shù)據(jù)類型的取值及其與十進制數(shù)之間的轉(zhuǎn)換方式與此相似,讀者可以按照這個方式進行換算。在Java中,高位是符號位,1表示負數(shù),0表示整數(shù)。2.1.1基本數(shù)據(jù)類型分類Java使用浮點型來表示實數(shù)。浮點型也有兩種:單精度浮點型和雙精度浮點型,分別使用float和double來表示。浮點型的相關(guān)說明如表2-2所示。02OPTION浮點型表2-2浮點型的相關(guān)說明數(shù)據(jù)類型內(nèi)存占用大小有效數(shù)字取值范圍float32位(4個字節(jié))7個十進制位約±3.4×1038double64位(8個字節(jié))15~16個十進制位約±1.8×10308Java中的浮點型是按照IEEE(InstituteofElectricalquelElectronicsEngineers,電氣與電子工程師協(xié)會)754標準存放的。值得注意的是,程序開發(fā)中需要將整數(shù)當作一種類型,將實數(shù)當作另一種類型,因為整數(shù)和實數(shù)在計算機內(nèi)存中的表示方法截然不同:整數(shù)是精確存儲的,而實數(shù)只是存儲近似值。2.1.1基本數(shù)據(jù)類型分類Java中的字符型用char來表示。和C/C++不同的是,它使用2個字節(jié)(16位)來存儲一個字符,而且存放的并非ASCII值而是Unicode值。Unicode是一種在計算機上使用的字符編碼,其為每種語言定義了統(tǒng)一且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉(zhuǎn)換處理的需求。Unicode值和ASCII值是兼容的,所有的ASCII字符都可通過在高字節(jié)位添加0,成為Unicode值。例如,a的ASCII值是0x61,在Unicode中,其編碼是0x0061。03OPTION字符型布爾型使用boolean來表示,它的值只有true和false。布爾型是用來處理邏輯的,又被稱為邏輯類型,true和false分別表示條件成立和條件不成立。04OPTION布爾型2.1.2基本數(shù)據(jù)類型的拆裝箱基本數(shù)據(jù)類型的數(shù)據(jù)可以作為變量(Variable)存儲在計算機內(nèi)存中。變量是有名稱和數(shù)據(jù)類型的內(nèi)存空間,用于存儲值。01OPTION變量聲明變量02OPTION變量的存在就是為了告訴程序我是誰和我的數(shù)據(jù)類型是什么。所以,你需要發(fā)表一個聲明,告訴程序你要聲明一個變量,這個變量叫什么,將要存儲什么類型的數(shù)據(jù),如下所示:<類型><名稱>;需要注意的是,每個變量名稱只能聲明一次,否則Java編譯器會報錯。類型可以使用Java的8種基本數(shù)據(jù)類型的名字來表示。變量一旦聲明了,Java就會為它分配一段內(nèi)存空間來存儲它的值,但是僅聲明變量并不能讓Java向變量對應的內(nèi)存空間存放初始值。僅聲明的變量被稱為未初始化的變量,這種變量需要對其進行賦值操作之后才能使用。2.1.2基本數(shù)據(jù)類型的拆裝箱變量的賦值使用“=”表示,該符號用于告訴JVM將后面的值交給前面的變量進行保存。需要注意的是,變量在進行賦值操作會執(zhí)行類型安全檢查。如果你定義的變量是char類型的,但賦予該變量一個boolean類型的值,Java編譯器就會拋出異常。03OPTION變量賦值<variable>=<expression>;賦值語句可以與聲明語句同時使用,即你可在聲明一個變量的時候就為這個變量賦值:<type><variable>=<expression>;例如,你可以聲明一個int類型的變量,其名稱是height,其值是180:intheight=180;與變量相對的是常量。常量的值在程序運行過程中不能被改變。這一點是不同于變量的,變量的值是可以根據(jù)需要進行改變的。任務(wù)2-1常量和變量文件ConstantAndVariablesDemo.java序號程序代碼010203040506070809101112131415161718publicclassConstantAndVariablesDemo{publicstaticvoidmain(String[]args){finalintMALE=1;//定義常量MALE表示男性,常量需要在聲明時賦值intage;//聲明age,其類型是intintheight=180;//聲明height,其類型是int,并賦值為180//age未定義,所以此處會拋出錯誤//System.out.println("MALE="+MALE+";age="+age+";height="+height);age=20;//給age賦值//輸出System.out.println("MALE="+MALE+";age="+age+";height="+height);height=177;//變量重新賦值System.out.println("MALE="+MALE+";age="+age+";height="+height);//MALE=0;//常量無法重新賦值}}運行結(jié)果如圖2-1所示。任務(wù)2-2基本數(shù)據(jù)類型的拆裝箱文件AssemblyAndDisDemo.java序號程序代碼0102030405060708091011121314publicclassAssemblyAndDisDemo{publicstaticvoidmain(String[]args){intage=39;//定義基本數(shù)據(jù)類型變量IntegerageNor=38;//定義包裝類變量//輸出System.out.println("age="+age+",ageNor="+ageNor);inttemp=age;//將基本數(shù)據(jù)類型變量賦給一個臨時變量age=ageNor;//將包裝類變量賦給基本數(shù)據(jù)類型變量ageNor=temp;//將基本數(shù)據(jù)類型變量賦給一個包裝類變量//輸出System.out.println("age="+age+",ageNor="+ageNor);}}運行結(jié)果如圖2-2所示。任務(wù)2-3獲取基本數(shù)據(jù)類型的取值范圍文件BasicValueDemo.java序號程序代碼0102030405060708091011121314151617publicclassBasicValueDemo{publicstaticvoidmain(String[]args){//整型System.out.println("byte類型的最大值:"+Byte.MAX_VALUE+";最小值:"+Byte.MIN_VALUE);System.out.println("short類型的最大值:"+Short.MAX_VALUE+";最小值:"+Short.MIN_VALUE);System.out.println("int類型的最大值:"+Integer.MAX_VALUE+";最小值:"+Integer.MIN_VALUE);System.out.println("long類型的最大值:"+Long.MAX_VALUE+";最小值:"+Long.MIN_VALUE);//浮點型System.out.println("float類型的最大值:"+Float.MAX_VALUE+";最小值:"+Float.MIN_VALUE);System.out.println("double類型的最大值:"+Double.MAX_VALUE+";最小值:"+Double.MIN_VALUE);//布爾型System.out.println("boolean類型的true:"+Boolean.TRUE+";false:"+Boolean.FALSE);//字符型System.out.println("char類型的最大值:"+(int)(Character.MAX_VALUE)+";最小值:"+(int)(Character.MIN_VALUE));}}任務(wù)2-2基本數(shù)據(jù)類型的拆裝箱運行結(jié)果如圖2-3所示。包裝類的名稱一般是將對應基本數(shù)據(jù)類型的名稱改為首字母大寫。但int類型和char類型較為特殊,其對應的包裝類分別是Integer和Character。通過包裝類的基本方法可以獲取其對應的基本數(shù)據(jù)類型的閾值。任務(wù)2-4包裝類的轉(zhuǎn)換方法文件AssemblyParseDemo.java序號程序代碼0102030405060708091011121314publicclassAssemblyParseDemo{publicstaticvoidmain(String[]args){//定義String類型的變量,一個是整型的100,一個是浮點型的99.88StringintValue="100";StringdoubleValue="99.88";byteb=Byte.parseByte(intValue);//將字符串轉(zhuǎn)換成byte類型的數(shù)據(jù)shorts=Short.parseShort(intValue);//將字符串轉(zhuǎn)換成short類型的數(shù)據(jù)inti=Integer.parseInt(intValue);//將字符串轉(zhuǎn)換成int類型的數(shù)據(jù)System.out.println("b="+b+";s="+s+";i="+i);//輸出floatf=Float.parseFloat(doubleValue);//將字符串轉(zhuǎn)換成float類型的數(shù)據(jù)doubled=Double.parseDouble(doubleValue);//將字符串轉(zhuǎn)換成double類型的數(shù)據(jù)System.out.println("f="+f+";d="+d);//輸出}}運行結(jié)果如圖2-4所示。2.1.3拓展:parseInt()方法和valueOf()方法的使用Integer的parseInt()和valueOf()方法都可以將字符串轉(zhuǎn)換成Integer類型的值。在對字符串的處理方面,valueOf()一般會調(diào)用parseInt()方法,但是何時使用parseInt(),何時使用valueOf()呢?此時需要深入查看API,通過查看API不難發(fā)現(xiàn):publicstaticIntegervalueOf(Strings)throwsNumberFormatException{returnInteger.valueOf(parseInt(s,10));}其實valueOf()方法最終還是需要使用parseInt()方法的,這里還用到了valueOf()方法。進入這個方法,可以看到如下內(nèi)容:publicstaticIntegervalueOf(inti){if(i>=IntegerCache.low&&i<=IntegerCache.high)returnIntegerCache.cache[i+(-IntegerCache.low)];returnnewInteger(i);}此處發(fā)現(xiàn)了IntegerCache。從代碼中可以看出,IntegerCache是一個已經(jīng)預先初始化的數(shù)字常量池:staticfinalintlow=-128;staticfinalinthigh;…inth=127;…for(intk=0;k<cache.length;k++)cache[k]=newInteger(j++);目錄導航2.1基本數(shù)據(jù)類型2.3項目實戰(zhàn)2.2運算符2.4單元小結(jié)2.2運算符Java中的運算符共36種,依照運算類型可以分為六大類,包含算術(shù)運算符、關(guān)系運算符、邏輯運算符、條件運算符、位運算符和賦值運算符。這6種運算的說明如表2-3所示。類型運算符算術(shù)運算符+、-、*、/、%、++、--關(guān)系運算符>、<、==、>=、<=、!=邏輯運算符!、&&、||條件運算符?:位運算符<<、>>、>>>、^、~、|、&賦值運算符=、+=、-=、*=、/=、&=、|=、^=、%=、<<=、>>=、>>>=表2-3Java中的運算符2.2.1算術(shù)運算符算術(shù)運算就是我們?nèi)粘I钪兴f的加減乘除等運算,在計算機中還有取余運算和自增自減運算。在基本數(shù)據(jù)類型中,boolean類型無法進行算術(shù)運算。我們在2.1節(jié)中介紹了基本數(shù)據(jù)類型中除了boolean外的其他幾種類型。需要注意的是,精度小于int類型精度的數(shù)據(jù)在做加減乘除運算時,會使用int類型進行計算,同時將表達式中精度最高的操作數(shù)的數(shù)據(jù)類型作為結(jié)果的類型。1.加減運算在基本數(shù)據(jù)類型中,“+”和“-”與普通數(shù)學中的用法一致。因為符號左右都需要一個操作數(shù),所以加減運算也稱雙目運算,其一般語法格式是:<expr1>+<expr2><expr1>-<expr2>加減運算的具體應用請參看任務(wù)2-5。任務(wù)2-5加減運算publicclassAddAndMinus{publicstaticvoidmain(String[]args){charch1='c';charch2='d';shorts1=10;shorts2=12;inti1=100;inti2=20;//charch3=ch1+ch2;//編譯器報異常inti3=ch1+ch2;//shorts3=s1+s2;//編譯器報異常inti4=s1+s2;//charch4=i1+i2;//編譯器報異常inti5=i1+i2;System.out.println("i3="+i3);System.out.println("i4="+i4);System.out.println("i5="+i5);//int類型數(shù)據(jù)與float類型數(shù)據(jù)的和是float類型的數(shù)據(jù)floatf1=3.0F;System.out.println("i1+f1="+(i1+f1));}}文件AddAndMinus.java運行結(jié)果如圖2-5所示。從任務(wù)2-5中不難發(fā)現(xiàn),char類型數(shù)據(jù)和short類型數(shù)據(jù)在做運算的時候其結(jié)果是int類型的數(shù)據(jù)。這并非由于Java中的精度安全機制,而是由于JVM中存儲長度小于int類型的數(shù)據(jù)時是使用int類型的,這樣就避免了過多的數(shù)據(jù)類型而增加額外的開銷,同時簡化了數(shù)據(jù)操作。2.2.1算術(shù)運算符2.正負值運算需要注意的是,“+”和“-”并非在所有的情況下都是加減運算符,它們有時候也是正負值的標識。這個標識和數(shù)學中的使用方式一致,即標識常量或數(shù)字的正負性,例如-1、+a、-b等。正負值運算只有右側(cè)有值,所以是單目運算,這一點有別于加減運算。正負值運算另一個要關(guān)注的點是:這兩個運算符只是標識,并不能改變操作數(shù)本身。例如,對于a=1,如果我們執(zhí)行-a操作,a還是等于1,而非-1。正負值運算的一般語法格式是:+<expr1>-<expr1>3.乘除運算Java中的乘法運算符是“*”,除法運算符是“/”。同加減運算一樣,其運算符左右必須有值。乘除運算也是雙目運算,其用法也與數(shù)學中的用法一致。乘除運算的具體應用請參看任務(wù)2-6。+<expr1>-<expr1>任務(wù)2-6乘除運算publicclassMultipAndDivide{publicstaticvoidmain(String[]args){System.out.println("5/3="+(5/3));System.out.println("5*3="+(5*3));System.out.println("5/3.0="+(5/3.0));System.out.println("5*3.0="+(5*3.0));System.out.println("5.0/3="+(5.0/3));System.out.println("5.0*3*3="+(5.0*3*3));}}文件MultipAndDivide.java運行結(jié)果如圖2-6所示。4.取余運算取余運算的運算符是“%”。取余運算也是雙目運算,和數(shù)學中的取余運算一致,其表達式為:<expr1>%<expr2>取余運算實際上相當于:<expr1>-(expr1/expr2)*expr2任務(wù)2-7取余運算publicclassRemainderDemo{publicstaticvoidmain(String[]args){System.out.println("5%3="+(5%3));System.out.println("5%-3="+(5%-3));System.out.println("-5%3="+(-5%3));System.out.println("-5%-3="+(-5%-3));System.out.println("5%3.0="+(5%3.0));System.out.println("5.0%3="+(5.0%3));System.out.println("5.0%3.1="+(5.0%3.1));System.out.println("-5.1%3.1="+(-5.1%3.1));System.out.println("-5.2%-3.1="+(-5.2%-3.1));}}文件RemainderDemo.java運行結(jié)果如圖2-7所示。從任務(wù)2-7中可以看出,取余運算的余數(shù)的正負與被除數(shù)的正負相同,其類型與除數(shù)與被除數(shù)中精度較大的數(shù)據(jù)類型相同。同時,進行浮點型數(shù)值的取余運算時,將被除數(shù)與除數(shù)進行整除后,用被除數(shù)減去除數(shù)與整除值的乘積得到余數(shù)。所以,5.2%3.1的運算過程和結(jié)果就是:5.2-3.1*1=2.1。這與C語言中的fmod()函數(shù)的計算方法是一致的。2.2.1算術(shù)運算符5.自增自減運算自增和自減運算的運算符分別是“++”和“--”。和正負號一樣,自增自減運算符也是單目運算符。它們唯一的區(qū)別是:自增自減運算符會改變變量的值,該運算符只對變量有效,對常量無效。自增自減運算符可以在變量的前面,稱為前綴;也可以在變量的后面,稱為后綴。前綴和后綴在計算方式上會有所不同。任務(wù)2-8自增自減運算文件AutoIncrAndDecrDemo.javapublicclassAutoIncrAndDecrDemo{publicstaticvoidmain(String[]args){inta=1;intb=1;intc=++a;//前自增intd=--b;//前自減System.out.println("a="+a+",b="+b+",c="+c+",d="+d);c=a++;//后自增d=b--;//后自減System.out.println("a="+a+",b="+b+",c="+c+",d="+d);}}運行結(jié)果如圖2-8所示。2.2.2關(guān)系運算符和邏輯運算符關(guān)系運算因為是對兩個操作數(shù)的關(guān)系進行判斷,所以是雙目運算。在Java中,關(guān)系運算符有相等運算符“==”、不相等運算符“!=”和大小關(guān)系運算符“>”“<”“>=”“<=”。關(guān)系運算的操作數(shù)可以是一個數(shù)值,也可以是一個表達式。需要注意的是,關(guān)系運算符左右的數(shù)據(jù)必須是相同或者相容類型的數(shù)據(jù)或者表達式。其中,相等與不相等運算符可以使用布爾型數(shù)據(jù)或表達式作為操作數(shù),但大小關(guān)系運算符的操作數(shù)只能是整型或者浮點型數(shù)據(jù)或表達式。

相等運算符的一般語法格式是:01OPTION關(guān)系運算符<expr1>==<expr2>表達式也能作為其比較對象,操作數(shù)也可以是布爾型的。例如如下語句:5==3(a*3)==(b–2)(a==3)==truetrue==true如果表達式兩側(cè)的值是相等的,則返回true,否則返回false。2.2.2關(guān)系運算符和邏輯運算符不相等表達式0的運算符是“!=”,其一般語法格是:<expr1>!=<expr2>5!=3true!=false(3+a)!=(b–6)(5==3)!=true不相等運算符的兩側(cè)可以是相等或者相容類型的數(shù)據(jù),支持布爾型數(shù)據(jù)的判斷。例如如下語句:不相等表達式與相等表達式得到的結(jié)果相反。如果表達式相等,則返回false,否則返回true。Java中的大小關(guān)系運算符有4個,即“>”(大于)、“<”(小于)、“>=”(大于或等于)和“<=”(小于或等于),其一般語法格式是:<expr1><大小關(guān)系運算符><expr2>大小關(guān)系運算符與現(xiàn)代代數(shù)中對應符號的規(guī)則完全相同。參與大小關(guān)系運算的操作數(shù)可以是整型和浮點型。如果類型不相同,會首先進行自動類型轉(zhuǎn)換,然后進行關(guān)系判斷。2.2.2關(guān)系運算符和邏輯運算符Java中的邏輯運算有3種:與運算、或運算和非運算(也叫取反運算)。我們將參與邏輯運算的數(shù)據(jù)對象稱為邏輯量,將用邏輯運算符連接起來的式子稱為邏輯表達式。邏輯表達式的值又稱邏輯值,參與邏輯運算的操作數(shù)必須是布爾型的數(shù)據(jù)或者表達式。邏輯運算除了邏輯非運算外都是雙目運算,邏輯非運算是單目運算。02OPTION邏輯運算符01邏輯與運算邏輯與運算的運算符是“&&”,其語法格式是:<expr1>&&<expr2>expr1expr2expr1&&expr2truetruetruefalsetruefalsetruefalsefalsefalsefalsefalse表2-4邏輯與運算的真值表2.2.2關(guān)系運算符和邏輯運算符02邏輯或運算邏輯或運算的運算符是“||”,其表達式的一般形式是:<expr1>||<expr2>表2-5邏輯或運算的真值表expr1expr2expr1||expr2truetruetruefalsetruetruetruefalsetruefalsefalsefalse03邏輯非運算邏輯非運算的運算符是“!”,它是單目運算,其語法格式一般為:!<expr1>因為關(guān)系運算是雙目運算,此處必須用括號“()”將表達式括起來,否則編譯器會報錯。任務(wù)2-9邏輯與運算和邏輯或運算publicclassAnd_OrDemo{publicstaticvoidmain(String[]args){inta=3;intb=5;//因為a+b=8,所以無須執(zhí)行a++表達式booleanbool1=a+b<7&&a++<9;System.out.println("a="+a+",b="+b+",bool1="+bool1);//因為a+b<9成立,所以執(zhí)行b++表達式bool1=a+b<9&&b++>7;System.out.println("a="+a+",b="+b+",bool1="+bool1);//因為a<4成立,所以不執(zhí)行a--表達式bool1=a<4||a-->3;System.out.println("a="+a+",b="+b+",bool1="+bool1);//因為a>5不成立,所以執(zhí)行a++表達式

bool1=a>5||a++>1;System.out.println("a="+a+",b="+b+",bool1="+bool1);}}文件And_OrDemo.java運行結(jié)果如圖2-9所示。關(guān)系表達式和邏輯表達式的值都是true或false,是boolean類型,所以它們一般被用在控制執(zhí)行流程中,例如if()語句、while()語句等,作為控制條件??刂茍?zhí)行流程將在第3單元進行講解。2.2.3賦值運算符與條件運算符Java中的賦值運算符有兩種:對于簡單的賦值運算,使用簡單賦值運算符“=”;對于復雜的賦值運算,將“=”與其他運算符復合在一起形成復合賦值運算符,如“+=”和“%=”等。賦值運算符01OPTION01簡單賦值運算符簡單賦值運算符是“=”,其賦值語法格式如下:a=b+1;在Java中,所謂的賦值,其物理意義就是將賦值運算右側(cè)操作數(shù)的值存放到左側(cè)操作數(shù)所標識的存儲單元中。賦值運算具有右結(jié)合性,也就是說:a=b=c=1;可以理解成:a=(b=(c=1));在Java中,賦值語句右側(cè)的執(zhí)行順序是從左向右的,例如:a=++b+b--;02復合賦值運算符在程序設(shè)計中,類似下面的表達式是常見的:a=a+b;此類運算的特點是參與運算的量既是運算分量也是存儲對象。2.2.3賦值運算符與條件運算符為了避免對同一存儲對象的地址反復計算,Java引入了復合賦值運算符,凡是雙目運算都可以與賦值運算組合成復合賦值運算。復合賦值運算符有11種,它們的存在提升了編譯的效率:+=、-=、*+、/=、%=、<<=、>>=、>>>=、&=、^=、|=其對應的運算語義如下:x+=6;等效于x=x+6;z*=x+y等效于z=z*(x+y)m+=n-=q+1等效于m=m+(n=n-(q+1))x/=6等效于x=x/6x%=6等效于x=x%6x<<=1等效于x=x<<1x>>=1等效于x=x>>1x>>>=1等效于x=x>>>1x&=y等效于x=x&yx^=y等效于x=x^yx|=y等效于x=x|y2.2.3賦值運算符與條件運算符條件運算符又稱三目運算符,其一般語法格式如下:條件運算符02OPTION<expr1>?<expr2>:<expr3>三目運算符的語義是:如果表達式expr1是true,則返回expr2,否則返回expr3。三目運算符同邏輯運算符一樣也能控制子表達式的求值順序。三目運算符的另一個優(yōu)勢是:其子表達式也可以是一個三目運算表達式:x%3==0?“3的倍數(shù)”:x%2==0?“偶數(shù)”:“基數(shù)”三目運算符在取多個數(shù)的最大值和最小值時非常有效,如下:inta=10;intb=12;intc=20;intmax=a<b?b<c?c:b:a<c?c:a;2.2.4位運算符<<是左移運算符,左移操作是將一個數(shù)的二進制碼整體向左移動指定的位數(shù),左邊移除的位被丟棄,并在右邊空出的位上補0。左移操作相當于將原數(shù)乘以2的n次方,其中n是移動的位數(shù)。>>是右移運算符,右移操作是將一個數(shù)的二進制碼整體向右移動指定的位數(shù),右邊移除的位被丟棄,左邊空出的位根據(jù)原有數(shù)值的符號位來補充。即針對正數(shù)的位移,左邊空出的位會補0;針對負數(shù)的位移,左邊空出的位會補1。右移操作相當于將原數(shù)除以2的n次方,其中n是移動的位數(shù)。>>>是無符號右移運算符。無符號右移操作和右移操作類似,區(qū)別在于無符號右移不考慮符號位,右邊移除的位被丟棄,左邊空出的位始終補0。對于正數(shù),無符號右移操作的結(jié)果和右移操作一致,對于負數(shù)則不同。01OPTION<<、>>、>>>2.2.4位運算符^、~、|、&02OPTION^是異或運算符,用于對兩個整數(shù)的二進制碼按位進行比較。如果同一位置的兩個比特值相等,則將該位置為0;如果同一位置的兩個比特值不相等,則將該位置為1。~是按位取反運算符,用于對一個整數(shù)的二進制碼的所有位數(shù)進行取反操作,即將所有的0變?yōu)?,將所有的1變成0。|是按位或運算符,用于對兩個整數(shù)的二進制碼按位進行比較。如果同一位置的兩個比特值有一個為1,則結(jié)果位就為1,否則為0。&是按位與運算符,用于對兩個整數(shù)的二進制碼按位進行比較。如果同一位置的兩個比特值都為1,則結(jié)果位就為1,否則為0。2.2.5運算符的優(yōu)先級當一個表達式包含多個運算符的時候,表達式的求值順序由3個因素決定,分別是運算符的優(yōu)先級、運算符的結(jié)合性和是否控制求值順序(指Java中的3個運算符:邏輯與運算符&&、邏輯或運算符||和條件運算符?:)。除了這3個特殊的運算符,Java中求值順序的基本原則是:兩個相鄰運算符的計算順序由它們的優(yōu)先級決定;如果它們的優(yōu)先級相同,那么結(jié)合性就決定了它們的求值順序;如果使用了圓括號“()”,那么它具有最高優(yōu)先級。注意:“()(小括號)”“.(點號)”“[](中括號)”“{}(大括號)”“,(英文逗號)”“,(中文逗號)”在Java中都是分隔符,不是運算符,其中“()”可以改變表達式的求值順序。若有多個括號,則先根據(jù)自左向右的順序處理括號內(nèi)的表達式,然后根據(jù)結(jié)合性進行求值。2.2.5運算符的優(yōu)先級表2-6Java中運算符的優(yōu)先級和結(jié)合性運算符優(yōu)先級結(jié)合性++、--、!、~1從右向左*、/、%2從左向右+、-3從左向右>>>、>>、<<4從左向右>、>=、<、<=5從左向右==、!=6從左向右&7從左向右^8從左向右|9從左向右&&10從左向右||11從左向右?:12從右向左=、+=、-=、*=、/=、%=、>>=、>>>=、<<=、&=、^=、|=13從右向左2.2.5運算符的優(yōu)先級在程序中有一個很容易混淆的表達式是:a+++b;因為這個式子可以理解成:(a++)+b;或者:a+(++b);計算機的特性使其拒絕歧義,所以Java專門規(guī)定了它的處理方法。Java在從左到右掃描運算符時,會盡可能多地掃描字符,以匹配成一個合法的運算符,因此“a+++b”會被處理成“(a++)+b”。對于任何一個雙目運算,Java明確規(guī)定:左側(cè)操作數(shù)先求值,右側(cè)操作數(shù)后求值。任務(wù)2-10雙目運算的求值順序publicclassInTurnDemo{publicstaticvoidmain(String[]args){inta=10;//相當于a=a+(a=3),所以a=10+3a+=a=3;System.out.println("a="+a);intb=2;//相當于b=3*3b=(b=3)*b;System.out.println("b="+b);}}文件InTurnDemo.java運行結(jié)果如圖2-10所示。目錄導航2.1基本數(shù)據(jù)類型2.3項目實戰(zhàn)2.2運算符2.4單元小結(jié)項目2-1設(shè)計IP地址轉(zhuǎn)換程序在程序開發(fā)中可能會碰到要求將IP地址轉(zhuǎn)換成long類型的整數(shù),或者將long類型的整數(shù)轉(zhuǎn)換成IP地址的情況。本項目將通過一個例子演示如何通過位運算符進行數(shù)據(jù)的轉(zhuǎn)換。step01

首先將IP地址轉(zhuǎn)換成long類型的整數(shù),轉(zhuǎn)換原理是對各個位置進行加權(quán)求和。一般情況下,IP地址是使用“.”分隔的字符串,我們可以通過String類的split()方法將字符串按指定字符分隔成字符串數(shù)組(第4單元將會詳細介紹字符串以及字符串的內(nèi)置方法)。通過long類的parseLong()方法可以將字符串轉(zhuǎn)。換成long類型,然后對各個部分進行加權(quán)求和。step02

其次將整數(shù)轉(zhuǎn)換成IP地址。將數(shù)字轉(zhuǎn)換成IP地址稍微復雜,需要使用到運算符&和>>>,其中&運算符是與的意思。例如,1&1的結(jié)果是1,其他情況下結(jié)果都是0。這樣是為了將long類型數(shù)據(jù)的高位過濾,獲取其低位的值。step03

最后在main()方法中調(diào)用ip2Long()和long2IP方法即可。項目2-1設(shè)計IP地址轉(zhuǎn)換程序publicclassIPConvert{publicstaticlongip2Long(StringstrIp){//首先對IP地址進行分隔,使用字符串的split()方法將其分隔成一個字符串數(shù)組String[]ip=strIp.split("\\.");//左移IP地址的各個部分進行加權(quán)求和,得出一個long類型的值return(Long.parseLong(ip[0])<<24)+(Long.parseLong(ip[1])<<16)+(Long.parseLong(ip[2])<<8)+Long.parseLong(ip[3]);}publicstaticStringlong2IP(longlongIp){//使用StringBu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論