java-7工具類及常用算法(49).ppt_第1頁
java-7工具類及常用算法(49).ppt_第2頁
java-7工具類及常用算法(49).ppt_第3頁
java-7工具類及常用算法(49).ppt_第4頁
java-7工具類及常用算法(49).ppt_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JAVA 程序設(shè)計,第9章 工具類及常用算法,1,9.1.1 Java基礎(chǔ)類庫,java.lang包是Java語言的核心類庫 java.io包是Java語言的標準輸入/輸出類庫 java.util包包括了Java語言中的一些低級的實用工具 ava.awt包是Java語言用來構(gòu)建圖形用戶界面(GUI)的類庫 java.applet包是用來實現(xiàn)運行于Internet瀏覽器中的Java Applet的工具類庫 包是Java語言用來實現(xiàn)網(wǎng)絡(luò)功能的類庫 其他包,2,9.1 Java語言基礎(chǔ)類,JDK API文檔,JDK API文檔可以從網(wǎng)站下載,安裝后,打開index.html即可 網(wǎng)上可以找到chm格式的,甚至中文版,3,9.1.2 Object類,Object類是Java程序中所有類的直接或間接父類 類java.lang.Object處于Java開發(fā)環(huán)境的類層次樹的根部,其他所有的類都直接或間接地為它的子類。該類定義了一些所有對象最基本的狀態(tài)和行為,包括與同類對象相比較,轉(zhuǎn)化為字符串等等。下面我們分別進行介紹(詳細用法大家可以查閱Java JDK的API)。,4,(1) equals( ),用來比較兩個對象是否相同,如果相同,則返回true,否則返回false,它比較的是兩個對象狀態(tài)和功能上的相同,而不是引用上的相同。 Integer one = new Integer (1); Integer anotherOne = new Integer (1); if (one.equals (anotherOne) System.out.println (“objects are equal”); 例中,equals( )方法返回true,因為對象One和anotherOne 包含相同的整數(shù)值1.,5,(2) getClass ( ),getClass ( )方法是final方法,它不能被重載。它返回一個對象在運行時所對應(yīng)的類的表示,從而可以得到相應(yīng)的信息。下面的方法得到并顯示對象的類名: void PrintClassName( Object obj ) System.out.println(“ The objects class is “ + obj.getClass( ).getName( ) ); ,6,(3) toString( ),toString( )方法用來返回對象的字符串表示,可以用來顯示一個對象。例如: System.out.println ( Thread.currentThread ( ).toString ( ) ); 可以顯示當前的線程。 通過重載toString ( )方法可以適當?shù)仫@示對象的信息以進行調(diào)試。,7,Object類的toString()方法,當System.out.println()方法的參數(shù)為Object類型,println()會自動調(diào)用Object對象的toString()方法,然后打印toString()方法返回的字符串。 System.out.println(new Object().toString(); 等價于: System.out.println(new Object();,8,覆蓋父類的函數(shù)(P195/例9-6),public String toString() return(“電話卡接入號碼:“ + connectNumber +“n 電話卡卡號:“ + cardNumber +“n 電話卡密碼:“ + password +“n 卡中的金額:“ + balance +“n 通話附加費:“ + additoryFee); ,9,9.1.3 基本數(shù)據(jù)類型的包裝類,Java的基本數(shù)據(jù)類型用于定義簡單的變量和屬性將十分方便,但為了與面向?qū)ο蟮沫h(huán)境一致,Java中提供了基本數(shù)據(jù)類型的包裝類(wrapper),它們是這些基本類型的面向?qū)ο蟮拇?。與8種基本數(shù)據(jù)類型相對應(yīng),基本數(shù)據(jù)類型的包裝類也有8種,分別是:Character,Byte,Short,Integer,Long,F(xiàn)loat,Double,Boolean。,10,6.1.2 數(shù)據(jù)類型類,表6-1 數(shù)據(jù)類型類及對應(yīng)的基本數(shù)據(jù)類型,11,P98,這幾個類有以下共同特點。 (1)這些類都提供了一些常數(shù),以方便使用,如Integer.MAX_VALUE(整數(shù)最大值), Double.NaN(非數(shù)字),Double. POSITIVE_INFINITY(正無窮)等。 (2)提供了valueOf(String),toString(),用于從字符串轉(zhuǎn)換及或轉(zhuǎn)換成字符串。 (3)通過xxxxValue()方法可以得到所包裝的值,Integer對象的intValue()方法。 (4)對象中所包裝的值是不可改變的(immutable)。要改變對象中的值只有重新生成新的對象。 (5)toString(), equals()等方法進行了覆蓋。 除了以上特點外,有的類還提供了一些實用的方法以方便操作。例如,Double類就提供了更多的方法來與字符串進行轉(zhuǎn)換。,12,/double轉(zhuǎn)成string的幾種方法 d=3.14159; s = “ + d; s = Double.toString( d ); s = new Double(d).toString(); s = String.valueOf( d ); / String轉(zhuǎn)成double的幾種方法 s = “3.14159“; try d = Double.parseDouble( s ); d = new Double(s).doubleValue(); d = Double.valueOf( s ).doubleValue(); catch(NumberFormatException e ) e.printStackTrace(); ,13,(4)String與 int 量相互轉(zhuǎn)化 public String toString ( ) 將當前對象所對應(yīng)的 int 量轉(zhuǎn)化成字符串; public static int parseInt (String s) 類方法,將字符串轉(zhuǎn)化成 int 量; public static Integer valueOf (String s) 類方法,將字符串轉(zhuǎn)化成 Integer 對象,該對象對應(yīng)的 數(shù)值與字符串表示的數(shù)值一致;,14,所有數(shù)據(jù)類型類都是最終類。除 Boolean 類和 Character 類是 Object 類的直接子類外,其他類都是抽象類 Number 類的子類,與 Integer 類相似的屬性和方法。 例從字符串轉(zhuǎn)成其它基本數(shù)據(jù)類型; int i = Integer . parseInt (“123”) ; int i = Integer . valueOf (“123”) . intValue ( ) ; float f = Float . valueOf (“1 . 23”) . floatValue ( ) ; boolean b = Boolean . valueOf (“true”) . booleanValue ( ) ;,15,9.9.3 自動裝箱與拆箱,在JDK1.5以上的版本中則可以自動地進行裝箱和拆箱:自動裝箱是指基本類型自動轉(zhuǎn)為包裝類(如int轉(zhuǎn)為Integer);自動拆箱是指包裝類自動轉(zhuǎn)為基本類型 (如Integer轉(zhuǎn)為int) int a = 3; ArrayList ary = new ArrayList(); ary.add(a); /裝箱:int自動轉(zhuǎn)換成Integer對象作為add方法的參數(shù) int c = (Integer)ary.get(0); / 拆箱:Integer自動轉(zhuǎn)換成int賦值給變量c,16,P100,341,Math 類,特點:1)提供實現(xiàn)標準數(shù)學(xué)函數(shù)的方法,用來完成常用數(shù)學(xué)運算; 2)使用方法全部是 static 方法,可直接采用類名調(diào)用; public final static double E ; / 數(shù)學(xué)常量 e public final static double PI ; / 圓周率 public static double abs (double a) ; / 絕對值 public static double acos (double a) ; / 反余弦 public static double exp (double a) ; / e 的 a 次冪 public static double floor (double a) ; / 不大于 a 的最大整數(shù) public static double IEEEremainder (double f1, double f2) ; / 求余,17,public static double log (double a) ; / 自然對數(shù) public static double max (double a, double b) ; / 最大值 public static double random ( ) ; / 返回帶正號的 double 值,大于或等于 0.0,小于 1.0。 public static double rint (double a) ; / 四舍五入 public static double sqrt (double a) ; / 平方根 例 求 1100 之間的一個隨機數(shù) int i = (int) (Math . random ( )* 100 )+1 ; 產(chǎn)生一個x1,x2內(nèi)的隨機整數(shù)x x=(int)(Math.random()*(x2-x1+1)+x1) Math.random()產(chǎn)生一個0,1)區(qū)間內(nèi)的實數(shù),18,System 類,public final class System extends Object 特點:System 類不能繼承,且所有屬性和方法都是 static 的。 用 System 類獲取標準輸入/輸出 public static InputStream in ; / 標準輸入 public static PrintStream out ;/ 標準輸出 public static PrintStream err ;/ 標準錯誤輸出 例: char c = System . in . read ( ) ; System . out . println (“Hello !”) ;,19,P319,用 System 類的方法獲取系統(tǒng)信息,完成系統(tǒng)操作 public static long currentTimeMillis ( ) : 獲取自 1970 年 1 月 1 日零時至當前系統(tǒng)時刻的微秒數(shù); public static void exit ( int status ) : 強制 Java 虛擬機退出運行; public static void gc ( ) : 強制調(diào)用 Java 虛擬機的垃圾回收功能;,20,9. 2 字符串,程序中需要用到的字符串可以分為兩大類,一類是創(chuàng)建之后不會再做修改和變動的字符串常量;另一類是創(chuàng)建之后允許再做更改和變化的字符串。前者是String類,后者是StringBuffer類。,21,9.2.1 String類,String 類對象保存不可修改(immutable)的Unicode字符序列 String類的下述方法能創(chuàng)建并返回一個新的String對象: concat, replace, substring, toLowerCase, toUpperCase, trim,String. 提供查找功能的有關(guān)方法: endsWith, startsWith, indexOf,,lastIndexOf. 提供比較功能的方法: equals, equalsIgnoreCase, 其它方法: charAt ,length.,22,P189,6.5 字符串 (String),String 類表示字符串常量(創(chuàng)建之后不能改變)。 (比較:字符串變量 StringBuffer) 創(chuàng)建字符串常量 String 對象 String 類有11個構(gòu)造函數(shù)。具有代表性的如: public String ( ) -分配一個空字符串。 public String (String value) - 構(gòu)造一個與value相同的String; public String (StringBuffer buffer) - 構(gòu)造一個與 StringBuffer 內(nèi)容相同的String; public String (char value ) 由字符數(shù)組構(gòu)造;,23,對象聲明: String s ; 對象創(chuàng)建: s = new String (“abc”) ; 聲明與創(chuàng)建合并: String s = new String (“abc”) ; 以賦值的形式聲明和創(chuàng)建:String s = “abc” ; String 類的函數(shù): public int length ( ) : 求字符串長度。 例 String s = “Hello!” ; System .out .println (s .length ( );,24,判斷字符串的前綴和后綴 public boolean startsWith ( String prefix) ; public boolean endsWith ( String prefix) ; 判斷當前字符串的前綴和后綴是否是指定的字符子串。 例如,可以利用這兩個方法來區(qū)分新老電話用戶,或由居民身份證的最后一位數(shù)字判斷性別(奇數(shù)為男性,偶數(shù)為女性): if (s. endsWith(“0”) | s. endsWith(“2”) | s. endsWith(“4”) | s. endsWith(“6”) | s. endsWith(“8”) ) System .out .println (“ 此人是女性”) ;,25,字符串中單個字符的查找 public int indexOf ( int ch ); public int indexOf ( int ch , int fromIndex); public int lastIndexOf ( int ch ); public int lastIndexOf ( int ch , int fromIndex); 查找當前字符串中某特定字符出現(xiàn)的位置。前兩個方法是由前向后查找,后兩個方法是由后向前查找,并返回字符出現(xiàn)的位置。若找不到,返回 1。,26,例:找出字符 a 在字符串中的所有出現(xiàn)位置: String s = “Java 是面向?qū)ο蟮恼Z言,JavaScript 是腳本語言” ; int i = -1; do i = s. indexOf (int)a, i+1) ; System .out .print ( i+”t”) ; while (i != -1) ; 運行結(jié)果是: 1 3 14 16 -1,27,子串 查找 public int indexOf ( String str ); public int indexOf ( String str, int fromIndex ); public int lastIndexOf ( String str ); public int lastIndexOf ( String str, int fromIndex ); 查找某特定字符子串在當前字符串中出現(xiàn)的位置。,28,例找出字符子串“語言”在字符串 s 中的所有出現(xiàn)位置: String s = “Java 是面向?qū)ο蟮恼Z言,JavaScript 是腳本語言” ; String sub =“語言” ; for ( int i =s. length ( ); i != -1; ) i = s. lastIndexOf (sub, i -1) ; System .out .print ( i+”t”) ; 運行結(jié)果是: 26 10 -1,29,字符串 比較 public int compareTo ( String anotherString ) : 相同,返回 0 ; 字母序大于,返回大于 0 的整數(shù); 反之,返回小于 0 的整數(shù); public boolean equals ( Object anObject ) :覆蓋 Object 類的方法; public boolean equalsIgnoreCase ( String anotherString ) :不區(qū)分字母大小寫。 例:P189-191,例9-1,例9-3,30,連接字符子串 public String concat ( String str ) :參數(shù)字符串連接在當前字符串尾部,并返回連接而成的長字符串,但當前字符串不變。 例String s = “Hello !” ; System .out .println (s.concat (“ World !” ) ); System .out .println ( s ) ; 輸出為: Hello! World! Hello!,31,substring():返回字符串的一個子字符串。 public String subString(int beginIndex) public String subString(int beginIndex,int endIndex) 子串在源串的起始位置為beginIndex,結(jié)束為endIndex-1。如沒有提供endIndex,則結(jié)束位置為:字符串長度1。,32,9.2.2 StringBuffer類 (P201),StringBuffer類對象保存可修改的Unicode字符序列 構(gòu)造方法 StringBuffer() StringBuffer(int capacity) StringBuffer(String initialString) 實現(xiàn)修改操作的方法: append, insert, reverse, setCharAt, setLength.,33,StringBuffer 類 可以擴充和修改的字符串變量; 創(chuàng)建 public StringBuffer( ):構(gòu)造一個空 StringBuffer 對象。 public StringBuffer( int length ):構(gòu)造一個初始容量 為 length 的 StringBuffer 對象。 public StringBuffer( String str ):構(gòu)造一個所包含字符序列 與 String 參數(shù) str 相同的 StringBuffer 對象;,34,字符串變量的擴充、修改 (1)public StringBuffer append ( 參數(shù)類型 參數(shù)對象名 ) ; 將指定參數(shù)對象轉(zhuǎn)化成字符串,附加在原 StringBuffer 字符串對象之后。 (2)public StringBuffer insert (int 插入位置,參數(shù)類型 參數(shù)對象名) ; 在指定位置插入給定的參數(shù)對象所轉(zhuǎn)化而成的字符串。,35,StringBuffer buf = new StringBuffer ( ) ; buf . append (“Hello, Guys !”) ; System . out . println (buf . toString ( ) ; buf . insert (6,30) ; System . out . println (buf . toString ( ) ; 輸出的結(jié)果是: Hello, Guys ! Hello, 30 Guys !,字符串的賦值和加法 例 String str = “Hello,” ; str = str + “Guys !” ; 問題:String 為字符常量,如何進行字符串連接的? Java 中如下處理: String str = “Hello,” ; 等價于:String str = new StringBuffer( ) . append (“Hello,”) . toString ( ) ; str = str + “Guys !” ; 等價于:str = new StringBuffer ( ) . append (str) . append(“Guys !”) . toString ( ) ;,36,比較String類和StringBuffer類,String類不可編輯 StringBuffer類可編輯 String s1=new String(“abc”); s1.concat(“def”); StringBuffer sb1=new StringBuffer(“abc”); sb1.append(“def”); System.out.println(s1); System.out.println(sb1);,37,9.4 Scanner類 (p205),38,6.5.3 Java Application 命令行參數(shù) 功能命令行參數(shù)用來向 Java 應(yīng)用程序傳遞數(shù)據(jù)。 格式: java 主類名 參數(shù) 參數(shù) 參數(shù) 這些參數(shù)的類型都是 String 類型,它們保存在一個字符串數(shù)組中,并作為主類 main 方法的參數(shù) args 供程序使用。 注意事項: 當希望將命令行參數(shù)作為其他類型數(shù)據(jù)使用時,應(yīng)進行相應(yīng)的類型轉(zhuǎn)換 注意數(shù)組越界問題 例 class Hello public static void main(String args) System.out.println(args0+args1); 使用命令運行:java Hello name hello,39,1.設(shè)有以下代碼: String s1 = “XYZ“; String s2 = “XYZ“; String s3 = new String(“XYZ“); 則表達式s1=s2和s1=s3的值分別是( d ) A. true,true Bfalse,false Cfalse,true Dtrue,false 2.創(chuàng)建字符串s:String s=new String(“hello”);以下( d )語句將改變s。 A. s.append(“aaa”); B. s.concat(s); C. s.substring(3) D. 以上語句都不會,3. 一個異常處理中 finally語句塊只能有一個或者可以沒有。 A. 正確 B. 錯誤 4.下面的程序段執(zhí)行后輸出的結(jié)果是( )。 StringBuffer buf=new StringBuffer(“Beijing2008“); buf.insert(7,“); System.out.println(buf.toString(); A. Beijing2008 BBeijing2008 CBeijing2008 DBeijing#2008,41,5. (A)類是所有異常類的父類。 A.Throwable B. Error C. Exception D. AWTError 6.設(shè)有兩個字符串對象str1和str2,則表達式“str1 = str2”的意義是判別字符串 str1 和str2 比較的引用 false 。,42,7下列關(guān)于運行字節(jié)碼文件的命令行參數(shù)的描述中,正確的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論