Java全部課件.pptx_第1頁(yè)
Java全部課件.pptx_第2頁(yè)
Java全部課件.pptx_第3頁(yè)
Java全部課件.pptx_第4頁(yè)
Java全部課件.pptx_第5頁(yè)
已閱讀5頁(yè),還剩348頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、core java的課程體系,Java語(yǔ)法基礎(chǔ) Java面向?qū)ο蟮木幊?Java的高級(jí)編程接口:4個(gè)專(zhuān)題 Java圖形GUI編程 多線(xiàn)程編程 I/O編程 網(wǎng)絡(luò)編程,Java語(yǔ)言的知識(shí)體系結(jié)構(gòu)圖,java語(yǔ)法基礎(chǔ)Day01-Day03,Day01,了解java的產(chǎn)生與發(fā)展 理解java語(yǔ)言的特性 理解java虛擬機(jī)jvm的特性和功能 理解字節(jié)碼和垃圾收集的概念 列舉出在java平臺(tái)上實(shí)現(xiàn)代碼安全的方法 知道在java中定義類(lèi),包,applets和applications 掌握編碼,編譯,運(yùn)行java應(yīng)用程序的步驟 安裝,搭建java開(kāi)發(fā)運(yùn)行環(huán)境 第一個(gè)java程序 帶包的java程序 JVM搜索

2、類(lèi)的順序和類(lèi)加載 CLASSPATH的應(yīng)用 常用的java命令,Java的產(chǎn)生與發(fā)展,Java的產(chǎn)生 Sun公司的Green項(xiàng)目 基于c+開(kāi)發(fā)的Oak語(yǔ)言 Mosaic和Netscape到JavaHot瀏覽器 Internet的蓬勃發(fā)展推動(dòng)了java的發(fā)展(Applet) Java(爪哇) 名字的由來(lái) Java的發(fā)展 Java的現(xiàn)狀 純面向?qū)ο蟮恼Z(yǔ)言 平臺(tái)無(wú)關(guān)性,一次編寫(xiě),到處運(yùn)行 適合于基于Internet應(yīng)用程序開(kāi)發(fā) Java的地位確立 IT產(chǎn)業(yè)很多大公司購(gòu)買(mǎi)了java的許可證 眾多軟件開(kāi)發(fā)商已支持java軟件產(chǎn)品 Intranet是企業(yè)信息系統(tǒng)最佳的解決方案,java發(fā)揮了不可替代的作用

3、 Java的發(fā)展與其分支 95.5.23 Oak改名為java 98.12. java1.2,后來(lái)改名為java2 陸續(xù)出現(xiàn)了java1.3,java1.4 2004.12 java1.5版本推出 命名為java5.0 后來(lái)陸續(xù)出現(xiàn)java6.0,java7.0,Java的產(chǎn)生與發(fā)展,Java的發(fā)展與其分支 java在今天已形成了龐大的體系,經(jīng)過(guò)十年發(fā)展,已有了3個(gè)平臺(tái)標(biāo)準(zhǔn) 三大技術(shù)平臺(tái)都提供了相應(yīng)的開(kāi)發(fā)工具包(SDK:SoftWare Development Kits) java SE -標(biāo)準(zhǔn)版應(yīng)用平臺(tái) java EE-企業(yè)級(jí)應(yīng)用平臺(tái) java ME微型版應(yīng)用平臺(tái):應(yīng)用在存儲(chǔ),運(yùn)算很小的受限

4、的平臺(tái),Java語(yǔ)言的特性,什么是java? 程序設(shè)計(jì)語(yǔ)言;開(kāi)發(fā)環(huán)境;應(yīng)用環(huán)境;部署環(huán)境 Java的特性 提供更簡(jiǎn)單的方式寫(xiě)程序 無(wú)指針,無(wú)需做內(nèi)存管理 提供龐大的類(lèi)庫(kù),純粹面向?qū)ο笤O(shè)計(jì) 支持靜態(tài)和動(dòng)態(tài)的代碼繼承和重用 提供一個(gè)可解釋執(zhí)行的環(huán)境 支持任何開(kāi)發(fā)平臺(tái) 只寫(xiě)一次,到處使用 支持多線(xiàn)程 支持動(dòng)態(tài)升級(jí) 以上特性如何實(shí)現(xiàn) Java虛擬機(jī):JVM 垃圾收集:Garbage Collection 代碼安全:Code Security 字節(jié)碼文件:Verifying,Java語(yǔ)言的特性,JVM與跨平臺(tái)性: 一次編寫(xiě),到處運(yùn)行:不同操作系統(tǒng),不同數(shù)據(jù)庫(kù),不同的服務(wù)器 數(shù)據(jù)類(lèi)型也可以實(shí)現(xiàn)跨平臺(tái) Ja

5、va虛擬機(jī)的作用 程序的開(kāi)發(fā)及運(yùn)行方式 Java的工作方式:先編譯后解釋,Java是先編譯后解釋執(zhí)行,CPU,Java語(yǔ)言的特性,Java源文件先通過(guò)編譯生成一個(gè)字節(jié)碼文件bytecode 字節(jié)碼不與當(dāng)前OS相關(guān),結(jié)構(gòu)中立的,是二進(jìn)制文件。任何平臺(tái)編譯生成的字節(jié)碼都是一樣的。 字節(jié)碼文件不能直接執(zhí)行,必須需要JVM的支撐才能運(yùn)行 JVM是sun開(kāi)發(fā)的,字節(jié)碼的結(jié)構(gòu)也是sun定義的,他們之間有很好的接口 JVM存在的意義實(shí)際上就是屏蔽掉底層平臺(tái)的差異,為上層結(jié)構(gòu)中立的字節(jié)碼統(tǒng)一運(yùn)行的環(huán)境,而JVM會(huì)將字節(jié)碼轉(zhuǎn)化成相應(yīng)的底層平臺(tái)的機(jī)器碼執(zhí)行 java解釋器功能是用JVM來(lái)實(shí)現(xiàn)的,java的解釋器是

6、在jvm中運(yùn)行的 JVM的作用: 對(duì)下是屏蔽掉了底層平臺(tái)的差異,對(duì)于上層的字節(jié)碼而言不需要關(guān)心它運(yùn)行在什么平臺(tái)上,由JVM去把底層平臺(tái)的差異屏蔽掉 對(duì)上為結(jié)構(gòu)中立的字節(jié)碼提供了統(tǒng)一的運(yùn)行環(huán)境,實(shí)現(xiàn)了字節(jié)碼的跨平臺(tái),JVM,Bytecode,Java語(yǔ)言的特性,Java的垃圾收集器 Java的垃圾收集解除了程序員分配存儲(chǔ)器的責(zé)任,它提供了一種系統(tǒng)級(jí)線(xiàn)程以便跟蹤每一存儲(chǔ)器的分配情況。在Java虛擬機(jī)的空閑周期,垃圾收集線(xiàn)程檢查并釋放那些可被釋放的存儲(chǔ)器。 內(nèi)存泄漏 垃圾收集線(xiàn)程 垃圾收集調(diào)用的方法:java.lang.System.gc()/java.lang.Runtime.gc() Java代

7、碼的安全性,Java語(yǔ)言的特性,字節(jié)碼的作用 字節(jié)碼的結(jié)構(gòu)是JVM特定指定的 字節(jié)碼不會(huì)破壞,篡改系統(tǒng) 禁止運(yùn)行時(shí)堆棧溢出 防止蠕蟲(chóng)病毒襲擊 參數(shù)類(lèi)型正確 類(lèi)型轉(zhuǎn)換正確 安裝,搭建java開(kāi)發(fā)運(yùn)行環(huán)境 官方網(wǎng)站下載JDK 官方網(wǎng)站: 不同系統(tǒng)平臺(tái),JDK不一樣,選擇適合于自己平臺(tái)的JDK JDK的安裝 Windows直接安裝運(yùn)行jdk的可執(zhí)行exe文件 Linux系統(tǒng)將JDK文件壓縮包解壓后放入opt目錄,配置初始化文件的環(huán)境變量 Windows下JDK安裝后,會(huì)有2個(gè)文件夾生成 JDK:java開(kāi)發(fā)工具軟件包,它包含了java的編譯,調(diào)試,運(yùn)行整個(gè)環(huán)境和包含了整個(gè)類(lèi)庫(kù)的軟件包 JRE:jav

8、a運(yùn)行環(huán)境 JDK,JRE和JVM,安裝,搭建java開(kāi)發(fā)運(yùn)行環(huán)境,JDK,JRE和JVM jre是jdk的子集,在一套完整的jdk中就包含了jre jre只負(fù)責(zé)運(yùn)行一個(gè)編譯好的java程序(字節(jié)碼文件bytecode) jdk它可以去編譯,調(diào)試,運(yùn)行整個(gè)操作過(guò)程都支持 在jre內(nèi)部有一個(gè)軟件組件jvm就是java虛擬機(jī) JDK的結(jié)構(gòu)簡(jiǎn)介 bin目錄:java開(kāi)發(fā)調(diào)試的命令, exe文件,連接庫(kù)文件,編譯器等等 編譯一個(gè)java文件:javac;運(yùn)行一個(gè)字節(jié)碼文件:java jre目錄:jdk中自帶的jre src壓縮文件:放置的是jdk類(lèi)庫(kù)的源碼文件,按包結(jié)構(gòu)組織的 demo::java代碼

9、的演示實(shí)例文件 include:用于編譯本地方法的文件 docs:html格式的類(lèi)庫(kù)文檔 lib:類(lèi)庫(kù)文件 Java程序開(kāi)發(fā)環(huán)境配置 在windows平臺(tái):autoexec.bat文件;使用對(duì)話(huà)框(右擊我的電腦屬性高級(jí)環(huán)境變量系統(tǒng)或用戶(hù)的環(huán)境變量)操作 Unix平臺(tái)需要分shell:csh $HOME/.cshrc bsh/ksh $HOME/.profile 環(huán)境變量: JAVA_HOME:保存jdk的安裝目錄 windows : set JAVA_HOME=c:programfilesjavajdk1.5.0_09,Java程序開(kāi)發(fā)環(huán)境配置,csh: setenv JAVA_HOME /o

10、pt/jdk1.5.0_09 bsh/ksh: JAVA_HOME=/opt/jdk1.5.0_09 CLASSPATH:系統(tǒng)搜索字節(jié)碼(類(lèi)文件.class)文件的搜索路徑。設(shè)置系統(tǒng)在查找字節(jié)碼文件時(shí),它的搜索路徑。 windows: set CLASSPATH=.; %JAVA_HOME%jrelibrt.jar; csh: setenv CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar bsh/ksh: CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar PATH:設(shè)置命令的搜索路徑,在執(zhí)行命令時(shí),操作系統(tǒng)就會(huì)在PATH設(shè)置的路徑去查找命令

11、的可執(zhí)行文件。 設(shè)置path不能覆蓋原有的,可以使用特殊符號(hào) windows:%PATH%; Linux:$PATH: windows: set PATH=%PATH%;%JAVA_HOME%bin; csh: setenv PATH $PATH:$JAVA_HOME/bin bsh/ksh: PATH=$PATH:$JAVA_HOME/bin Linux系統(tǒng)使用bsh/ksh時(shí)則需要export JAVA_HOME CLASSPATH PATH 將環(huán)境變量設(shè)置為全局的 編輯,編譯,調(diào)試,運(yùn)行一個(gè)java程序 寫(xiě)第一個(gè)java程序:HelloWorld.java public class He

12、lloWorld public static void main(String args) String str=“Hello World!”;,編輯,編譯,調(diào)試,運(yùn)行一個(gè)java程序,System.out.println(“The String is::”+str); System.out.println(MyAge is: +age); 通過(guò)這個(gè)程序掌握以下概念 一個(gè)java源文件中可以定義多個(gè)類(lèi),但最多只能有一個(gè)類(lèi)用public來(lái)修飾,而且該public修飾的類(lèi)名要與java源文件名一樣。 一個(gè)java應(yīng)用程序應(yīng)該包含一個(gè)主方法,而且主方法的簽名是固定不變的。主方法定義在哪個(gè)類(lèi)中并不做固

13、定安排。 定義的所有的代碼中,只看到類(lèi)的定義。在類(lèi)中去封裝其他變量或方法。 編譯HelloWorld.java程序 開(kāi)始運(yùn)行cmd進(jìn)入dos,修改當(dāng)前目錄為d:javacodeday01 使用javac HelloWorld.java命令編譯 編譯成功后,到day01程序目錄下查看,發(fā)現(xiàn)有2個(gè).class文件得出有效結(jié)論 編譯報(bào)錯(cuò)則根據(jù)錯(cuò)誤提示找出錯(cuò)誤位置然后修改程序重新編譯 舉例來(lái)演示學(xué)習(xí)錯(cuò)誤提示 假如將String的S寫(xiě)為小寫(xiě) :string str=“HelloWorld!; 假如將out寫(xiě)為out:System.otu.println(“The String is: +str); 再次

14、編譯一下,查看錯(cuò)誤提示,必須要會(huì)讀錯(cuò)誤提示 分析錯(cuò)誤提示,排除錯(cuò)誤是基本的能力,包的概念,含義和使用,運(yùn)行HelloWorld程序: 包含有主方法的程序才可以運(yùn)行,沒(méi)有包含主方法的類(lèi)是不能運(yùn)行的 開(kāi)始運(yùn)行cmd進(jìn)入dos;使用cd d:javacodeday01進(jìn)入程序目錄 使用 java HelloWorld(包含有主方法的類(lèi)的類(lèi)名)來(lái)運(yùn)行 使用java Student就會(huì)報(bào)告錯(cuò)誤提示沒(méi)有主方法 要求學(xué)員做HelloWorld程序并操作演示幾種錯(cuò)誤情況和調(diào)錯(cuò) 帶包的java程序 包的聲明:package day01 package是關(guān)鍵字 day01是包名 包的概念和含義 包名的命名符合標(biāo)識(shí)

15、符命名規(guī)則即可 企業(yè)項(xiàng)目開(kāi)發(fā)中,包的命名也有企業(yè)規(guī)范的如:com.shunshi.abs.model .來(lái)隔開(kāi)每一部分,每一部分都是包結(jié)構(gòu) com.shunshi這個(gè)是軟件公司網(wǎng)址的url,可以區(qū)分確認(rèn)哪個(gè)公司開(kāi)發(fā)的軟件產(chǎn)品 com.sun/com.ibm,這樣包名不會(huì)產(chǎn)生沖突 abs是項(xiàng)目名,model是項(xiàng)目中的模塊/子模塊名 寫(xiě)MySecondJava.java程序 使用包結(jié)構(gòu) package com.shunshi.corejava.day01 使用包后,如何編譯 寫(xiě)MySecondJava.java,使用包聲明: package corejava.day01; 編譯程序:javac d

16、 . MySecondJava.java,JVM搜索類(lèi)的順序與類(lèi)加載,-d選項(xiàng)的作用: 把編譯好的字節(jié)碼放在你指定的目錄下,所以需要指定目錄 如果源文件聲明了包結(jié)構(gòu),那么在給定的目錄位置下會(huì)按照包結(jié)構(gòu)自動(dòng)創(chuàng)建目錄結(jié)構(gòu),編譯好的字節(jié)碼文件是放在最終的子目錄下 為什么使用包? 企業(yè)項(xiàng)目開(kāi)發(fā)中方便管理不同的類(lèi) 用包來(lái)分門(mén)別類(lèi)地組織不同模塊功能的類(lèi) 使用包的好處:舉例:航班機(jī)票預(yù)定項(xiàng)目 JVM搜索類(lèi)的順序與類(lèi)加載 使用包結(jié)構(gòu)編譯后,如何運(yùn)行? 使用java,注意:java corejava.day01.MySecondJava 如何運(yùn)行?類(lèi)加載 演示錯(cuò)誤情況的發(fā)生 直接使用 java MySecond

17、Java 則報(bào)告找不到這個(gè)類(lèi)的定義的錯(cuò)誤提示 為什么找不到?從系統(tǒng)如何去找類(lèi)來(lái)說(shuō),與jvm在查找類(lèi)時(shí)的搜索順序有關(guān)系 直接進(jìn)入包結(jié)構(gòu)目錄cd corejavaday01,使用java MySecondJava運(yùn)行,則報(bào)告找不到類(lèi)的定義同時(shí)給出錯(cuò)誤原因(找到的類(lèi)與要運(yùn)行的類(lèi)不一致),Java 常用命令,為什么不一致呢?找到的是帶包的,運(yùn)行的是不帶包的 CLASSPATH的應(yīng)用 深刻理解java技術(shù)體系 如何使用第三方的java技術(shù) 常用命令 javac 選項(xiàng) 源文件名 編譯java 源文件 -d 查看javac命令到底有哪些選項(xiàng),直接使用javac/javac -help命令回車(chē) java 選項(xiàng)

18、 類(lèi)名 參數(shù) 運(yùn)行java程序 jdb 選項(xiàng) 類(lèi)名 參數(shù) 進(jìn)行debug調(diào)試的命令 javadoc 選項(xiàng) 包名 源文件名 生成jdk的api形式的程序文檔 在java源文件中允許使用文檔形式的注釋 單行注釋 /注釋內(nèi)容 多行注釋 /*注釋內(nèi)容*/ 多行注釋不能嵌套,但可以嵌套單行注釋 文檔注釋 /*注釋內(nèi)容*/ 出現(xiàn)在類(lèi)的定義,方法的定義,屬性的定義之前,用來(lái)說(shuō)明類(lèi)的含義,方法的含義,屬性的含義 使用javadoc命令給MySecondJava.java生成文檔注釋 在MySecondJava.java中,類(lèi)前,主方法前寫(xiě)一些文檔注釋 使用javadoc命令將文件MySecondJava.ja

19、va中的文檔注釋抽取出來(lái)生成程序文檔。javadoc d .doc MySecondJava.java,Java 常用命令,分析程序文檔結(jié)構(gòu)和理解jdk的API文檔 jar ctxuvfm0Mi jar-file manifest-file -C directory files 創(chuàng)建/展開(kāi)/更新一個(gè)jar文件 jar文件:sun公司定義的一種文件格式,與zip格式相同,可以用普通的解壓縮工具解開(kāi)。jar文件壓縮的一般是java的字節(jié)碼文件,按照包結(jié)構(gòu)組織好的.class文件。 創(chuàng)建jar文件: 將d:corejavaday01中的1個(gè).class文件打包成一個(gè)jar文件 jar -cvf fi

20、rst.jar .corejava 不與源文件放在一起 c 代表創(chuàng)建jar文件 v 是可視化即可以看見(jiàn)創(chuàng)建過(guò)程和創(chuàng)建詳細(xì)清單 f 代表可在后面指定jar文件名 解壓生成后jar文件,有corejava和META-INF2個(gè)文件夾 jar文件有什么作用? 將開(kāi)發(fā)的類(lèi)打包jar文件給客戶(hù),客戶(hù)得到后只需要設(shè)置classpath后就可以用了 開(kāi)發(fā)一個(gè)中間件,將中間件的程序打包成jar 打包day01.jar(corejavaday01中的.class)給第三個(gè)程序MyThirdJava使用。 寫(xiě)MyThirdJava.java程序,Jar文件和import的使用,將day01.jar路徑設(shè)置給CLA

21、SSPATH 將day01包下的MySecondJava.class移走 將javacodeday01下的MySecondJava.java移走 編譯運(yùn)行MyThirdJava來(lái)演示自定義jar文件的使用 思考問(wèn)題 找不到MySecondJava,沒(méi)有給包結(jié)構(gòu)名 修改為corejava.day01.MySecondJava msj=new corejava.day01.MySecondJava(); String的使用不需要rt.jar路徑給CLASSPATH,也不需要使用包結(jié)構(gòu)名+類(lèi)名 因?yàn)樗莑ang包下的類(lèi) 若在MyThirdJava.java中自定義一個(gè)String class Str

22、ing則會(huì)報(bào)錯(cuò) 與JVM搜索類(lèi)的順序有關(guān),先搜索當(dāng)前包下的String,它無(wú)構(gòu)造方法 簡(jiǎn)便引入某包下的類(lèi) 直接使用包名+類(lèi)名的形式,程序太煩瑣了 在程序的開(kāi)頭使用import 包結(jié)構(gòu)名.類(lèi)名來(lái)引入使用的類(lèi) 要引入某包下的所有類(lèi)則 import 包結(jié)構(gòu)名.*;,JDK的常用包,java.lang:JAVA語(yǔ)言包,核心的類(lèi)和接口,無(wú)需導(dǎo)入可直接使用。如String、Math、Integer和Thread。 java.awt/javax.swing/java.awt.event:做java的圖形開(kāi)發(fā)使用的包,包含有圖形組件,用來(lái)構(gòu)建和管理應(yīng)用程序的圖形用戶(hù)界面。 java.applet:用來(lái)開(kāi)發(fā)ja

23、va小程序的類(lèi)和接口,包含了可執(zhí)行applet特殊行為的類(lèi)。 java.io:包含了java所有做輸入輸出的類(lèi)和接口,包含處理I/O文件的類(lèi) :用來(lái)做網(wǎng)絡(luò)開(kāi)發(fā)的類(lèi)和接口 java.util:java工具包,包含java開(kāi)發(fā)常用的工具類(lèi),java的時(shí)間日期,java的數(shù)據(jù)結(jié)構(gòu),隨機(jī)數(shù)發(fā)生等。,知道java的特殊符號(hào) 熟悉java的標(biāo)識(shí)符 掌握java的關(guān)鍵字的使用 理解java各數(shù)據(jù)類(lèi)型的存儲(chǔ)和使用 原始數(shù)據(jù)類(lèi)型 基本數(shù)據(jù)類(lèi)型的轉(zhuǎn)換 定義類(lèi),對(duì)象,成員變量和引用變量 類(lèi)的聲明 類(lèi)變量與類(lèi)成員變量 創(chuàng)建類(lèi)的對(duì)象實(shí)例和使用默認(rèn)值 描述引用變量與類(lèi)對(duì)象的關(guān)系 掌握表達(dá)式和運(yùn)算符的使用,Day02,Ja

24、va中的特殊符號(hào),注釋 單行注釋?zhuān)? 多行注釋?zhuān)?*.*/ 這兩種注釋只能通過(guò)打開(kāi)源文件來(lái)查看,寫(xiě)程序一定要寫(xiě)注釋。注釋與程序應(yīng)是2:1 多行注釋?zhuān)?*/ 這個(gè)注釋可以不打開(kāi)源文件來(lái)查看,java中有一個(gè)javadoc工具,它的作用是將源文件中的/*.*/注釋單獨(dú)抽出來(lái)放在另一個(gè)文件中。 例如: javadoc d . Hello.java,執(zhí)行后,會(huì)在當(dāng)前目錄下生成一個(gè)doc目錄,里面文件就可查看注釋了。 其他符號(hào) ; 一個(gè)語(yǔ)句的結(jié)束 一個(gè)語(yǔ)句塊 空白字符 空格,tab,回車(chē),換行等,Java標(biāo)識(shí)符,標(biāo)識(shí)符:程序中的組件名字,包括類(lèi)名,方法的參數(shù)名,變量名,方法名,包名等 定義標(biāo)識(shí)符的規(guī)則:

25、 以_ ,$,字母開(kāi)頭; 只含有_,$,字母,數(shù)字; 沒(méi)有長(zhǎng)度限制,不能有空格; 不能使用java的關(guān)鍵字或保留字 大小寫(xiě)敏感 例如:_abc , $ABC ,2A ,A# ,For,順時(shí) Java開(kāi)發(fā)的命名習(xí)慣 所有的命名要望文生義,這樣才具有良好的可讀性 Total,Sum,ShunshiStudent, 類(lèi)名,接口名:每個(gè)單詞的首字母大寫(xiě),其他字母小寫(xiě) 如類(lèi)MyFirstJava,Player,Teacher 屬性,方法,,局部變量名:第一個(gè)單詞全小寫(xiě),從第二個(gè)單詞開(kāi)始以后每個(gè)單詞首字母大寫(xiě),其他字母小寫(xiě) 如方法 getName() setDoctorBirthday() 常量:每個(gè)單詞

26、所有字母全部大寫(xiě),單詞之間用_來(lái)連接 java中使用final修飾 final int MARK_GREED=22; 包名:所有字母全部小寫(xiě) 如package com.shunshi.corejava.day01,Java關(guān)鍵字,關(guān)鍵字:對(duì)Java技術(shù)編譯器有特殊的含義,可以被編譯器識(shí)別執(zhí)行 abstract do implements private throw boolean double import protected throws break else instanceof public transient byte extends int return true case fals

27、e interface short try catch final long static void char finally native super volatile class float new switch while continue for null synchronized default if package this Java關(guān)鍵字特點(diǎn) java關(guān)鍵字與c+很多相似,只要與c+一樣的,它的含義都與c+中的相同 有些關(guān)鍵字c+有,而java沒(méi)有 sizeof求出某種類(lèi)型的變量的占內(nèi)存的大小 為什么c+有sizeof? 因?yàn)椴煌瑱C(jī)器內(nèi)存占用空間大小不一樣 16,32,64位,取

28、決于操作系統(tǒng)平臺(tái)。 為什么Java不需要? 因?yàn)橛蠮VM。 java中的關(guān)鍵字都是小寫(xiě)的 true、false和null為小寫(xiě),而不是象在C+語(yǔ)言中那樣為大寫(xiě)。嚴(yán)格地講,它們不是關(guān)鍵字。,Java關(guān)鍵字,有些關(guān)鍵字java沒(méi)有取消保留下來(lái),但它自己也不用它也不給程序員用 goto和const不是Java編程語(yǔ)言中使用的關(guān)鍵字,而是保留字。 什么是保留字? 為什么保留下來(lái)但不能用? 在java中final替代const goto在c+代表無(wú)條件跳轉(zhuǎn),功能很好,但不能經(jīng)常用,要謹(jǐn)慎。 很多建議去掉goto關(guān)鍵字,沒(méi)有理解goto真正含義。 為什么c+到現(xiàn)在都沒(méi)有刪除掉goto?它有一個(gè)特殊使命 J

29、ava中使用break代替goto 跳出一層循環(huán) :break 跳出多層循環(huán):break out out是一個(gè)標(biāo)號(hào),可以跳到out標(biāo)識(shí)處 break避免濫用goto,把goto功能削弱了,只能跳到外層循環(huán) java中加入新的關(guān)鍵字enum assert enum:枚舉 assert:斷言,Java的原始數(shù)據(jù)類(lèi)型,boolean true/false byte 8位整型 1個(gè)字節(jié) short 16位整型 2個(gè)字節(jié) int 32位整型 4個(gè)字節(jié) long 64位整型 8個(gè)字節(jié) char 16位 unicode 字符 2個(gè)字節(jié) double 64位浮點(diǎn)數(shù)字型 8個(gè)字節(jié) float 32位浮點(diǎn)數(shù)字型

30、4個(gè)字節(jié),boolean類(lèi)型,Java中定義boolean類(lèi)型 boolean b=true; Java中的boolean類(lèi)型的取值只能是true,false Java中的boolean類(lèi)型不能與int通用,而在c+中可以 C+中,0代表false,非0代表true boolean與int通用好還是不好呢?不好 舉例說(shuō)明 c+中的boolean與int通用 int a=1; if(0a2) coutaendl;,Integer 數(shù)據(jù)類(lèi)型byte,short,int,long,Java中的4種整型類(lèi)型,Java的不同整型占用內(nèi)存空間的大小不一樣 Java中整型的存儲(chǔ)規(guī)則與c+一樣, 但java整

31、型沒(méi)有無(wú)符號(hào)和有符號(hào)的區(qū)分,這與c+不一樣。Java中所有整型都是有符號(hào)的,這樣就可以求出每個(gè)整型能表示的范圍。 以byte為例說(shuō)明 Byte是8位整型 1個(gè)字節(jié) 最多可表示28=256個(gè)數(shù) 從(-27)-128到127(27-1) 為什么是-128-127而不是-127-128呢?與整型數(shù)據(jù)在內(nèi)存的存儲(chǔ)規(guī)則有關(guān) 整型數(shù)據(jù)在內(nèi)存空間中的存儲(chǔ)方式 正整數(shù)(最高位為0)在內(nèi)存中是存儲(chǔ)原碼 負(fù)整數(shù)(最高位為1)在內(nèi)存中是存儲(chǔ)其補(bǔ)碼 補(bǔ)碼是不考慮符號(hào)情況下原碼取反后末位加1。以-5來(lái)分析補(bǔ)碼 分析一些特殊數(shù)字:8位全為1則是數(shù)字-1,8位全為0則是數(shù)字0 不考慮符號(hào)位最大的數(shù)是01111111表示數(shù)字

32、127,最小的數(shù)10000000表示數(shù)字-128,Integer 數(shù)據(jù)類(lèi)型在內(nèi)存的存儲(chǔ)方式,為什么用補(bǔ)碼存儲(chǔ)負(fù)數(shù)?方便二進(jìn)制計(jì)算,例如-128+127=-1 其他類(lèi)型的整型在內(nèi)存的存儲(chǔ)方式與byte相同,只是空間更大。其他類(lèi)型的整型表示數(shù)的范圍如前面 整型數(shù)據(jù)表示 long類(lèi)型使用 l或L來(lái)表示 int的不同進(jìn)制:十六進(jìn)制用0 x或H表示 8進(jìn)制用0或O表示 10進(jìn)制用D或10表示 默認(rèn)類(lèi)型為int 整型定義 short s1=10000; short s2=40000; 超出范圍 long l=40000L; Long la=1234567l; int ia=0 x55; /十六進(jìn)制 int

33、 ib=011;/8進(jìn)制 byte bb=0 x771;/超出范圍 寫(xiě)TestIntBool.java程序 byte a=1, b=2; byte c=a+b; int d=a+b; byte e=2;e=e+2; e+=2; int ia=0 x2aff; byte bb=(byte)ia; System.out.println(bb); boolean bl1=false; if(bl1=false) System.out.println(bl1); boolean bl2=true; if(bl2=1) System.out.println(bl2);,char類(lèi)型 char 字符型為1

34、6位, 2個(gè)字節(jié),與c+不一樣,采用的是unicode編碼,unicode編碼是統(tǒng)一編碼,可包含字母,數(shù)字,符號(hào),中文文字等 unicode碼是采用16進(jìn)制表示的 如u0061 2個(gè)字節(jié)的unicode編碼可以表示216個(gè)字符,字符使用單引號(hào)來(lái)表示 127個(gè)ASCII碼全可表示 英文字符,控制字符,數(shù)字,標(biāo)點(diǎn)符 表示其他語(yǔ)言的字符:中文,德語(yǔ),法語(yǔ),阿拉伯等 一個(gè)char類(lèi)型本質(zhì)上是一個(gè)整型 char與short都是16位的,他們的差別? 通過(guò)查詢(xún)unicode編碼集可以獲取一個(gè)整型值對(duì)應(yīng)的unicode字符 unicode編碼集包含了ASCII碼集的 在0-127內(nèi)unicode編碼值與AS

35、CII碼值一樣,表示的字符也一樣 常見(jiàn)的ASCII碼值 :A:65 a:97 0:48 通過(guò)unicode碼得到碼值可以將16進(jìn)制轉(zhuǎn)換為10進(jìn)制,char zhchar=中; char enchar=a; char enchar1=97;在java中,int 與char 是可以互相轉(zhuǎn)換的 char ucchar=u0061; char uchar1=u61;因?yàn)閡nicode是16進(jìn)制的,2個(gè)字節(jié)則需要16位,需要4個(gè)16進(jìn)制數(shù) 下面寫(xiě)一組char與int的定義,TestChar.java,char數(shù)據(jù)類(lèi)型,String類(lèi)型簡(jiǎn)介,Java中的轉(zhuǎn)義字符 : 單引號(hào) ” : “雙引號(hào) :順斜杠 n

36、:換行 t:tab制表符 b:退格 0:u0000 unicode碼值為0的空字符 String類(lèi)型 String類(lèi)型:字符串類(lèi)型,它不是java的8種基本類(lèi)型,是類(lèi)的類(lèi)型 String是java的一個(gè)類(lèi),這個(gè)類(lèi)的實(shí)例叫做String對(duì)象 Java中字符串用”雙引號(hào)來(lái)引用 Java中的字符串類(lèi)不是以0結(jié)尾 String類(lèi)是Java中使用最多的類(lèi),它有很多有用的方法,查看jdk的api文檔 獲得String類(lèi)的對(duì)象變量 String str1=“Hello”; String str2=new String(“ World!”); String可做什么操作 使用+號(hào)來(lái)連接字符串 String s1

37、=“12”; int ia=3; int ib=4; System.out.println(s1+ia+ib); System.out.println(ia+ib+s1); char charAt(int):返回參數(shù)int指示位置上的字符 System.out.println(str1.charAt(0); String concat(String):將當(dāng)前String與參數(shù)String連接起來(lái)返回新串 System.out.println(str1.concat(str2);,String類(lèi)型簡(jiǎn)介,boolean contains(charSequence s):判斷一個(gè)字符串中是否包含參數(shù)

38、的子串 String str3=“Hello World!”; System.out.println(str3.contains(str1); boolean equals(String):比較2個(gè)字符串內(nèi)容是否相等,不忽略大小寫(xiě) String s2=“Hello”; String s3=“Hello”; System.out.println(s2.equals(s3); boolean equalsIgnoreCase(String):比較2個(gè)字符串內(nèi)容是否相等,忽略大小寫(xiě) String s4=“heLLo”; System.out.println(s4.equals(s3); System

39、.out.println(s4.equalsIgnoreCase(s3); int indexOf(String/char):獲得參數(shù)字符/字符串在改字符串中的第一次出現(xiàn)的位置索引,假如找不到則返回-1 System.out.println(str3.indexOf(“Wor”); System.out.println(str3.indexOf(o); length():獲得字符串的長(zhǎng)度 System.out.println(str3.length(); 寫(xiě)TestString.java,演示上面String的功能,浮點(diǎn)型數(shù)據(jù)類(lèi)型,浮點(diǎn)數(shù)據(jù)類(lèi)型:種 float:?jiǎn)尉?,位個(gè)字節(jié)使用f或者F表示

40、 double:雙精度位個(gè)字節(jié)默認(rèn)類(lèi)型 使用d或者D表示 浮點(diǎn)數(shù)舉例 float fa=123.4f; float fb=123.4; 默認(rèn)是double double直接賦給float精度丟失 float fc=12.5E300F; float fd=(float)12.5E301; double da=123D; double db=123.456d; double dc=123.45e301; 浮點(diǎn)數(shù)據(jù)類(lèi)型的存儲(chǔ)方式 整型存儲(chǔ)方式是精確存儲(chǔ) 浮點(diǎn)存儲(chǔ)方式是近似存儲(chǔ):實(shí)數(shù)范圍太大了,實(shí)數(shù)太多了,無(wú)法在內(nèi)存中對(duì)應(yīng)每一個(gè)實(shí)數(shù)的狀態(tài) 浮點(diǎn)數(shù)的近似存儲(chǔ)在程序中的問(wèn)題:寫(xiě)TestFloat.java

41、 實(shí)型值分母可為0,double d=0.0/0.0; System.out.println(d);編譯正確 double a=2.0,b=1.91,c=0.09; if(a-b=c) System.out.println(“ok”);else System.out.pringln(“no ok”); 結(jié)果輸出”on ok”。實(shí)型數(shù)值直接比較相等不安全,不要直接比較相等,但可以比較大小。,浮點(diǎn)型數(shù)據(jù)類(lèi)型,假如一定想要2個(gè)實(shí)型數(shù)值比較是否相等,可以考慮比較2個(gè)實(shí)型數(shù)的差是否在一個(gè)非常小的范圍內(nèi) 想要輸出“ok”,則if(Math.abs(a-b-c)(1e-6) System.out.print

42、ln(“ok”); Math類(lèi) lang包下的類(lèi),它里面定義了很多方法來(lái)實(shí)現(xiàn)常用的數(shù)學(xué)運(yùn)算 Math類(lèi)中的方法都是靜態(tài)的 Math類(lèi)中的方法: abs():求絕對(duì)值 sqrt():求平方根 pow():求乘方 cos(),sin(),tan(),ctan():數(shù)學(xué)的三角函數(shù)運(yùn)算 random():獲得0-1之間的隨機(jī)數(shù) 在TestFloat.java中測(cè)試使用Math類(lèi)中的方法 Math.abs(-5) Math.sqrt(9) Math.pow(2,3) Math.random()*100:獲得0-100之間的隨機(jī)數(shù),數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換,數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換分為2種 自動(dòng)類(lèi)型轉(zhuǎn)換 a類(lèi)型轉(zhuǎn)換為

43、b類(lèi)型時(shí),a的取值范圍是b的取值范圍的完全子集 這就是自動(dòng)類(lèi)型轉(zhuǎn)換 在java的8種基本類(lèi)型中,除boolean以外,其他7種類(lèi)型都是可以相互轉(zhuǎn)換的。 7種原始類(lèi)型之間可自動(dòng)轉(zhuǎn)換結(jié)構(gòu)圖 byteshortintlongfloatdouble char 順著箭頭方向可自動(dòng)轉(zhuǎn)換;逆著箭頭方向則是強(qiáng)制轉(zhuǎn)換 強(qiáng)制類(lèi)型轉(zhuǎn)換:只要不能自動(dòng)轉(zhuǎn)換的,則只能是強(qiáng)制轉(zhuǎn)換 整型數(shù)據(jù)之間的強(qiáng)轉(zhuǎn):改變數(shù)據(jù)的符號(hào);改變數(shù)值 int a=0 x2aff; byte b=(byte)a; b為-1 強(qiáng)制轉(zhuǎn)換的原理:從最低位開(kāi)始取到目標(biāo)類(lèi)型長(zhǎng)度為止 整型之間的強(qiáng)轉(zhuǎn)是保留二進(jìn)制低位,去掉高位,需要考慮在內(nèi)存中如何存儲(chǔ) 實(shí)型強(qiáng)轉(zhuǎn)整

44、型是保留整數(shù),去掉小數(shù),不考慮實(shí)型在內(nèi)存中的如何存儲(chǔ) 寫(xiě)一個(gè)DataTypeTest.java程序演示數(shù)據(jù)類(lèi)型轉(zhuǎn)換,數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換,byte+byte會(huì)自動(dòng)提升為int byte a1=1,a2=2;byte a3=a1+a2;(精度丟失) +=不進(jìn)行類(lèi)型提升 byte c=3; c=c+3; c+=3;System.out.println(c); 默認(rèn)整型為int,int,long提升為float有精度丟失 float fa=37; System.out.println(fa); int ia=(int)fa; System.out.println(ia); long la=0 xfff

45、fffffffL;float fb=la;System.out.println(fb); long lb=(long)fb; System.out.println(lb); 整型之間的強(qiáng)轉(zhuǎn) int a=0 x2aff; byte b=(byte)a; System.out.println(b); float轉(zhuǎn)換為double會(huì)有精度丟失 float fe=1234.56f; double de=fe; System.out.println(de); float ff=(float)de; System.out.println(ff); 整型除法 System.out.println(5/2);

46、 System.out.println(float)5/2); char與int的轉(zhuǎn)換 char c1=A; int iic=c1;System.out.println(iic); char c2=99; System.out.println(c2);,Java中的特殊類(lèi)型對(duì)象,為什么會(huì)有對(duì)象? 早些時(shí)候的編程語(yǔ)言和初級(jí)程序員將每個(gè)變量看作相互無(wú)關(guān)的實(shí)體。例如,如果一個(gè)程序需處理某個(gè)日期,則要聲明三個(gè)單獨(dú)的整數(shù):int day, month, year; 盡管這種作法很容易理解,但它存在兩個(gè)重大缺陷 名稱(chēng)太多,會(huì)引起混亂 忽略了各個(gè)變量之間的聯(lián)系 例如:若程序需同時(shí)記錄幾個(gè)日期,則需要三個(gè)不同

47、的聲明,要記錄兩個(gè)生日, 則要使用 int myBirthDay, myBirthMonth, myBirthYear; int yourBirthDay, yourBirthMonth, yourBirthYear; 忽視了日、月和年之間的聯(lián)系并把每個(gè)變量都作為一個(gè)獨(dú)立的值,每個(gè)變量都是一個(gè)獨(dú)立單元(在本例中為date)的一部分并被相應(yīng)地處理 Java的對(duì)象類(lèi)型 為克服上述兩種缺陷,Java編程語(yǔ)言使用類(lèi)來(lái)表示這種新類(lèi)型 Java除了中基本類(lèi)型,還有一種類(lèi)類(lèi)型或者叫做對(duì)象類(lèi)型(或是一個(gè)類(lèi),或是一個(gè)接口) Java的類(lèi)類(lèi)型不是表達(dá)一個(gè)簡(jiǎn)單的數(shù)據(jù),而是表達(dá)一個(gè)較復(fù)雜的數(shù)據(jù)(復(fù)合數(shù)據(jù)),Java中

48、的特殊類(lèi)型對(duì)象,例如:描述一個(gè)學(xué)生,定義一個(gè)學(xué)生類(lèi),它包含學(xué)生的相關(guān)信息:姓名,性別,年齡,專(zhuān)業(yè) 創(chuàng)建一個(gè)學(xué)生類(lèi) class Student private String name; private boolean sex; private int age; private String major; public Student(String name,boolean sex,int age,String major) =name; this.sex=sex; this.age=age; this.major=major; public void setName(Strin

49、g name) this.year=year; public void setSex(boolean sex) this.sex=sex; ,Java中的特殊類(lèi)型對(duì)象,public void setAge(int age) this.age=age; public void setMajor(String major) this.major=major; public String getName() return name; public boolean getSex() return sex; public int getAge() return age; public String ge

50、tMajor() return major; Student就是一個(gè)新的類(lèi)型,就像int,float等一樣可以用來(lái)定義變量 例如:Student stu; 聲明一個(gè)Student的變量stu,則它里面的name,sex,age,major也都隱含聲明了,name,sex,age,major稱(chēng)為stu的成員變量。,Java中的特殊類(lèi)型對(duì)象,類(lèi)類(lèi)型對(duì)象類(lèi)型的數(shù)據(jù)的存儲(chǔ)方式與基本類(lèi)型數(shù)據(jù)存儲(chǔ)方式的差別 類(lèi)型創(chuàng)建一個(gè)Student對(duì)象: Student stu; stu=new Student(“LiDW,true,22,”computer”); 原始類(lèi)型的聲明 int x;x=7; float y=

51、9.9f; 把類(lèi)看作一個(gè)類(lèi)型的話(huà),它的使用其實(shí)和基本類(lèi)型int等一樣,只不過(guò)賦值是賦的一個(gè)復(fù)雜的復(fù)合類(lèi)型數(shù)據(jù),是new出的對(duì)象 存儲(chǔ)形式的差別 int x; x=7; 基本類(lèi)型聲明變量時(shí)就已經(jīng)創(chuàng)建了變量并分配空間,無(wú)論它是否已經(jīng)賦值,賦值只是將值放入已分配的空間 Student stu;對(duì)象類(lèi)型聲明Student stu;時(shí),在內(nèi)存空間也給stu分配了空間。 那分配了多少空間?Student中所有成員變量的空間大小和嗎? 不是取決于Student的大小,與Student的大小無(wú)關(guān) 那stu是什么?在java中把stu叫做引用,這個(gè)引用與c+中的引用完全不一樣 Java中的引用與c+的指針相似,

52、java中沒(méi)有指針,只有引用,它保存的也是一個(gè)地址值(內(nèi)存空間中的Student對(duì)象的地址) Java中的引用與c+的指針有差別 C+中指針可被程序員操作:int* p; p+,p-,*p等等,所以很危險(xiǎn),不安全 Java中不允許程序員對(duì)引用做操作,只能通過(guò)引用訪(fǎng)問(wèn)對(duì)象,但不能對(duì)引用進(jìn)行+,-等操作,所以java語(yǔ)言更安全。,Java中的特殊類(lèi)型對(duì)象,Java的引用需要多少個(gè)字節(jié)呢? 引用無(wú)論什么類(lèi)型都保存的是內(nèi)存中的地址值 地址值常見(jiàn)的是4個(gè)字節(jié),相對(duì)來(lái)講很固定的值 地址值的長(zhǎng)度嚴(yán)格來(lái)講也取決于不同的機(jī)器平臺(tái),由機(jī)器的尋址空間決定的。例如常用的是32位機(jī)器,所以4個(gè)字節(jié) 那么stu=new

53、Student(“LiWD”,true,22,”computer”)又干什么? 在內(nèi)存空間中又開(kāi)辟了一個(gè)區(qū)域?qū)iT(mén)用來(lái)保存該Student對(duì)象的數(shù)據(jù) 賦值語(yǔ)句將開(kāi)辟的對(duì)象空間的地址賦給stu,stu就指向這個(gè)對(duì)象 綜上所述,對(duì)象類(lèi)型的存儲(chǔ)方式即需要兩個(gè)空間:引用空間,對(duì)象空間 Java中的對(duì)象與引用的關(guān)系:可以打個(gè)比方來(lái)看看 對(duì)象可以看作是充滿(mǎn)氫氣的氣球,氣球中的空氣就是對(duì)象中的數(shù)據(jù),氣球我們無(wú)法直接拿到 任何時(shí)候我們拿到氣球都必須通過(guò)連接它的一根繩子,這跟繩子就可以看作是引用 深入理解對(duì)象與引用的關(guān)系 同一個(gè)氣球可不可以有多根繩子連著它?可以 就像雙胞胎牽同一個(gè)氣球 Student stu1=

54、new Student(“LiWD”,true,22,”computer”); Student stu2=stu1; stu2,stu1保存的是相同的地址值,stu2,stu1指向同一個(gè)對(duì)象 通過(guò)stu1修改了對(duì)象Student的數(shù)據(jù)值后,通過(guò)stu2訪(fǎng)問(wèn)的對(duì)象也就改了,Java中的特殊類(lèi)型對(duì)象,可不可能一根繩子同時(shí)栓著多個(gè)氣球?不能 如果一根繩子沒(méi)有連任何氣球,那么對(duì)于這個(gè)引用的訪(fǎng)問(wèn)有意義嗎?沒(méi)有意義 Student stu3=null;定義了一個(gè)空引用,沒(méi)有指向任何對(duì)象 假如使用stu3去訪(fǎng)問(wèn)name,age等會(huì)報(bào)告空指針異常 NullPointerException 如果某一個(gè)氣球沒(méi)有任

55、何繩子栓著,那它怎么辦?飛走了 這個(gè)氣球就無(wú)法訪(fǎng)問(wèn)了,變成垃圾。(垃圾占用空間,但我們無(wú)法訪(fǎng)問(wèn)) Student stu4=new Student(“LiWD”,true,22,”computer”); stu4=null; Java的垃圾回收機(jī)制 Java不讓程序員管理內(nèi)存 一個(gè)系統(tǒng)級(jí)線(xiàn)程專(zhuān)門(mén)掃描內(nèi)存,回收垃圾 垃圾回收是自動(dòng)進(jìn)行的,程序員可以建議但不能控制,程序員調(diào)用java.lang.System.gc()來(lái)告訴JVM做垃圾回收。程序員建議后,也不一定就回收。,Java中的特殊類(lèi)型對(duì)象,一般java.lang.System.gc()語(yǔ)句放在前面程序已釋放了很多垃圾后,則調(diào)用該語(yǔ)句執(zhí)行的可

56、能性大 Java的垃圾回收并不是馬上回收,jvm有一套算法來(lái)確定什么時(shí)候進(jìn)行垃圾回收 Java垃圾回收與c+內(nèi)存釋放的比較差異:打個(gè)比方 C+內(nèi)存釋放:相當(dāng)于學(xué)校食堂吃飯,吃飯后要將餐盤(pán)送到回收處,若你不做則大家會(huì)鄙視你。若大家都不做,則長(zhǎng)時(shí)間就沒(méi)有餐盤(pán)了。 Java垃圾回收:相當(dāng)于餐館中吃飯,吃完了,只結(jié)帳就走了。餐館自然有人來(lái)回收。無(wú)需自己把餐盤(pán)送到后臺(tái)。 理解對(duì)象 對(duì)象無(wú)處不在;對(duì)象彼此聯(lián)系;對(duì)象有屬性;對(duì)象有方法 There are students and a teacher in classroom,Java的運(yùn)算符,賦值運(yùn)算符:一個(gè)簡(jiǎn)單的賦值=和11個(gè)復(fù)合賦值 =,*=,/=,%

57、=,+=,-=,=(右移位),=, 比較運(yùn)算符 ,=,=,instanceof(比較類(lèi)型),= =,!= Java的數(shù)據(jù)類(lèi)型中哪些是可用比較運(yùn)算符來(lái)連接的 算術(shù)運(yùn)算符 +,-,*,/,% 5/2, (float)5/2,Java的運(yùn)算符,移位運(yùn)算符 所有的移位運(yùn)算只能針對(duì)整型數(shù)據(jù)操作 (右移,右移一位等于除2),(無(wú)符號(hào)右移) 有符號(hào)的右移:則移走后最左邊高位填補(bǔ)為原來(lái)的符號(hào)位 有符號(hào)的左移:則移出去的不管,移進(jìn)來(lái)用0來(lái)填補(bǔ) 無(wú)符號(hào)右移:則移出去的不管,移進(jìn)來(lái)都用0填補(bǔ) int a=68; a=a1); 10 System.out.println(in11); 10 int in2=-20;S

58、ystem.out.println(in21); -10 System.out.println(in21); 很大的數(shù) 位運(yùn)算符 ,Java的運(yùn)算符,想要a高8位不變,低8位全變0 a 操作數(shù)只能是布爾表達(dá)式 在java中, ,dd,Java中的變量,字符串常量:由雙引號(hào)“”括起來(lái)表示。.如“hello”,”33”,”tu0024” 空值常量:null表示空值。 常量的聲明: final 類(lèi)型 常量名; final 類(lèi)型 常量名=常量值; Java中的變量 什么是變量 系統(tǒng)為程序分配的內(nèi)存單元,存儲(chǔ)數(shù)據(jù)的,用一個(gè)標(biāo)識(shí)符來(lái)表示,其中的數(shù)據(jù)值是可以改變的,所以叫變量 變量名與變量值 定義變量的標(biāo)識(shí)

59、符叫變量名 內(nèi)存所裝載的數(shù)據(jù)值叫變量值 例如 int x=0,y; y=x+3;解釋其在內(nèi)存中的實(shí)現(xiàn)原理 變量的類(lèi)型 八種基本類(lèi)型:boolean,byte,short,int,long,char,float,double 對(duì)象類(lèi)型:類(lèi),接口,數(shù)組 不同類(lèi)型變量的取值范圍:變量的使用特別要注意的就是數(shù)據(jù)長(zhǎng)度。,Java的變量,Java的變量,基本類(lèi)型變量之間的數(shù)據(jù)轉(zhuǎn)換 自動(dòng)類(lèi)型轉(zhuǎn)換:也叫隱式類(lèi)型轉(zhuǎn)換 轉(zhuǎn)換的兩種類(lèi)型之間要兼容 目標(biāo)類(lèi)型的取值范圍要大于源類(lèi)型 如例:byte b=3; int t=b;/程序會(huì)將b的結(jié)果自動(dòng)轉(zhuǎn)換為int型 強(qiáng)制類(lèi)型轉(zhuǎn)換:顯示類(lèi)型 轉(zhuǎn)換當(dāng)兩種類(lèi)型不一致,不兼容 目標(biāo)類(lèi)型的取值范圍小于源類(lèi)型時(shí)則就需要進(jìn)行強(qiáng)制轉(zhuǎn)換 轉(zhuǎn)換方法:目標(biāo)類(lèi)型 變量=(目標(biāo)類(lèi)型)值 例:int x; byte b=(byte)x; 強(qiáng)制轉(zhuǎn)換是將x的值轉(zhuǎn)換后賦給b,而變量x本身的類(lèi)型不變 強(qiáng)制轉(zhuǎn)換會(huì)丟失數(shù)據(jù) 表達(dá)式的數(shù)據(jù)類(lèi)型自動(dòng)提升 表達(dá)式在計(jì)算值時(shí)也會(huì)自動(dòng)進(jìn)行數(shù)據(jù)類(lèi)型提升,Java的變量,變量的聲明:類(lèi)型 變量名; 類(lèi)型 變量名=變量值; 變量的作用域 代碼塊:在程序中一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論