




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java Java 簡介簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計語言和Java平臺的總稱。由James Gosling和同事們共同研發(fā),并在1995年正式推出。 Java分為三個體系: JavaSEJavaSE(J2SEJ2SE):Java2 Platform Standard Edition,java平臺標(biāo)準(zhǔn)版 JavaEE (J2EE) JavaEE (J2EE) :Java 2 Platform,Enterprise Edition,java平臺企業(yè)版 JavaME (J2ME) JavaME (J2ME) :Java 2 Pl
2、atform Micro Edition,java平臺微型版 2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經(jīng)更名以取消其中的數(shù)字2:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。 計算機(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í)行,因此效率比較低,而且不能生成可獨立執(zhí)行的可執(zhí)行文件,應(yīng)用程序不能脫離其解釋器,但這種方式比較靈活,可以動態(tài)地調(diào)整、修改應(yīng)用程序。 (2)編譯類:編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機(jī)器語言),因此其目標(biāo)程序可以脫離其語言環(huán)境獨立執(zhí)行,使用比較方便、效率較高。JAVA發(fā)展歷程1995年5月23日,Java語言誕生1996年1月,第一個JDK-JDK1.0誕生1997年2月18日,JDK1.1發(fā)布1998年12月8日,JAVA2企業(yè)平臺J2E
4、E發(fā)布2002年2月26日,J2SE1.4發(fā)布,自此Java的計算能力有了大幅提升2004年9月30日18:00PM,J2SE1.5發(fā)布,成為Java語言發(fā)展史上的又一里程碑。為了表示該版本的重要性,J2SE1.5更名為Java SE 5.02005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,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語言的特點 Java語言是簡單的:語法和C、C+很接近,易學(xué);Java丟棄了C+中很少使用的、很難理解的、令人迷惑的那些特性 Java語言是面向?qū)ο蟮模?Java語言是分布式的: Java語言是健壯的:強(qiáng)類型機(jī)制、異常處理、垃圾的自動收集垃圾的自動收集,廢棄了指針; Java語言是安全的: Java語言是體系結(jié)構(gòu)中立的: Java語言是可移植的:可以跨平臺運(yùn)行可以跨平臺運(yùn)行 Java語言是解釋型的: Java是高性能的: Java語言是多線程的: Java語言是動態(tài)的:Java程序需要的類能夠動態(tài)地被載入到運(yùn)行環(huán)境,能進(jìn)行運(yùn)行時刻的類型檢查JVM介紹 JVM是Java Virtual
6、 Machine(Java虛擬機(jī))的縮寫,JVM是一種用于計算設(shè)備的規(guī)范,它是一個虛構(gòu)出來的計算機(jī),是通過在實際的計算機(jī)上仿真模擬各種計算機(jī)功能來實現(xiàn)的。 Java語言的一個非常重要的特點就是與平臺的無關(guān)性。而使用Java虛擬機(jī)是實現(xiàn)這一特點的關(guān)鍵。用戶USER字節(jié)碼程序JVM (Java 虛擬機(jī))操作系統(tǒng) 硬件編程環(huán)境nJDK JDK(Java Development Kit)稱為Java開發(fā)包或Java開發(fā)工具,是一個編寫Java的Applet小程序和應(yīng)用程序的程序開發(fā)環(huán)境。 JDK是整個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是個運(yùn)行環(huán)境,JDK是個開發(fā)環(huán)境。因此寫Java程序的時候需要JDK,而運(yùn)行Java程序的時候就需要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)的類文件打包成一個文件 javadoc 文檔生成器,從源碼注釋中提取文檔 jdb debugger,查錯工具 java 運(yùn)行編譯后的java程序(.clas
9、s后綴的) appletviewer:小程序瀏覽器,一種執(zhí)行HTML文件上的Java小程序的Java瀏覽器。 Javah:產(chǎn)生可以調(diào)用Java過程的C過程,或建立能被Java程序調(diào)用的C過程的頭文件。 Javap:Java反匯編器,顯示編譯類文件中的可訪問功能和數(shù)據(jù),同時顯示字節(jié)代碼含義。 Jconsole: Java進(jìn)行系統(tǒng)調(diào)試和監(jiān)控的工具JAVA常用包介紹n常用的包 java.lang: 這個是系統(tǒng)的基礎(chǔ)類,比如String等都是這里面的,這個包是唯一一個可以不用引入(import)就可以使用的包。 java.io: 這里面是所有輸入輸出有關(guān)的類,比如文件操作等。 java.nio:為了完
10、善io包中的功能,提高io包中性能而寫的一個新包 ,例如NIO非堵塞應(yīng)用 : 這里面是與網(wǎng)絡(luò)有關(guān)的類,比如URL,URLConnection等。 java.util: 這個是系統(tǒng)輔助類,特別是集合類Collection,List,Map等。 java.sql: 這個是數(shù)據(jù)庫操作的類,Connection, Statement,ResultSet等。 javax.servlet:這個是JSP,Servlet等使用到的類。JAVA開發(fā)工具n集成開發(fā)環(huán)境 Eclipse:一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺; NetBeans:開放源碼的Java集成開發(fā)環(huán)境,適用于各種客戶機(jī)和Web應(yīng)用;
11、 IntelliJ IDEA:在代碼自動提示、代碼分析等方面的具有很好的功能; MyEclipse:由Genuitec公司開發(fā)的一款商業(yè)化軟件,是應(yīng)用比較廣泛的Java應(yīng)用程序集成開發(fā)環(huán)境n純文本編輯工具 EditPlus:如果正確配置Java的編譯器“Javac”以及解釋器“Java”后,可直接使用EditPlus編譯執(zhí)行Java程序 UltraEditor NotePad+ 記事本第一個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程序時,應(yīng)注意以下幾點: 大小寫敏感大小寫敏感:Java是大小寫敏感的,這就意味著標(biāo)識符Hello與hello是不同的。 類名類名:對于所有的類來說,類名的首字母應(yīng)該大寫。如果類名由若干單詞組成,那么每個單詞的首字母應(yīng)該大寫,例如 MyFirstJavaClass 。 方法名方法名:所有的方法名都應(yīng)該以小寫字母開頭。如果
13、方法名含有若干單詞,則后面的每個單詞首字母大寫。 源文件名源文件名:源文件名必須和類名相同。當(dāng)保存文件的時候,你應(yīng)該使用類名作為文件名保存(切記Java是大小寫敏感的),文件名的后綴為.java。(如果文件名和類名不相同則會導(dǎo)致編譯錯誤)。 主方法入口主方法入口:所有的Java 程序由public static void main(String args)方法開始執(zhí)行。JavaJava標(biāo)識符標(biāo)識符nJava所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標(biāo)識符。 關(guān)于Java標(biāo)識符,有以下幾點需要注意: 所有的標(biāo)識符都應(yīng)該以字母(A-Z或者a-z),美元符($)、或者下劃線(_)開始
14、首字符之后可以是任何字符的組合 關(guān)鍵字不能用作標(biāo)識符 標(biāo)識符是大小寫敏感的 合法標(biāo)識符舉例:age、$salary、_value、_1_value 非法標(biāo)識符舉例:123abc、-salaryJAVA關(guān)鍵字abstractassertbooleanbreakbytecasecatchcharclasswhilecontinuedefaultdodoubleelseextendsinstanceoffinallyfloatforfalseifimplementsimportfinalintinterfacelongnativenewnullpackageprivateprotectedpubli
15、creturnshortstaticstrictfpsuperswitchtrythisthrowthrowstransientsynchronizedtruevolatilevoidconstgotou關(guān)鍵字Java中至今還未使用的保留關(guān)鍵字JavaJava修飾符修飾符像其他語言一樣,Java可以使用修飾符來修飾類中方法和屬性。主要有兩類修飾符: 可訪問修飾符 : default, public , protected, private 不可訪問修飾符 : final, abstract, strictfp語句 語句是一條計算機(jī)可以執(zhí)行的指令; int i=0; System.out.pri
16、ntln(“HelloWorld”);運(yùn)算符運(yùn)算符是一些特殊的符號,主要用于數(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ù)變量A的值為10,變量B的值為20:比較預(yù)算符(關(guān)系運(yùn)算符)運(yùn)算符運(yùn)算符描述描述例子例
17、子=檢查如果兩個操作數(shù)的值是否相等,如果相等則條件為真。(A = B)為假(非真)。!=檢查如果兩個操作數(shù)的值是否相等,如果值不相等則條件為真。(A != B) 為真。 檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是那么條件為真。(A B)非真。 檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是那么條件為真。(A =檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是那么條件為真。(A = B)為假。=檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是那么條件為真。(A = B)為真。表格中的實例整數(shù)變量A的值為10,變量B的值為20:邏輯運(yùn)算符操作符操作符描述描述例子例子&稱為邏輯與運(yùn)算符。
18、當(dāng)且僅當(dāng)兩個操作數(shù)都為真,條件才為真。(A & B)為假。| |稱為邏輯或操作符。如果任何兩個操作數(shù)任何一個為真,條件為真。(A | | B)為真。!稱為邏輯非運(yùn)算符。用來反轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為true,則邏輯非運(yùn)算符將得到false。?。ˋ & B)為真。變量A為真,變量B為假位運(yùn)算符操作符操作符描述描述例子例子按位與操作符,當(dāng)且僅當(dāng)兩個操作數(shù)的某一位都非0時候結(jié)果的該位才為1。(AB),得到12,即0000 1100|按位或操作符,只要兩個操作數(shù)的某一位有一個非0時候結(jié)果的該位就為1。(A | B)得到61,即 0011 1101按位異或操作符,兩個操作數(shù)的某一位
19、不相同時候結(jié)果的該位就為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ù)右移,移動得到的空位以零填充。A2得到15即0000 1111假設(shè)a = 60,和b = 13;賦值運(yùn)算符操作符操作符描述描述例子例子=簡單的賦值運(yùn)算符,將右操作數(shù)的值賦給左側(cè)操作數(shù)C = A + B將把A + B得到的值賦給C+ =加和賦值操作符,它把左操作數(shù)和右操
20、作數(shù)相加賦值給左操作數(shù)C + = A等價于C = C + A- =減和賦值操作符,它把左操作數(shù)和右操作數(shù)相減賦值給左操作數(shù)C - = A等價于C = C - A* =乘和賦值操作符,它把左操作數(shù)和右操作數(shù)相乘賦值給左操作數(shù)C * = A等價于C = C * A/ =除和賦值操作符,它把左操作數(shù)和右操作數(shù)相除賦值給左操作數(shù)C / = A等價于C = C / A()()=取模和賦值操作符,它把左操作數(shù)和右操作數(shù)取模后賦值給左操作數(shù)C= A等價于C = CA =左移位賦值運(yùn)算符C = 2等價于C = C =右移位賦值運(yùn)算符C = 2等價于C = C 2=按位與賦值運(yùn)算符C= 2等價于C = C2 =
21、按位異或賦值操作符C = 2等價于C = C 2| =按位或賦值操作符C | = 2等價于C = C | 2其他運(yùn)算符 條件運(yùn)算符(條件運(yùn)算符(?:)條件運(yùn)算符也被稱為三元運(yùn)算符。該運(yùn)算符有3個操作數(shù),并且需要判斷布爾表達(dá)式的值。該運(yùn)算符的主要是決定哪個值應(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)算符用于操作對象實例,檢查該對象是否是一個特定類型(類類型或接口類型)。 語法:( Object referen
22、ce variable ) instanceOf (class/interface type) 示例:String name = James;boolean result = name instanceOf String; / 由于name是Strine類型,所以返回真運(yùn)算符的優(yōu)先級類別類別操作符操作符關(guān)聯(lián)性關(guān)聯(lián)性后綴后綴() . (點操作符)左到右一元一元+ + - !從右到左乘性乘性 * /左到右加性加性 + -左到右移位移位 = = = = | =從右到左逗號逗號,左到右下表的優(yōu)先級由高到低:數(shù)據(jù)類型 基本數(shù)據(jù)類型 引用數(shù)據(jù)類型 引用類型變量由類的構(gòu)造函數(shù)創(chuàng)建,可以使用它們訪問所引用的對
23、象。這些變量在聲明時被指定為一個特定的類型,比如Employee、Pubby等。變量一旦聲明后,類型就不能被改變了。 對象、數(shù)組都是引用數(shù)據(jù)類型。 所有引用類型的默認(rèn)值都是null。8種基本數(shù)據(jù)類型浮點型:float、double字符型:char整 型: byte 、short、int、long布爾型:boolean數(shù)據(jù)類型的取值范圍類型存儲需求取值范圍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,3
24、72,036,854,775,807 float4字節(jié)大約3.40282347E+38F (有效位數(shù)67 位)double8字節(jié)大約1.79769313486231570E+308 (有效位數(shù)15 位)轉(zhuǎn)義字符 前面有反斜杠()的字符代表轉(zhuǎn)義字符,它對編譯器來說是有特殊含義的。轉(zhuǎn)義序列轉(zhuǎn)義序列描述描述t在文中該處插入一個tab鍵b在文中該處插入一個后退鍵n在文中該處換行r在文中該處插入回車f在文中該處插入換頁符在文中該處插入單引號在文中該處插入雙引號在文中該處插入反斜杠數(shù)據(jù)類型的轉(zhuǎn)換 自動轉(zhuǎn)換 類型兼容 目標(biāo)類型大于源類型 示例:int a=20;double b;b=a; 強(qiáng)制轉(zhuǎn)換 語法:
25、示例:double d = 125.685;Int a = (int)d;type1 variable1 variable1 =(type2) variable2variable2; u 數(shù)字型、字符型、布爾型相互不兼容,不能自動轉(zhuǎn)換u 下圖是合法的數(shù)據(jù)類型之間的轉(zhuǎn)換,6個實心箭頭代表無損轉(zhuǎn)換,3個虛線代表有可能丟失精度Java 對象和類n對象對象: 對象是類的一個實例,有狀態(tài)和行為。例如,一條狗是一個對象,它的狀態(tài)有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。n類類: 類是一個模板,它描述一類對象的行為和狀態(tài)。訪問控制修飾符訪問控制修飾符Java中,可以使用訪問控制符來保護(hù)對類、變量、方法
26、和構(gòu)造方法的訪問。nJava支持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為了實現(xiàn)一些其他的功能,Java也提供了許多非訪問修飾符。 static修飾符,用來創(chuàng)建類方法和類變量。 Final修飾符,用來修飾類、方法和變量,final修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的。 Abstract修飾符,用來創(chuàng)建抽象類和抽象方法。 Synchronized和volatile修飾符,主要用于線程的編程。構(gòu)造方法每個類都有構(gòu)造方法。如果沒有顯式地為類定義構(gòu)造方法,Java編譯器將會為該類提供一個默認(rèn)構(gòu)造方法。在創(chuàng)建一個對象的時候,至少要調(diào)用一個構(gòu)造方法。構(gòu)造方法的名稱必須與類同名,一個類可以有多個
28、構(gòu)造方法。示例:public class Puppy public Puppy() public Puppy(String name) / 這個構(gòu)造器僅有一個參數(shù):name 創(chuàng)建對象創(chuàng)建對象對象是根據(jù)類創(chuàng)建的。在Java中,使用關(guān)鍵字new來創(chuàng)建一個新的對象。創(chuàng)建對象需要以下三步:聲明聲明:聲明一個對象,包括對象名稱和對象類型。實例化實例化:使用關(guān)鍵字new來創(chuàng)建一個對象。初始化初始化:使用new創(chuàng)建對象時,會調(diào)用構(gòu)造方法初始化對象。示例:public class Puppy public Puppy(String name) /這個構(gòu)造器僅有一個參數(shù):name System.out.prin
29、tln(Passed Name is : + name ); public static void main(String args) / 下面的語句將創(chuàng)建一個Puppy對象 Puppy myPuppy = new Puppy( tommy ); 變量n Java中主要有如下幾種類型的變量 局部變量 實例變量 類/靜態(tài)變量n 所有的變量必須先聲明才能使用它們。 變量聲明的基本形式如下: type identifier = value, identifier = value . ; 示例:int a, b, c; / declares three ints, a, b, and c. int d
30、 = 3, e, f = 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ù)或塊時進(jìn)入,一旦退出方法,構(gòu)造函數(shù)或塊中的變量將被銷毀。 訪問修飾符不能用于局部變量。 局部變量是可見的,只有內(nèi)聲明的方法,構(gòu)造
31、函數(shù)或塊。 局部變量在堆棧級別內(nèi)部實現(xiàn)。 在這里對局部變量沒有默認(rèn)值,因此局部變量應(yīng)該聲明和初始值應(yīng)在第一次使用前分配。 實例變量實例變量實例變量聲明在一個類中,但在方法、構(gòu)造方法和語句塊之外;當(dāng)一個對象被實例化之后,每個實例變量的值就跟著確定;實例變量在對象創(chuàng)建的時候創(chuàng)建,在對象被銷毀的時候銷毀;實例變量的值應(yīng)該至少被一個方法、構(gòu)造方法或者語句塊引用,使得外部能夠通過這些方式獲取實例變量信息;訪問修飾符可以修飾實例變量;實例變量對于類中的方法、構(gòu)造方法或者語句塊是可見的。一般情況下應(yīng)該把實例變量設(shè)為私有。通過使用訪問修飾符可以使實例變量對子類可見;實例變量具有默認(rèn)值。數(shù)值型變量的默認(rèn)值是0,
32、布爾型變量的默認(rèn)值是false,引用類型變量的默認(rèn)值是null。變量的值可以在聲明時指定,也可以在構(gòu)造方法中指定;實例變量可以直接通過變量名訪問。但在靜態(tài)方法以及其他類中,就應(yīng)該使用完全限定名:ObejectReference.VariableName。實例變量舉例public class Employee public String name; / 這個成員變量對子類可見 private double salary; / 私有變量,僅在該類可見 public Employee (String empName) name = empName; /在構(gòu)造器中對name賦值 public void
33、 setSalary(double 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)變量)類
34、變量也稱為靜態(tài)變量,在類中以static關(guān)鍵字聲明,但必須在方法構(gòu)造方法和語句塊之外。無論一個類創(chuàng)建了多少個對象,類只擁有類變量的一份拷貝。靜態(tài)變量除了被聲明為常量外很少使用。常量是指聲明為publc/private,final和static類型的變量。常量初始化后不可改變。靜態(tài)變量儲存在靜態(tài)存儲區(qū)。經(jīng)常被聲明為常量,很少單獨使用static聲明變量。靜態(tài)變量在程序開始時創(chuàng)建,在程序結(jié)束時銷毀。與實例變量具有相似的可見性。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為public類型。默認(rèn)值和實例變量相似。數(shù)值型變量默認(rèn)值是0,布爾型默認(rèn)值是false,引用類型默認(rèn)值是null。變量的值可以在聲
35、明的時候指定,也可以在構(gòu)造方法中指定。此外,靜態(tài)變量還可以在靜態(tài)語句塊中初始化。靜態(tài)變量可以通過:ClassName.VariableName的方式訪問。類變量被聲明為public static final類型時,類變量名稱必須使用大寫字母。如果靜態(tài)變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。靜態(tài)變量舉例public class Employee /salary是靜態(tài)的私有變量 private static double salary; / DEPARTMENT是一個常量 public static final String DEPARTMENT =
36、Development ; 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í)行某個代碼塊順序結(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(條件表
37、達(dá)式)語句塊1else 語句塊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被求值expres
38、ion1為假,則expresion3被求值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)算符返回一個值2.3 if-else內(nèi)部嵌套if(條件表達(dá)式)語句塊1else語句塊2替換替換If(條件表達(dá)式) 語句塊1else 語句塊2If(條件表達(dá)式) 語句塊3else 語句塊
39、4if(條件表達(dá)式) if(條件表達(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之間時執(zhí)行 System.out.println(“中年); else System.out.println(老年); 嵌套再嵌套多層嵌套可以無窮次嵌套嗎?2.4 if-else多級嵌套u(yù)if-else多級嵌套if(
40、條件表達(dá)式)語句塊1else if(條件表達(dá)式)語句塊2else語句塊3else后面再寫if-else語句if-else多級嵌套class Example3_7 public static void main(String args) /定義年齡變量 int age = 4; if(age=18 & age=35 & age55) /當(dāng)年齡在3555之間時執(zhí)行 System.out.println(“中年); else/當(dāng)年齡大于55時 System.out.println(老年); (1)判斷條件是否成立(2)如果 步驟(1)中條件不成立,則判斷此條件(3)如果步驟(1)和(
41、2)中的條件均不成立,則判斷此條件(4)以上條件都不滿足則執(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)點在于可以利用switch的開關(guān)功能來實現(xiàn)批處理增加了代碼的可讀性使代碼更容易編寫性能更高n但缺點是:不能實現(xiàn)嵌套判斷練習(xí)分別用 if 和sw
42、itch 語句判斷某個月份的天數(shù)。循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu):根據(jù)邏輯重復(fù)執(zhí)行某個代碼塊循環(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ù)
43、定的次數(shù)執(zhí)行語句或語句塊for(initialization; condition; iteration) 循環(huán)體 增加或減少循環(huán)變量的一個表達(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語句與continu
44、e語句 ubreak語句n除了可以用在switch語句中,還可以用在循環(huán)體中n在循環(huán)體中遇見break語句時,立即結(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(第一個能被123整除的數(shù)是+i); 如果條件成立,執(zhí)行break語句break語句與continue語句ucontinue語句u用于結(jié)束本次
45、循環(huán),即在循環(huán)體中遇見continue語句,則循環(huán)體中continue語句后面的語句不會執(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(第一個能被123整除的數(shù)是+i); 如果條件成立,執(zhí)行continue語句3.5 嵌套循環(huán) u嵌套循環(huán)class Nested public static void ma
46、in(String args) int i, j;for (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 Excepti
47、on(Runtime Exception)checkedchecked異常:異常: 表示無效,不是程序中可以預(yù)測的。比如無效的用戶輸入,文件不存在,網(wǎng)絡(luò)或者數(shù)據(jù)庫鏈接錯誤。這些都是外在的原因,都不是程序內(nèi)部可以控制的。 必須在代碼中顯式地處理。比如try-catch塊處理,或者給所在的方法加上throws說明,將異常拋到調(diào)用棧的上一層。 繼承自java.lang.Exception(java.lang.RuntimeException除外)。unchecked異常:表示錯誤,程序的邏輯錯誤。是RuntimeException的子類,比如IllegalArgumentException, Nul
48、lPointerException和IllegalStateException。不需要在代碼中顯式地捕獲unchecked異常做處理。繼承自java.lang.RuntimeException(而java.lang.RuntimeException繼承自java.lang.Exception)。異常處理的一般結(jié)構(gòu) try / 可能發(fā)生異常的代碼 / 如果發(fā)生了異常,那么異常之后的代碼都不會被執(zhí)行 catch (Exception e) / 異常處理代碼 finally / 不管有沒有發(fā)生異常,finally語句塊都會被執(zhí)行 個try后面可以跟多個catch,但不管多少個,最多只會有一個最多只會
49、有一個catch塊被執(zhí)行。塊被執(zhí)行。一uString類 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類的對象。雖然它的實體也是“Hello World!
50、”,但它與str1、str2占用不同的內(nèi)存地址String類方法名功能描述length()返回此字符串的長度subString(int beginIndex)返回一個新字符串,它是此字符串的子字符串valueOf(int i)返回相應(yīng)類型的字符串表示形式compareTo(String anotherString)比較兩個字符串的大小equals(Objects anObject)比較兩個字符串是否相等concat(String str)拼接字符串charAt(int index)返回指定索引處的 char 值endsWith(String suffix)測試此字符串是否以指定的后綴結(jié)束for
51、mat(String format, Object. args)使用指定的格式字符串和參數(shù)返回一個格式化字符串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=st
52、r2.length();int l3=str3.length();System.out.println(str1的長度為:+l1);System.out.println(str2的長度為:+l2);字符串為null時,表示這個字符串對象不存在,所以不能調(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é)果
53、為:World123String類u舉例演示valueOf()方法和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(值相等); “=”用于判斷
54、兩個對象的引用是否相等“eques()”判斷實際對象是否相等運(yùn)算符“=”只能夠確定兩個字符串是否被放置在同一個位置只要對字符串進(jìn)行比較,最好都用equals()方法String類uString的“+”操作n運(yùn)算符”可直接用來實現(xiàn)字符串的連接,效果等同于concat()方法: int age = 20; String s = He is +age+ years old.; 其他類型的數(shù)據(jù)與字符串進(jìn)行+運(yùn)算時,將自動轉(zhuǎn)換成字符串StringBuffer類uStringBuffer類nString的實例為不可變對象,一旦被創(chuàng)建就不能修改它的值StringBuffer的實例是可變對象。對StringB
55、uffer進(jìn)行修改時不會重新創(chuàng)建對象StringBuffer類語法說明StringBuffer()創(chuàng)建一個空的可變字符串,起始容量為16個字符長度(默認(rèn)長度)StringBuffer(int index)以起始長度為index創(chuàng)建一個空的可變字符串StringBuffer(String str)創(chuàng)建一個可變字符串,初始化為stru創(chuàng)建StringBuffer對象n構(gòu)造方法class Test public static void main(String args) StringBuffer str1=new StringBuffer();StringBuffer str2=new String
56、Buffer(20);StringBuffer str3=new StringBuffer(World);其長度為16,賦值時字符串長度不能超過16StringBuffer類方法名功能描述append(String str)將指定的字符串追加到此字符序列insert(int offset, String str) 將字符串插入此字符序列中setCharAt()創(chuàng)建一個可變字符串,初始化為strreverse() 將此字符序列用其反轉(zhuǎn)形式取代deleteCharAt(int index) 移除此序列指定位置的charuStringBuffer類相關(guān)方法StringBuffer類uappend()
57、方法class Test public static void 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(W
58、orld);sb.insert(2, 123);System.out.println(sb);第3個位置上插入“123”,位置下標(biāo)從0開始運(yùn)行結(jié)果為:Ms123tanfordString 練習(xí)統(tǒng)計一個字符串中大寫字母、小寫字母、數(shù)字的個數(shù) 統(tǒng)計 字符串“Hello java,i love java,”里 lo出現(xiàn)的次數(shù)。indexOf(sting str)包裝類基本數(shù)據(jù)類型包裝類byteBytebooleanBooleanshortShortcharCharacterintIntegerlongLongfloatFloatdoubleDoubleu包裝類: Java為每個基本類型都提供了包裝類
59、(Wrapper Class) 包裝類 Integer類常用的方法有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)換為in
60、t類型class Test public static void main(String args) /定義兩個數(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)換成整型包裝類 自動拆裝箱JDK從JDK1.5(5.0)版本之后引入了自動拆裝箱的語法,即系統(tǒng)將自動進(jìn)行基本數(shù)據(jù)類型和對應(yīng)包裝類型的轉(zhuǎn)換 class Test public static void main(String args) /int類型將自動轉(zhuǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國嵌入標(biāo)志燈數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國不銹鋼立式氧氣瓶推車數(shù)據(jù)監(jiān)測研究報告
- 河北省衡水市阜城實驗中學(xué)2024-2025學(xué)年高一下學(xué)期3月月考物理試題(含答案)
- 2019-2025年軍隊文職人員招聘之軍隊文職法學(xué)通關(guān)題庫(附答案)
- 遵守紀(jì)律合同范本(2篇)
- 健康產(chǎn)業(yè)智能化醫(yī)療設(shè)備研發(fā)方案設(shè)計
- 《化學(xué)元素周期表制作技巧分享》
- 小學(xué)生動物故事集征文
- 設(shè)計迭代流程圖表
- 基于物聯(lián)網(wǎng)技術(shù)的農(nóng)產(chǎn)品供應(yīng)鏈管理優(yōu)化方案
- 森林區(qū)劃 小班區(qū)劃(森林資源經(jīng)營管理)
- 馬克筆建筑快速表現(xiàn)
- 鐵路基礎(chǔ)知識考試題庫500題(單選、多選、判斷)
- 京東物流集團(tuán)介紹PPT
- 日本夏日祭活動鑒賞
- stm32F103寄存器整理列表
- 如何撰寫課程故事94
- 名?!稄?qiáng)基計劃》初升高銜接數(shù)學(xué)講義(上)
- GB/T 39988-2021全尾砂膏體制備與堆存技術(shù)規(guī)范
- GB/T 3452.2-2007液壓氣動用O形橡膠密封圈第2部分:外觀質(zhì)量檢驗規(guī)范
- GB/T 10051.1-2010起重吊鉤第1部分:力學(xué)性能、起重量、應(yīng)力及材料
評論
0/150
提交評論