




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java Java 簡介簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)語言和Java平臺(tái)的總稱。由James Gosling和同事們共同研發(fā),并在1995年正式推出。 Java分為三個(gè)體系: JavaSEJavaSE(J2SEJ2SE):Java2 Platform Standard Edition,java平臺(tái)標(biāo)準(zhǔn)版 JavaEE (J2EE) JavaEE (J2EE) :Java 2 Platform,Enterprise Edition,java平臺(tái)企業(yè)版 JavaME (J2ME) JavaME (J2ME) :Java 2 Pl
2、atform Micro Edition,java平臺(tái)微型版 2005年6月,JavaOne大會(huì)召開,SUN公司公開Java SE 6。此時(shí),Java的各種版本已經(jīng)更名以取消其中的數(shù)字2:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。 計(jì)算機(jī)語言計(jì)算機(jī)語言的種類非常的多,總的來說可以分成機(jī)器語言,匯編語言,高級(jí)語言三大類。 機(jī)器語言(第一代) 匯編語言(第二代) 高級(jí)語言(第三代):C、C+、COBOL、PASCAL、BASIC、FORTRAN、JAVA、Python、PHP、Javascript 按照執(zhí)行方式也可以劃分為:解釋和編譯類語言 (1)
3、解釋類:執(zhí)行方式類似于我們?nèi)粘I钪械摹巴暦g”,應(yīng)用程序源代碼一邊由相應(yīng)語言的解釋器“翻譯”成目標(biāo)代碼(機(jī)器語言),一邊執(zhí)行,因此效率比較低,而且不能生成可獨(dú)立執(zhí)行的可執(zhí)行文件,應(yīng)用程序不能脫離其解釋器,但這種方式比較靈活,可以動(dòng)態(tài)地調(diào)整、修改應(yīng)用程序。 (2)編譯類:編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機(jī)器語言),因此其目標(biāo)程序可以脫離其語言環(huán)境獨(dú)立執(zhí)行,使用比較方便、效率較高。JAVA發(fā)展歷程1995年5月23日,Java語言誕生1996年1月,第一個(gè)JDK-JDK1.0誕生1997年2月18日,JDK1.1發(fā)布1998年12月8日,JAVA2企業(yè)平臺(tái)J2E
4、E發(fā)布2002年2月26日,J2SE1.4發(fā)布,自此Java的計(jì)算能力有了大幅提升2004年9月30日18:00PM,J2SE1.5發(fā)布,成為Java語言發(fā)展史上的又一里程碑。為了表示該版本的重要性,J2SE1.5更名為Java SE 5.02005年6月,JavaOne大會(huì)召開,SUN公司公開Java SE 6。此時(shí),Java的各種版本已經(jīng)更名,以取消其中的數(shù)字2:J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為Java ME2006年12月,SUN公司發(fā)布JRE6.02009年04月20日,甲骨文74億美元收購Sun。取得java的版權(quán)。目前最新版本 JDK 1.
5、8JAVA語言的特點(diǎn) Java語言是簡單的:語法和C、C+很接近,易學(xué);Java丟棄了C+中很少使用的、很難理解的、令人迷惑的那些特性 Java語言是面向?qū)ο蟮模?Java語言是分布式的: Java語言是健壯的:強(qiáng)類型機(jī)制、異常處理、垃圾的自動(dòng)收集垃圾的自動(dòng)收集,廢棄了指針; Java語言是安全的: Java語言是體系結(jié)構(gòu)中立的: Java語言是可移植的:可以跨平臺(tái)運(yùn)行可以跨平臺(tái)運(yùn)行 Java語言是解釋型的: Java是高性能的: Java語言是多線程的: Java語言是動(dòng)態(tài)的:Java程序需要的類能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,能進(jìn)行運(yùn)行時(shí)刻的類型檢查JVM介紹 JVM是Java Virtual
6、 Machine(Java虛擬機(jī))的縮寫,JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。 Java語言的一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無關(guān)性。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。用戶USER字節(jié)碼程序JVM (Java 虛擬機(jī))操作系統(tǒng) 硬件編程環(huán)境nJDK JDK(Java Development Kit)稱為Java開發(fā)包或Java開發(fā)工具,是一個(gè)編寫Java的Applet小程序和應(yīng)用程序的程序開發(fā)環(huán)境。 JDK是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境(Java Runtime Envirnment),一些Java
7、工具和Java的核心類庫(Java API) JRE 可以把Java API類庫中的Java SE API子集和Java虛擬機(jī)這兩部分統(tǒng)稱為JRE(JAVA Runtime Environment),JRE是支持Java程序運(yùn)行的標(biāo)準(zhǔn)環(huán)境 。 JRE是個(gè)運(yùn)行環(huán)境,JDK是個(gè)開發(fā)環(huán)境。因此寫Java程序的時(shí)候需要JDK,而運(yùn)行Java程序的時(shí)候就需要JRE。 JDK里面已經(jīng)包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運(yùn)行Java程序。Java Java 開發(fā)環(huán)境配置開發(fā)環(huán)境配置n下載下載JDK 下載地址:http:/ 分32位和64位版本n安裝安裝 下載后直接安裝就可以
8、了n環(huán)境變量的配置環(huán)境變量的配置 JAVA_HOME: 設(shè)置為安裝的目錄 CLASSPATH:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar; PATH:%JAVA_HOME%bin;%JAVA_HOME%jrebin;n測試測試JDK是否安裝成功是否安裝成功 命令行下執(zhí)行:javaJDK基本組件介紹n JDK包含的基本組件包括: javac 編譯器,將源程序轉(zhuǎn)成字節(jié)碼 jar 打包工具,將相關(guān)的類文件打包成一個(gè)文件 javadoc 文檔生成器,從源碼注釋中提取文檔 jdb debugger,查錯(cuò)工具 java 運(yùn)行編譯后的java程序(.clas
9、s后綴的) appletviewer:小程序?yàn)g覽器,一種執(zhí)行HTML文件上的Java小程序的Java瀏覽器。 Javah:產(chǎn)生可以調(diào)用Java過程的C過程,或建立能被Java程序調(diào)用的C過程的頭文件。 Javap:Java反匯編器,顯示編譯類文件中的可訪問功能和數(shù)據(jù),同時(shí)顯示字節(jié)代碼含義。 Jconsole: Java進(jìn)行系統(tǒng)調(diào)試和監(jiān)控的工具JAVA常用包介紹n常用的包 java.lang: 這個(gè)是系統(tǒng)的基礎(chǔ)類,比如String等都是這里面的,這個(gè)包是唯一一個(gè)可以不用引入(import)就可以使用的包。 java.io: 這里面是所有輸入輸出有關(guān)的類,比如文件操作等。 java.nio:為了完
10、善io包中的功能,提高io包中性能而寫的一個(gè)新包 ,例如NIO非堵塞應(yīng)用 : 這里面是與網(wǎng)絡(luò)有關(guān)的類,比如URL,URLConnection等。 java.util: 這個(gè)是系統(tǒng)輔助類,特別是集合類Collection,List,Map等。 java.sql: 這個(gè)是數(shù)據(jù)庫操作的類,Connection, Statement,ResultSet等。 javax.servlet:這個(gè)是JSP,Servlet等使用到的類。JAVA開發(fā)工具n集成開發(fā)環(huán)境 Eclipse:一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái); NetBeans:開放源碼的Java集成開發(fā)環(huán)境,適用于各種客戶機(jī)和Web應(yīng)用;
11、 IntelliJ IDEA:在代碼自動(dòng)提示、代碼分析等方面的具有很好的功能; MyEclipse:由Genuitec公司開發(fā)的一款商業(yè)化軟件,是應(yīng)用比較廣泛的Java應(yīng)用程序集成開發(fā)環(huán)境n純文本編輯工具 EditPlus:如果正確配置Java的編譯器“Javac”以及解釋器“Java”后,可直接使用EditPlus編譯執(zhí)行Java程序 UltraEditor NotePad+ 記事本第一個(gè)Java程序:HelloWorldn用文本編輯器輸入以下代碼:n保存為 c:javahelloworld.javan命令行下執(zhí)行: javac helloworld.javan命令行下執(zhí)行: java he
12、lloworld/* HelloWorld.java */public class HelloWorldpublic static void main(String arg)System.out.println(Hello,World!);Java工作原理基本語法n編寫Java程序時(shí),應(yīng)注意以下幾點(diǎn): 大小寫敏感大小寫敏感:Java是大小寫敏感的,這就意味著標(biāo)識(shí)符Hello與hello是不同的。 類名類名:對于所有的類來說,類名的首字母應(yīng)該大寫。如果類名由若干單詞組成,那么每個(gè)單詞的首字母應(yīng)該大寫,例如 MyFirstJavaClass 。 方法名方法名:所有的方法名都應(yīng)該以小寫字母開頭。如果
13、方法名含有若干單詞,則后面的每個(gè)單詞首字母大寫。 源文件名源文件名:源文件名必須和類名相同。當(dāng)保存文件的時(shí)候,你應(yīng)該使用類名作為文件名保存(切記Java是大小寫敏感的),文件名的后綴為.java。(如果文件名和類名不相同則會(huì)導(dǎo)致編譯錯(cuò)誤)。 主方法入口主方法入口:所有的Java 程序由public static void main(String args)方法開始執(zhí)行。JavaJava標(biāo)識(shí)符標(biāo)識(shí)符nJava所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標(biāo)識(shí)符。 關(guān)于Java標(biāo)識(shí)符,有以下幾點(diǎn)需要注意: 所有的標(biāo)識(shí)符都應(yīng)該以字母(A-Z或者a-z),美元符($)、或者下劃線(_)開始
14、首字符之后可以是任何字符的組合 關(guān)鍵字不能用作標(biāo)識(shí)符 標(biāo)識(shí)符是大小寫敏感的 合法標(biāo)識(shí)符舉例:age、$salary、_value、_1_value 非法標(biāo)識(shí)符舉例:123abc、-salaryJAVA關(guān)鍵字abstractassertbooleanbreakbytecasecatchcharclasswhilecontinuedefaultdodoubleelseextendsinstanceoffinallyfloatforfalseifimplementsimportfinalintinterfacelongnativenewnullpackageprivateprotectedpubli
15、creturnshortstaticstrictfpsuperswitchtrythisthrowthrowstransientsynchronizedtruevolatilevoidconstgotou關(guān)鍵字Java中至今還未使用的保留關(guān)鍵字JavaJava修飾符修飾符像其他語言一樣,Java可以使用修飾符來修飾類中方法和屬性。主要有兩類修飾符: 可訪問修飾符 : default, public , protected, private 不可訪問修飾符 : final, abstract, strictfp語句 語句是一條計(jì)算機(jī)可以執(zhí)行的指令; int i=0; System.out.pri
16、ntln(“HelloWorld”);運(yùn)算符運(yùn)算符是一些特殊的符號(hào),主要用于數(shù)學(xué)函數(shù)、一些類型的賦值語句和邏輯比較方面。算術(shù)預(yù)算符操作符操作符描述描述例子例子+加法 - 相加運(yùn)算符兩側(cè)的值A(chǔ) + B等于30-減法 - 左操作數(shù)減去右操作數(shù)A B等于-10*乘法 - 相乘操作符兩側(cè)的值A(chǔ) * B等于200/除法 - 左操作數(shù)除以右操作數(shù)B / A等于2取模 - 右操作數(shù)除左操作數(shù)的余數(shù)B%A等于0+ +自增 - 操作數(shù)的值增加1B + +等于21-自減 - 操作數(shù)的值減少1B - -等于19表格中的實(shí)例假設(shè)整數(shù)變量A的值為10,變量B的值為20:比較預(yù)算符(關(guān)系運(yùn)算符)運(yùn)算符運(yùn)算符描述描述例子例
17、子=檢查如果兩個(gè)操作數(shù)的值是否相等,如果相等則條件為真。(A = B)為假(非真)。!=檢查如果兩個(gè)操作數(shù)的值是否相等,如果值不相等則條件為真。(A != B) 為真。 檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是那么條件為真。(A B)非真。 檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是那么條件為真。(A =檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是那么條件為真。(A = B)為假。=檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是那么條件為真。(A = B)為真。表格中的實(shí)例整數(shù)變量A的值為10,變量B的值為20:邏輯運(yùn)算符操作符操作符描述描述例子例子&稱為邏輯與運(yùn)算符。當(dāng)且僅當(dāng)
18、兩個(gè)操作數(shù)都為真,條件才為真。(A & B)為假。| |稱為邏輯或操作符。如果任何兩個(gè)操作數(shù)任何一個(gè)為真,條件為真。(A | | B)為真。!稱為邏輯非運(yùn)算符。用來反轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為true,則邏輯非運(yùn)算符將得到false。?。ˋ & B)為真。變量A為真,變量B為假位運(yùn)算符操作符操作符描述描述例子例子按位與操作符,當(dāng)且僅當(dāng)兩個(gè)操作數(shù)的某一位都非0時(shí)候結(jié)果的該位才為1。(AB),得到12,即0000 1100|按位或操作符,只要兩個(gè)操作數(shù)的某一位有一個(gè)非0時(shí)候結(jié)果的該位就為1。(A | B)得到61,即 0011 1101按位異或操作符,兩個(gè)操作數(shù)的某一位不相同時(shí)候結(jié)果的該位就為
19、1。(A B)得到49,即 0011 0001 按位補(bǔ)運(yùn)算符翻轉(zhuǎn)操作數(shù)的每一位。(A)得到-61,即1100 0011 按位左移運(yùn)算符。左操作數(shù)按位左移右操作數(shù)指定的位數(shù)。A 按位右移運(yùn)算符。左操作數(shù)按位右移右操作數(shù)指定的位數(shù)。A 2得到15即 1111 按位右移補(bǔ)零操作符。左操作數(shù)的值按右操作數(shù)指定的位數(shù)右移,移動(dòng)得到的空位以零填充。A2得到15即0000 1111假設(shè)a = 60,和b = 13;賦值運(yùn)算符操作符操作符描述描述例子例子=簡單的賦值運(yùn)算符,將右操作數(shù)的值賦給左側(cè)操作數(shù)C = A + B將把A + B得到的值賦給C+ =加和賦值操作符,它把左操作數(shù)和右操作數(shù)相加賦值給左操作數(shù)C
20、 + = A等價(jià)于C = C + A- =減和賦值操作符,它把左操作數(shù)和右操作數(shù)相減賦值給左操作數(shù)C - = A等價(jià)于C = C - A* =乘和賦值操作符,它把左操作數(shù)和右操作數(shù)相乘賦值給左操作數(shù)C * = A等價(jià)于C = C * A/ =除和賦值操作符,它把左操作數(shù)和右操作數(shù)相除賦值給左操作數(shù)C / = A等價(jià)于C = C / A()()=取模和賦值操作符,它把左操作數(shù)和右操作數(shù)取模后賦值給左操作數(shù)C= A等價(jià)于C = CA =左移位賦值運(yùn)算符C = 2等價(jià)于C = C =右移位賦值運(yùn)算符C = 2等價(jià)于C = C 2=按位與賦值運(yùn)算符C= 2等價(jià)于C = C2 =按位異或賦值操作符C =
21、 2等價(jià)于C = C 2| =按位或賦值操作符C | = 2等價(jià)于C = C | 2其他運(yùn)算符 條件運(yùn)算符(條件運(yùn)算符(?:)條件運(yùn)算符也被稱為三元運(yùn)算符。該運(yùn)算符有3個(gè)操作數(shù),并且需要判斷布爾表達(dá)式的值。該運(yùn)算符的主要是決定哪個(gè)值應(yīng)該賦值給變量。語法:variable x = (expression) ? value if true : value if false示例int a=20,b=30,c;c=ab?1:2; instanceOf 運(yùn)算符運(yùn)算符該運(yùn)算符用于操作對象實(shí)例,檢查該對象是否是一個(gè)特定類型(類類型或接口類型)。 語法:( Object reference variable
22、) instanceOf (class/interface type) 示例:String name = James;boolean result = name instanceOf String; / 由于name是Strine類型,所以返回真運(yùn)算符的優(yōu)先級(jí)類別類別操作符操作符關(guān)聯(lián)性關(guān)聯(lián)性后綴后綴() . (點(diǎn)操作符)左到右一元一元+ + - !從右到左乘性乘性 * /左到右加性加性 + -左到右移位移位 = = = = | =從右到左逗號(hào)逗號(hào),左到右下表的優(yōu)先級(jí)由高到低:數(shù)據(jù)類型 基本數(shù)據(jù)類型 引用數(shù)據(jù)類型 引用類型變量由類的構(gòu)造函數(shù)創(chuàng)建,可以使用它們訪問所引用的對象。這些變量在聲明時(shí)被指
23、定為一個(gè)特定的類型,比如Employee、Pubby等。變量一旦聲明后,類型就不能被改變了。 對象、數(shù)組都是引用數(shù)據(jù)類型。 所有引用類型的默認(rèn)值都是null。8種基本數(shù)據(jù)類型浮點(diǎn)型:float、double字符型:char整 型: byte 、short、int、long布爾型:boolean數(shù)據(jù)類型的取值范圍類型存儲(chǔ)需求取值范圍byte1字節(jié)128 127 short2字節(jié)32,768 32,767 int4字節(jié)2,147,483,648 2,147,483, 647 (剛剛超過20億) long8字節(jié)9,223,372,036,854,775,808 9,223,372,036,854,7
24、75,807 float4字節(jié)大約3.40282347E+38F (有效位數(shù)67 位)double8字節(jié)大約1.79769313486231570E+308 (有效位數(shù)15 位)轉(zhuǎn)義字符 前面有反斜杠()的字符代表轉(zhuǎn)義字符,它對編譯器來說是有特殊含義的。轉(zhuǎn)義序列轉(zhuǎn)義序列描述描述t在文中該處插入一個(gè)tab鍵b在文中該處插入一個(gè)后退鍵n在文中該處換行r在文中該處插入回車f在文中該處插入換頁符在文中該處插入單引號(hào)在文中該處插入雙引號(hào)在文中該處插入反斜杠數(shù)據(jù)類型的轉(zhuǎn)換 自動(dòng)轉(zhuǎn)換 類型兼容 目標(biāo)類型大于源類型 示例:int a=20;double b;b=a; 強(qiáng)制轉(zhuǎn)換 語法: 示例:double d
25、= 125.685;Int a = (int)d;type1 variable1 variable1 =(type2) variable2variable2; u 數(shù)字型、字符型、布爾型相互不兼容,不能自動(dòng)轉(zhuǎn)換u 下圖是合法的數(shù)據(jù)類型之間的轉(zhuǎn)換,6個(gè)實(shí)心箭頭代表無損轉(zhuǎn)換,3個(gè)虛線代表有可能丟失精度Java 對象和類n對象對象: 對象是類的一個(gè)實(shí)例,有狀態(tài)和行為。例如,一條狗是一個(gè)對象,它的狀態(tài)有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。n類類: 類是一個(gè)模板,它描述一類對象的行為和狀態(tài)。訪問控制修飾符訪問控制修飾符Java中,可以使用訪問控制符來保護(hù)對類、變量、方法和構(gòu)造方法的訪問。nJa
26、va支持4種不同的訪問權(quán)限。默認(rèn)的,也稱為default,在同一包內(nèi)可見,不使用任何修飾符。私有的,以private修飾符指定,在同一類內(nèi)可見。共有的,以public修飾符指定,對所有類可見。受保護(hù)的,以protected修飾符指定,對同一包內(nèi)的類和所有子類可見。n請注意以下方法繼承的規(guī)則:父類中聲明為public的方法在子類中也必須為public。父類中聲明為protected的方法在子類中要么聲明為protected,要么聲明為public。不能聲明為private。父類中默認(rèn)修飾符聲明的方法,能夠在子類中聲明為private。父類中聲明為private的方法,不能夠被繼承。非訪問修飾符非
27、訪問修飾符n為了實(shí)現(xiàn)一些其他的功能,Java也提供了許多非訪問修飾符。 static修飾符,用來創(chuàng)建類方法和類變量。 Final修飾符,用來修飾類、方法和變量,final修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的。 Abstract修飾符,用來創(chuàng)建抽象類和抽象方法。 Synchronized和volatile修飾符,主要用于線程的編程。構(gòu)造方法每個(gè)類都有構(gòu)造方法。如果沒有顯式地為類定義構(gòu)造方法,Java編譯器將會(huì)為該類提供一個(gè)默認(rèn)構(gòu)造方法。在創(chuàng)建一個(gè)對象的時(shí)候,至少要調(diào)用一個(gè)構(gòu)造方法。構(gòu)造方法的名稱必須與類同名,一個(gè)類可以有多個(gè)構(gòu)造方法。示例:publ
28、ic class Puppy public Puppy() public Puppy(String name) / 這個(gè)構(gòu)造器僅有一個(gè)參數(shù):name 創(chuàng)建對象創(chuàng)建對象對象是根據(jù)類創(chuàng)建的。在Java中,使用關(guān)鍵字new來創(chuàng)建一個(gè)新的對象。創(chuàng)建對象需要以下三步:聲明聲明:聲明一個(gè)對象,包括對象名稱和對象類型。實(shí)例化實(shí)例化:使用關(guān)鍵字new來創(chuàng)建一個(gè)對象。初始化初始化:使用new創(chuàng)建對象時(shí),會(huì)調(diào)用構(gòu)造方法初始化對象。示例:public class Puppy public Puppy(String name) /這個(gè)構(gòu)造器僅有一個(gè)參數(shù):name System.out.println(Passed N
29、ame is : + name ); public static void main(String args) / 下面的語句將創(chuàng)建一個(gè)Puppy對象 Puppy myPuppy = new Puppy( tommy ); 變量n Java中主要有如下幾種類型的變量 局部變量 實(shí)例變量 類/靜態(tài)變量n 所有的變量必須先聲明才能使用它們。 變量聲明的基本形式如下: type identifier = value, identifier = value . ; 示例:int a, b, c; / declares three ints, a, b, and c. int d = 3, e, f =
30、 5; / declares three more ints, initializing / d and f. byte z = 22; / initializes z. double pi = 3.14159; / declares an approximation of pi. char x = x; / the variable x has the value x.局部變量局部變量的方法,構(gòu)造函數(shù)或塊中聲明。 創(chuàng)建局部變量的方法,構(gòu)造函數(shù)或塊時(shí)進(jìn)入,一旦退出方法,構(gòu)造函數(shù)或塊中的變量將被銷毀。 訪問修飾符不能用于局部變量。 局部變量是可見的,只有內(nèi)聲明的方法,構(gòu)造函數(shù)或塊。 局部變量在堆
31、棧級(jí)別內(nèi)部實(shí)現(xiàn)。 在這里對局部變量沒有默認(rèn)值,因此局部變量應(yīng)該聲明和初始值應(yīng)在第一次使用前分配。 實(shí)例變量實(shí)例變量實(shí)例變量聲明在一個(gè)類中,但在方法、構(gòu)造方法和語句塊之外;當(dāng)一個(gè)對象被實(shí)例化之后,每個(gè)實(shí)例變量的值就跟著確定;實(shí)例變量在對象創(chuàng)建的時(shí)候創(chuàng)建,在對象被銷毀的時(shí)候銷毀;實(shí)例變量的值應(yīng)該至少被一個(gè)方法、構(gòu)造方法或者語句塊引用,使得外部能夠通過這些方式獲取實(shí)例變量信息;訪問修飾符可以修飾實(shí)例變量;實(shí)例變量對于類中的方法、構(gòu)造方法或者語句塊是可見的。一般情況下應(yīng)該把實(shí)例變量設(shè)為私有。通過使用訪問修飾符可以使實(shí)例變量對子類可見;實(shí)例變量具有默認(rèn)值。數(shù)值型變量的默認(rèn)值是0,布爾型變量的默認(rèn)值是fa
32、lse,引用類型變量的默認(rèn)值是null。變量的值可以在聲明時(shí)指定,也可以在構(gòu)造方法中指定;實(shí)例變量可以直接通過變量名訪問。但在靜態(tài)方法以及其他類中,就應(yīng)該使用完全限定名:ObejectReference.VariableName。實(shí)例變量舉例public class Employee public String name; / 這個(gè)成員變量對子類可見 private double salary; / 私有變量,僅在該類可見 public Employee (String empName) name = empName; /在構(gòu)造器中對name賦值 public void setSalary(d
33、ouble empSal) /設(shè)定salary的值 salary = empSal; public void printEmp() / 打印信息 System.out.println(name : + name ); System.out.println(salary : + salary); public static void main(String args) Employee empOne = new Employee(Ransika); empOne.setSalary(1000); empOne.printEmp(); 類變量(靜態(tài)變量)類變量(靜態(tài)變量)類變量也稱為靜態(tài)變量,在類
34、中以static關(guān)鍵字聲明,但必須在方法構(gòu)造方法和語句塊之外。無論一個(gè)類創(chuàng)建了多少個(gè)對象,類只擁有類變量的一份拷貝。靜態(tài)變量除了被聲明為常量外很少使用。常量是指聲明為publc/private,final和static類型的變量。常量初始化后不可改變。靜態(tài)變量儲(chǔ)存在靜態(tài)存儲(chǔ)區(qū)。經(jīng)常被聲明為常量,很少單獨(dú)使用static聲明變量。靜態(tài)變量在程序開始時(shí)創(chuàng)建,在程序結(jié)束時(shí)銷毀。與實(shí)例變量具有相似的可見性。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為public類型。默認(rèn)值和實(shí)例變量相似。數(shù)值型變量默認(rèn)值是0,布爾型默認(rèn)值是false,引用類型默認(rèn)值是null。變量的值可以在聲明的時(shí)候指定,也可以在構(gòu)
35、造方法中指定。此外,靜態(tài)變量還可以在靜態(tài)語句塊中初始化。靜態(tài)變量可以通過:ClassName.VariableName的方式訪問。類變量被聲明為public static final類型時(shí),類變量名稱必須使用大寫字母。如果靜態(tài)變量不是public和final類型,其命名方式與實(shí)例變量以及局部變量的命名方式一致。靜態(tài)變量舉例public class Employee /salary是靜態(tài)的私有變量 private static double salary; / DEPARTMENT是一個(gè)常量 public static final String DEPARTMENT = Development
36、; public static void main(String args) salary = 1000; System.out.println(DEPARTMENT+average salary:+salary); 程序的基本結(jié)構(gòu)n程序的3種結(jié)構(gòu)順序結(jié)構(gòu):自上而下的逐行執(zhí)行代碼選擇結(jié)構(gòu):根據(jù)邏輯判斷代碼的執(zhí)行順序循環(huán)結(jié)構(gòu):根據(jù)邏輯重復(fù)執(zhí)行某個(gè)代碼塊順序結(jié)構(gòu) 順序結(jié)構(gòu):自上而下地逐行執(zhí)行代碼輸入數(shù)據(jù)處理數(shù)據(jù)輸出結(jié)果自上而下順序執(zhí)行 選擇結(jié)構(gòu) 選擇結(jié)構(gòu):根據(jù)邏輯判斷代碼的執(zhí)行順序條件不成立條件成立語句塊條件語句塊2. 選擇結(jié)構(gòu)2.1 if-else條件分支語句if(條件表達(dá)式)語句塊1else
37、語句塊2如果表達(dá)式的值為true則執(zhí)行語句塊1如果表達(dá)式的值為false則執(zhí)行語句塊2class Example3_4 public static void main(String args) int a=1; if(a=2) System.out.println(a等于2); else System.out.println(a不等于2); 不滿足條件,所以執(zhí)行else后面語句塊2.2 三元運(yùn)算符與if-else的區(qū)別expression1 ? expression2 : expression3布爾表達(dá)式expresion1為真,則expresion2被求值expresion1為假,則expr
38、esion3被求值class Example3_6 public static void main(String args) int x = 2;int y;/使用if-else語句來判斷if(x0)y=x;elsey=-x;System.out.println(使用if語句得到的y=+y);y=x0?x:-x;System.out.println(使用三元運(yùn)算符得到的y=+y); 三元運(yùn)算符返回一個(gè)值2.3 if-else內(nèi)部嵌套if(條件表達(dá)式)語句塊1else語句塊2替換替換If(條件表達(dá)式) 語句塊1else 語句塊2If(條件表達(dá)式) 語句塊3else 語句塊4if(條件表達(dá)式) i
39、f(條件表達(dá)式)語句塊1 else語句塊2 else if(條件表達(dá)式)語句塊1 else語句塊2 if-else內(nèi)部嵌套class Example3_9 public static void main(String args) /定義年齡變量 int age = 4; if(age=18 & age=35 & age55)/當(dāng)年齡在3555之間時(shí)執(zhí)行 System.out.println(“中年); else System.out.println(老年); 嵌套再嵌套多層嵌套可以無窮次嵌套嗎?2.4 if-else多級(jí)嵌套u(yù)if-else多級(jí)嵌套if(條件表達(dá)式)語句塊1else if(條件
40、表達(dá)式)語句塊2else語句塊3else后面再寫if-else語句if-else多級(jí)嵌套class Example3_7 public static void main(String args) /定義年齡變量 int age = 4; if(age=18 & age=35 & age55) /當(dāng)年齡在3555之間時(shí)執(zhí)行 System.out.println(“中年); else/當(dāng)年齡大于55時(shí) System.out.println(老年); (1)判斷條件是否成立(2)如果 步驟(1)中條件不成立,則判斷此條件(3)如果步驟(1)和(2)中的條件均不成立,則判斷此條件(4)以上條件都不滿足
41、則執(zhí)行2.5 switch-case語句 uswitch-case語句switch (表達(dá)式) case 取值1:語句塊1;break; case 取值2 :語句塊2;break; . default :語句塊n; 必須為byte、short、int或char類型可選,用于匹配所有case定義的以外的值 跳出switch語句switch-case語句n與if-else比較,switch-case的優(yōu)點(diǎn)在于可以利用switch的開關(guān)功能來實(shí)現(xiàn)批處理增加了代碼的可讀性使代碼更容易編寫性能更高n但缺點(diǎn)是:不能實(shí)現(xiàn)嵌套判斷練習(xí)分別用 if 和switch 語句判斷某個(gè)月份的天數(shù)。循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu):根
42、據(jù)邏輯重復(fù)執(zhí)行某個(gè)代碼塊循環(huán)體循環(huán)條件條件成立條件不成立while語句while(條件表達(dá)式) 循環(huán)體只要表達(dá)式為true,就一直執(zhí)行循環(huán)體int counter=1;int sum=0;while (counter=100)sum=sum+counter;+counter;System.out.println(1+2+.+100=+sum);判斷循環(huán)條件執(zhí)行循環(huán)體,再判斷循環(huán)條件3.2 do-while語句 udo-while語句循環(huán)體循環(huán)條件條件成立條件不成立先執(zhí)行一次循環(huán)體再判斷循環(huán)條件3.3 for語句 ufor循環(huán)n主要用于按預(yù)定的次數(shù)執(zhí)行語句或語句塊for(initializati
43、on; condition; iteration) 循環(huán)體 增加或減少循環(huán)變量的一個(gè)表達(dá)式必須是布爾表達(dá)式最先執(zhí)行,僅被執(zhí)行一次for語句class Example3_15 public static void main(String args) int sum=0; for(int i=0;i=10;i+) sum=sum+i; System.out.println(1+2+.+10=+sum); (1)給i賦值(2)判斷i10(3)執(zhí)行循環(huán)體(4)i+(5)回到步驟(2)* * * * * * *3.4 break語句與continue語句 ubreak語句n除了可以用在switch語句中
44、,還可以用在循環(huán)體中n在循環(huán)體中遇見break語句時(shí),立即結(jié)束循環(huán),跳到循環(huán)外,執(zhí)行循環(huán)結(jié)構(gòu)后面的語句class Example3_18 public static void main(String args) int i=0; for(i=1000;i=2000;i+) if(i%123=0)/判斷是否能被123整除 break; /若能整除,則跳出for循環(huán) System.out.println(第一個(gè)能被123整除的數(shù)是+i); 如果條件成立,執(zhí)行break語句break語句與continue語句ucontinue語句u用于結(jié)束本次循環(huán),即在循環(huán)體中遇見continue語句,則循環(huán)體中c
45、ontinue語句后面的語句不會(huì)執(zhí)行,接著進(jìn)行下一次循環(huán)的判定class Example3_18 public static void main(String args) int i=0; for(i=1000;i=2000;i+) if(i%123=0)/判斷是否能被123整除 continue;/若能整除,則進(jìn)入下一次for循環(huán) System.out.println(第一個(gè)能被123整除的數(shù)是+i); 如果條件成立,執(zhí)行continue語句3.5 嵌套循環(huán) u嵌套循環(huán)class Nested public static void main(String args) int i, j;for
46、 (i = 0; i 10; i+) for (j = i; j 10; j+)System.out.print(“*”);System.out.println();控制外層循環(huán)控制內(nèi)層循環(huán)小結(jié)u循環(huán)的執(zhí)行方式是先判斷還是先執(zhí)行?u break語句只能跳出一層循環(huán)嗎?u可以使用while的地方,一定能使用do-while和for語句嗎?練習(xí) 打印 九九乘法表Java異常處理基礎(chǔ)Java中的異常分為兩大類:中的異常分為兩大類:1.Checked Exception(非Runtime Exception)2.Unchecked Exception(Runtime Exception)checked
47、checked異常:異常: 表示無效,不是程序中可以預(yù)測的。比如無效的用戶輸入,文件不存在,網(wǎng)絡(luò)或者數(shù)據(jù)庫鏈接錯(cuò)誤。這些都是外在的原因,都不是程序內(nèi)部可以控制的。 必須在代碼中顯式地處理。比如try-catch塊處理,或者給所在的方法加上throws說明,將異常拋到調(diào)用棧的上一層。 繼承自java.lang.Exception(java.lang.RuntimeException除外)。unchecked異常:表示錯(cuò)誤,程序的邏輯錯(cuò)誤。是RuntimeException的子類,比如IllegalArgumentException, NullPointerException和IllegalSta
48、teException。不需要在代碼中顯式地捕獲unchecked異常做處理。繼承自java.lang.RuntimeException(而java.lang.RuntimeException繼承自java.lang.Exception)。異常處理的一般結(jié)構(gòu) try / 可能發(fā)生異常的代碼 / 如果發(fā)生了異常,那么異常之后的代碼都不會(huì)被執(zhí)行 catch (Exception e) / 異常處理代碼 finally / 不管有沒有發(fā)生異常,finally語句塊都會(huì)被執(zhí)行 個(gè)try后面可以跟多個(gè)catch,但不管多少個(gè),最多只會(huì)有一個(gè)最多只會(huì)有一個(gè)catch塊被執(zhí)行。塊被執(zhí)行。一uString類
49、n在java中String并非基本數(shù)據(jù)類型,而是把字符串當(dāng)作對象來處理njava.lang.String類提供了一系列操作字符串的方法,使得字符串的生成、訪問和修改等操作容易和規(guī)范String類 String類u創(chuàng)建String對象String str1;str1 = “Hello World!”;或者:String str2 “Hello World!”;或者:String str3 = new String(“Hello World!”); str3是用new關(guān)鍵字創(chuàng)建的String類的對象。雖然它的實(shí)體也是“Hello World!”,但它與str1、str2占用不同的內(nèi)存地址Strin
50、g類方法名功能描述length()返回此字符串的長度subString(int beginIndex)返回一個(gè)新字符串,它是此字符串的子字符串valueOf(int i)返回相應(yīng)類型的字符串表示形式compareTo(String anotherString)比較兩個(gè)字符串的大小equals(Objects anObject)比較兩個(gè)字符串是否相等concat(String str)拼接字符串charAt(int index)返回指定索引處的 char 值endsWith(String suffix)測試此字符串是否以指定的后綴結(jié)束format(String format, Object. a
51、rgs)使用指定的格式字符串和參數(shù)返回一個(gè)格式化字符串indexOf(int ch)返回指定字符在此字符串中第一次出現(xiàn)處的索引split(String regex)根據(jù)給定的正規(guī)表達(dá)式的匹配來拆分此字符串trim()清除左右兩端的空格uString相關(guān)方法String類uLength()方法class Test public static void main(String args) String str1=World;String str2=;String str3=null;int l1=str1.length();int l2=str2.length();int l3=str3.leng
52、th();System.out.println(str1的長度為:+l1);System.out.println(str2的長度為:+l2);字符串為null時(shí),表示這個(gè)字符串對象不存在,所以不能調(diào)用length()方法 String類uconcat()方法方法class Test public static void main(String args) String str1=World;String str2=123;String str3=str1.concat(str2);System.out.println(str3);運(yùn)行結(jié)果為:World123String類u舉例演示valueO
53、f()方法和subString()方法的使用String類ueques()方法方法class Test public static void main(String args) String str1=new String(World);String str2=new String(World);if(str1=str2) System.out.println(引用相等);else System.out.println(引用不相等);if(str1.equals(str2) System.out.println(值相等); “=”用于判斷兩個(gè)對象的引用是否相等“eques()”判斷實(shí)際對象是否
54、相等運(yùn)算符“=”只能夠確定兩個(gè)字符串是否被放置在同一個(gè)位置只要對字符串進(jìn)行比較,最好都用equals()方法String類uString的“+”操作n運(yùn)算符”可直接用來實(shí)現(xiàn)字符串的連接,效果等同于concat()方法: int age = 20; String s = He is +age+ years old.; 其他類型的數(shù)據(jù)與字符串進(jìn)行+運(yùn)算時(shí),將自動(dòng)轉(zhuǎn)換成字符串StringBuffer類uStringBuffer類nString的實(shí)例為不可變對象,一旦被創(chuàng)建就不能修改它的值StringBuffer的實(shí)例是可變對象。對StringBuffer進(jìn)行修改時(shí)不會(huì)重新創(chuàng)建對象StringBuff
55、er類語法說明StringBuffer()創(chuàng)建一個(gè)空的可變字符串,起始容量為16個(gè)字符長度(默認(rèn)長度)StringBuffer(int index)以起始長度為index創(chuàng)建一個(gè)空的可變字符串StringBuffer(String str)創(chuàng)建一個(gè)可變字符串,初始化為stru創(chuàng)建StringBuffer對象n構(gòu)造方法class Test public static void main(String args) StringBuffer str1=new StringBuffer();StringBuffer str2=new StringBuffer(20);StringBuffer str3
56、=new StringBuffer(World);其長度為16,賦值時(shí)字符串長度不能超過16StringBuffer類方法名功能描述append(String str)將指定的字符串追加到此字符序列insert(int offset, String str) 將字符串插入此字符序列中setCharAt()創(chuàng)建一個(gè)可變字符串,初始化為strreverse() 將此字符序列用其反轉(zhuǎn)形式取代deleteCharAt(int index) 移除此序列指定位置的charuStringBuffer類相關(guān)方法StringBuffer類uappend()方法class Test public static v
57、oid main(String args) /初始化可變字符串StringBuffer sb=new StringBuffer(World);/追加字符串sb.append(123);System.out.println(sb); 運(yùn)行結(jié)果為:“World123”,這說明StringBuffer是可變的字符串對象String類和StringBuffer類 insert()方法 class Test public static void main(String args) StringBuffer sb=new StringBuffer(World);sb.insert(2, 123);Syst
58、em.out.println(sb);第3個(gè)位置上插入“123”,位置下標(biāo)從0開始運(yùn)行結(jié)果為:Ms123tanfordString 練習(xí)統(tǒng)計(jì)一個(gè)字符串中大寫字母、小寫字母、數(shù)字的個(gè)數(shù) 統(tǒng)計(jì) 字符串“Hello java,i love java,”里 lo出現(xiàn)的次數(shù)。indexOf(sting str)包裝類基本數(shù)據(jù)類型包裝類byteBytebooleanBooleanshortShortcharCharacterintIntegerlongLongfloatFloatdoubleDoubleu包裝類: Java為每個(gè)基本類型都提供了包裝類(Wrapper Class) 包裝類 Integer類
59、常用的方法有intValue()方法 和 parseInt()方法 class Test public static void main(String args) int n = 10; Integer in = new Integer(100); Integer in1 = new Integer(n);int m = Value(); System.out.println(in1); System.out.println(m);將int類型轉(zhuǎn)換為Integer類型intValue()方法將Integer類型的對象轉(zhuǎn)換為int類型class Test public static
60、void main(String args) /定義兩個(gè)數(shù)字字符串String str1=123;String str2=10;int a=Integer.parseInt(str1);int b=Integer.parseInt(str2);System.out.println(兩數(shù)之和是:+(a+b);parseInt()方法將字符串轉(zhuǎn)換成整型包裝類 自動(dòng)拆裝箱JDK從JDK1.5(5.0)版本之后引入了自動(dòng)拆裝箱的語法,即系統(tǒng)將自動(dòng)進(jìn)行基本數(shù)據(jù)類型和對應(yīng)包裝類型的轉(zhuǎn)換 class Test public static void main(String args) /int類型將自動(dòng)轉(zhuǎn)換為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖出租轉(zhuǎn)讓合同范本
- 云南省監(jiān)理聘用合同范本
- 北碚區(qū)運(yùn)輸合同范本
- 興業(yè)快遞轉(zhuǎn)讓合同范本
- 北京入職合同范本
- 農(nóng)資農(nóng)藥購銷合同范本
- 農(nóng)莊合作期間轉(zhuǎn)讓合同范本
- 公司雇傭個(gè)人合同范本
- 出貨貨期合同范本
- 價(jià)稅分開合同范本
- PEP六年級(jí)上冊英語unit1
- 接納與承諾(ACT)療法課件
- 裝配式混凝土建筑技術(shù)標(biāo)準(zhǔn)
- 房地產(chǎn)公司銷售管理部賞罰制度
- 《方位介詞介紹》課件
- 甲狀腺術(shù)后出血搶救流程
- 個(gè)人購買家具合同
- 國際救生設(shè)備規(guī)則
- 第三方檢查應(yīng)對措施方案
- 2020年財(cái)產(chǎn)保險(xiǎn)公司部門職責(zé)和崗位說明書
- 抽水臺(tái)班記錄表
評(píng)論
0/150
提交評(píng)論