Java程序設計-8-常用類及開源工具課件_第1頁
Java程序設計-8-常用類及開源工具課件_第2頁
Java程序設計-8-常用類及開源工具課件_第3頁
Java程序設計-8-常用類及開源工具課件_第4頁
Java程序設計-8-常用類及開源工具課件_第5頁
已閱讀5頁,還剩95頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java程序設計常用類及開源工具Java程序設計常用類及開源工具1學習目標理解Object掌握System類掌握String與StringBuffer了解正則表達式掌握日期處理機制了解定時器掌握隨機類Random掌握數(shù)值類了解開源代碼通過JFreeChart了解如何使用圖形繪制類庫學習目標理解Object21.ObjectObject類是所有Java類(系統(tǒng)提供的,第三方類庫、用戶自定義的)的根類。publicclassObject{publicObject(){…}publicfinalClass<?extendsObject>getClass(){…}publicinthashCode(){…}publicbooleanequals(Objectobj){…}protectedObjectclone()throwsCloneNotSupportedException{…}publicStringtoString(){…}publicfinalvoidnotify(){…}publicfinalvoidnotifyAll(){…}publicfinalvoidwait(…)throwsInterruptedException{…}protectedvoidfinalize()throwsThrowable{…}}1.ObjectObject類是所有Java類(系統(tǒng)提3對象的哈希碼-hashCode()每個對象都有自己的哈希碼,利用這個哈希碼可以表示一個對象。在Object提供的hashCode()的缺省實施通過將對象的內(nèi)存地址對映于一個整數(shù)值來生成。如果兩個對象是相等的,它們必須有相同的hashCode()值對象的哈希碼-hashCode()4toString()方法如:System.out.println(student)輸出:chap5.sample.Postgraduate@1172e08對象間的相等性比較-euqals()和”==”對于兩個對象引用變量,equals()比較的是邏輯意義,而不是判斷兩個引用變量是否是一個對象。但是“==”則判斷的是兩端的引用變量是否是引用一個對象對于兩個字符串,“==”返回true,例如“hello”==“hello”的結果是true。數(shù)值類對象和字符串對象之間的邏輯性相等判斷,比較的是它們各自的狀態(tài)(值),所以只要兩個對象的值相同,equals()就返回true,但是只要不是引用的同一個對象,"=="返回falsetoString()方法5"hello"=="hello"truenewString("hello")==newString("hello")flasestr1==str2flasestr1.equals(str2)truestr1==str3truestr1.equals(str3)truea==bflasea.equals(b)truestudent1==student2flasestudent1.equals(student2)truestudent1==student3truestudent1.equals(student3)true"hello"=="hello"truenewString6clone()方法如何復制對象本身最基本的作法:實現(xiàn)java.lang.Cloneable(Interface)//要實現(xiàn)CloneablepublicclassPointimplementsCloneable{…publicObjectclone()throwsCloneNotSupportedException{//呼叫父類別的clone()來進行復制returnsuper.clone();}}clone()方法如何復制對象本身72.System類System包含了一些我們常用的方法與成員變量。System不能被實例化,所有的方法都可以直接引用。在System類提供的設施中,有標準輸入、標準輸出和錯誤輸出流;對外部定義的屬性和環(huán)境變量的訪問;加載文件和庫的方法;還有快速復制數(shù)組的一部分的實用方法2.System類System包含了一些我們常用的方法與82.System類(cont.)staticPrintStreamerr“標準”錯誤輸出流。默認是顯示器staticInputStreamin“標準”輸入流。默認是鍵盤staticPrintStreamout“標準”輸出流。默認是顯示器arraycopy()指定源數(shù)組中復制一個數(shù)組,復制從指定的位置開始,到目標數(shù)組的指定位置結束。getProperties()確定當前的系統(tǒng)屬性。loadLibrary(Stringlibname)加載由libname參數(shù)指定的系統(tǒng)庫。將庫名映射到實際系統(tǒng)庫的方法取決于系統(tǒng)currentTimeMillis

()返回以毫秒為單位的當前時間setErr(PrintStreamerr)新分配“標準”錯誤輸出流。setIn(InputStreamin)重新分配“標準”輸入流。setOut(PrintStreamout)重新分配“標準”輸出流。2.System類(cont.)staticPrint93.String與StringBuffer字符串常量是一個用雙引號(“”)括起來的字符序列編譯器會為每一個字符串常量創(chuàng)建對象。另外,字符串常量中可以包含一些不能從鍵盤上輸入的字符,這涉及到字符轉義。例如:"Thisisa\u03c0"實際上就是"Thisisaπ"另外,還需要提醒注意的是:字符串中的所有字符都是Unicode字符,所以每個字符均占兩個字節(jié)。3.String與StringBuffer字符串常量是一10字符串常量和字符串對象是兩個不同的概念,字符串常量有在內(nèi)存當中由編譯器分配的固定區(qū)域,保存有字符序列。而字符串對象只是一個引用,所以不能通過字符串對象對常量進行修改,例如:Stringstr="Thisisastringliteral";str="Thisisotherstringliteral";另一個例子:Stringstr1="Thisisastringliteral";Stringstr2="Thisis"+"astringliteral";實際上str1和str2指向了同一引用字符串常量和字符串對象是兩個不同的概念,字符串常量有在內(nèi)存當11字符串運算字符串連接、比較、分割、子串的查詢等連接(+)值比較(equals(),compareTo())對象比較==提取、檢索、分割字符串charAt()、substring()indexOf();split()構造格式化字符串publicstaticStringformat(Stringformat,Object...args)字符串運算12StringBuffer因為String對象是不能修改的,Java語言提供了另外一個能夠修改的類似字符串的字符串緩沖區(qū)類,就是StringBuffer。對于StringBuffer對象可以進行添加、刪除、替換等操作。StringBuffer因為String對象是不能修改的,J13創(chuàng)建StringBuffersbf=newStringBuffer();創(chuàng)建一個不帶字符的緩沖區(qū),默認容量為16個字符,隨著操作容量將發(fā)生變化。StringBuffersbf=newStringBuffer("初始化字符串");按照給定內(nèi)容創(chuàng)建一個緩沖區(qū),初始容量為16+字符長度。StringBuffersbf=newStringBuffer(256);創(chuàng)建一個具有初始容量的緩沖區(qū)。創(chuàng)建14追加字符串a(chǎn)ppend(...)方法是一個適應于基本類型和引用類型的方法。例如:sbf.append(10);sbf.append("additionalstring");刪除操作StringBufferdelete(int,int)StringBufferdeleteCharAt(int)增加操作StringBufferinsert(int,boolean|Object|…)替換操作StringBufferreplace(int,int,String)voidsetCharAt(int,char)

追加字符串15從StringBuffer到String基于一個StringBuffer對象的內(nèi)容創(chuàng)建字符串可以:Stringstr=newString(sbf);Stringstr=sbf.toString();;從StringBuffer到String164、正則表達式一個例子[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+)a+123.56,b.4,c-123+123.56.4-1234、正則表達式一個例子17java.util.regex是一個用正則表達式所訂制的模式來對字符串進行匹配工作的類庫。它包括兩個類:Pattern:是一個正則表達式經(jīng)編譯后的表現(xiàn)模式。Matcher:是一個狀態(tài)機器,它依據(jù)Pattern對象做為匹配模式對字符串展開匹配檢查。java.util.regex是一個用正則表達式所訂制的模式18publicclassRegxDemo{publicstaticvoidmain(String[]args){//定義正則表達式,以便匹配目標字符串

Stringregx="[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+)";//定義需要匹配的字符串Stringinput="a+123.56,b.4,c-123";Matchermatcher=null;//基于定義的正則表達式,創(chuàng)建一個模式對象

Patternpattern=Ppile(regx);//從模式創(chuàng)建匹配器

matcher=pattern.matcher(input);//循環(huán)獲得所有的匹配子串

while(matcher.find()){//輸出每一個匹配成功的子串序列System.out.println(matcher.group());}}}publicclassRegxDemo{19正則表達式是有普通字符,包括大小寫字母和數(shù)字以及一些具有特殊含義的符號組成的字符序列。簡單的如"str"、"str*",復雜的如下面的例子:"[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+)"這里面就包括了各種預先定義好的字符在起作用。(字符類、正則表達式內(nèi)的邏輯操作符、預定義字符類、量詞、邊界)正則表達式是有普通字符,包括大小寫字母和數(shù)字以及一些具有特殊20字符類(CharacterClasses)[abc]對應位置上可以是a、b、c三個字母任意一個[^abc]^取反,此模式意味著對應位置上可以是除a,b,c之外的任一字符[a-zA-Z]-范圍,此模式意味著對應位置上可以是大小寫字母[a-d[m-p]]并,此模式意味著對應位置上可以是a到d,或者m到p[a-z&&[def]]&&交,此模式意味著對應位置上可以是d,e,f[a-z&&[^bc]]a到z,排除b和c:等價于[ad-z][a-z&&[^m-p]]a到z,排除m到p:等價于[a-lq-z]字符類(CharacterClasses)[abc]對應位21正則表達式內(nèi)的邏輯操作符&&:此操作符把定義字符集的類所表達的共同字符范圍組織在一起。|:邏輯或,兩者選一。^:對后面的字符類取反,等價于排除定義字符類范圍的其它所有字符。正則表達式內(nèi)的邏輯操作符&&:此操作符把定義字符集的類所表22預定義字符類(PredefinedCharacterClasses)表8-9預定義字符類.任意一個字符\d一位數(shù)字,對應[0-9]\D非數(shù)字,對應[^0-9]\s空白字符或換行符,對應[\t\n\x0B\f\r]\S非空白字符,對應[^\s]\w單字字符(a~z、A~Z、0~9以及下劃線),對應[a-zA-Z_0-9]\W非單字字符(其它任意字符),對應[^\w]預定義字符類(PredefinedCharacterCl23量詞(Quantifiers)表8-10量詞?表示出現(xiàn)一次或根本不出現(xiàn)*表示出現(xiàn)零次或一次以上(含一次)+表示出現(xiàn)一次或多次{n}出現(xiàn)n次{n,}至少n次{n,m}n次,但不超過m次量詞(Quantifiers)表8-10量詞?表示出現(xiàn)一次24邊界表8-11邊界匹配器^一行的開始。例如查找每行開始的單詞,可以"^[a-zA-Z]+\\b"$一行的結束,查找位于行尾的單詞"[a-zA-Z]+$",如果有句號,可以"[a-zA-Z]+\\.$"\b\B單詞的邊界,查找單詞had可以"\\bhad\\b"非單詞邊界\A指定搜索文本的開始\G前一個匹配的結束\z指定要搜索的字符串的結尾。要查找字符串結尾處的單詞good和句號,可以"\\bgood\\.\\z"\Z表示除最后終止符以外的輸入結束。如果設置了UNIX_LINES模式,那么最后終止符就是"\n",否則,也可以是"\r"、\\r\\n、行分割符"\u2028"、段分割符"\u2029"邊界表8-11邊界匹配器^一行的開始。例如查找每行開始的單詞255日期處理abstractCalendar類是一個抽象類,它為特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH、HOURMINUTE等日歷字段之間的轉換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標準時間1970年1月1日的00:00:00.000,格里高利歷)的偏移量abstractTimeZone代表一個任意的從格林威治的偏移量,也包含了適用于夏令時(daylightsavingsrules)的信息abstractjava.text.DateFormat是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化并分析日期或時間。日期/時間格式化子類(如SimpleDateFormat)允許進行格式化(也就是日期->文本)、分析(文本->日期)和標準化。將日期表示為Date對象,或者表示為從GMT(格林尼治標準時間)1970年,1月1日00:00:00這一刻開始的毫秒數(shù)SimpleDateFormat是一個以與語言環(huán)境相關的方式來格式化和分析日期的具體類。它允許進行格式化(日期->文本)、分析(文本->日期)和規(guī)范化java.sql.Date繼承java.util.DateDate代表一個時間點.在許多應用中,此種抽象被稱為"TimeStamp."在標準的Java類庫實現(xiàn)中,這個時間點代表Unix紀元January1,1970,00:00:00GMT開始的毫秒數(shù).因而概念上來說,這個類是long的簡單封裝5日期處理abstractCalendar類是一個抽象類,266定時器創(chuàng)建定時任務importjava.util.TimerTask;publicclassMyTaskextendsTimerTask{intnumber=10;//控制任務執(zhí)行次數(shù)publicvoidrun(){if(number>0){System.out.println("Hi,ihasbeenstarted"); number--;}else{System.out.println("taskcompleted");System.exit(0);}}}6定時器創(chuàng)建定時任務27創(chuàng)建定時任務importjava.util.Timer;publicclassTimerDemo{publicstaticvoidmain(String[]args){Timertimer=newTimer();timer.schedule(newMyTask(),1000,2*1000);}}創(chuàng)建定時任務importjava.util.Timer;287RandomclassRandNumber{ publicstaticvoidmain(String[]args){for(inti=0;i<10;i++) System.out.print(""+(int)(Math.random()*100)); }}7RandomclassRandNumber{298數(shù)值和字符串Number類轉換數(shù)值到字符串轉換字符串到數(shù)值格式化數(shù)值8數(shù)值和字符串Number類30Number類及其數(shù)值的包裝類大多數(shù)情況,我們使用基本類型定義和使用變量:inta=10;當你需要一個數(shù)值類(包裝類)對象(提供一個整數(shù)列表、網(wǎng)絡傳輸?shù)龋r,當你需要某種數(shù)值類的普遍方法或值時,如Float.NEGATIVE_INFINITYNumber類及其數(shù)值的包裝類大多數(shù)情況,我們使用基本類型定31數(shù)值包裝類的構造函數(shù)Integer(intvalue)構造一個新分配的Integer對象,它表示指定的int值。Integer(Strings)構造一個新分配的Integer對象,它表示String參數(shù)所指示的int值。數(shù)值包裝類的構造函數(shù)Integer(intvalue)32自動包裝/拆箱Integera=5;inti=a;自動包裝/拆箱Integera=5;33轉換數(shù)值到字符串staticStringtoBinaryString(inti)以二進制(基數(shù)2)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。staticStringtoHexString(inti)以十六進制的無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。staticStringtoOctalString(inti)以八進制(基數(shù)8)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。StringtoString()返回一個表示該Integer值的String對象。staticStringtoString(inti)返回一個表示指定整數(shù)的String對象。staticStringtoString(inti,intradix)用第二個參數(shù)指定的基數(shù)返回第一個參數(shù)的字符串表示形式轉換數(shù)值到字符串staticStringtoBinary34轉換字符串到數(shù)值static

IntegervalueOf(String

s)返回保持指定的String的值的Integer對象。staticintparseInt(Strings)將字符串參數(shù)作為有符號的十進制整數(shù)進行分析轉換字符串到數(shù)值static

IntegervalueOf35格式化數(shù)值NumberFormat是所有數(shù)字格式的抽象基類。此類提供了格式化和分析數(shù)字的接口。為了格式化當前語言環(huán)境的數(shù)字,要使用一個工廠類方法:NumberFormatnf=NumberFormat.getInstance();要格式化不同語言環(huán)境的日期NumberFormatnf=NumberFormat.getInstance(Locale.FRENCH);格式化數(shù)值NumberFormat是所有數(shù)字格式的抽象基類36格式化數(shù)值(cont.)parseObject(String

source,ParsePosition

pos)

分析字符串中的文本,以生成一個Number。

voidsetCurrency(Currency

currency)

獲取格式化貨幣值時此數(shù)字格式使用的貨幣。

voidsetMaximumFractionDigits(int

newValue)設置數(shù)的小數(shù)部分的最大位數(shù)。

voidsetMaximumIntegerDigits(int

newValue)

設置數(shù)的整數(shù)部分允許的最大位數(shù)。

voidsetMinimumFractionDigits(int

newValue)

設置數(shù)的小數(shù)部分允許的最小位數(shù)。

voidsetMinimumIntegerDigits(int

newValue)

設置數(shù)的整數(shù)部分允許的最小位數(shù)。

voidsetParseIntegerOnly(boolean

value)

設置數(shù)是否應該僅作為整數(shù)來分析。格式化數(shù)值(cont.)parseObject(String37格式化示例下面的語句創(chuàng)建一個模式“000.00”的DecimalFormat實例NumberFormatnf=NumberFormat.getInstance();DecimalFormatdf=(DecimalFormat)nf;如:df.applyPattern(“000.00”);df.format(30.8989)返回030.90再如:df.applyPattern("00.00%");df.format(0.308989)返回30.90%格式化示例下面的語句創(chuàng)建一個模式“000.00”的Decim38Java程序設計基于開源工具包開發(fā)應用程序Java程序設計基于開源工具包開發(fā)應用程序39如何在程序中引用工具包開發(fā)獨立的應用程序在CLASSPATH環(huán)境變量中,指定JAR文件的位置如:CLASSPATH=%CLASSPATH%;d:/javalib/jexcelapi/jxl.jar開發(fā)運行在特定容器(Web服務器等)中的程序將jar文件放置在特定目錄下在程序中,用import語句引用其中的類如何在程序中引用工具包開發(fā)獨立的應用程序40示例,創(chuàng)建統(tǒng)計圖1、放置指定的jar文件到合適位置2、修改classpath環(huán)境變量3、開始編程,注意查看對應的示例代碼和參考文檔示例,創(chuàng)建統(tǒng)計圖1、放置指定的jar文件到合適位置41示例代碼//創(chuàng)建餅型統(tǒng)計圖publicclassChartDemo{privateDefaultPieDatasetinitPieDataSet(){DefaultPieDatasetdataset=newDefaultPieDataset();dataset.setValue("<60",5);dataset.setValue("60-69",10);dataset.setValue("70-79",15);dataset.setValue("80-89",10);dataset.setValue("90-100",5);returndataset;}

示例代碼//創(chuàng)建餅型統(tǒng)計圖42示例代碼(cont.)publicvoidcreatePieChart(){DefaultPieDatasetdata=initPieDataSet();JFreeChartchart=ChartFactory.createPieChart3D("學生成績統(tǒng)計圖",data,true,false,false);//確定將要輸出的圖形文件Filefile=newFile("d:/pie.jpg");try{ChartUtilities.saveChartAsJPEG(file,chart,400,300);}catch(IOExceptione){e.printStackTrace();}}示例代碼(cont.)publicvoidcreateP43示例代碼(cont.)//需要加載的類importorg.jfree.data.general.DefaultPieDataset;importorg.jfree.data.category.CategoryDataset;importorg.jfree.data.category.DefaultCategoryDataset;importorg.jfree.chart.ChartUtilities;importorg.jfree.chart.JFreeChart;importorg.jfree.chart.ChartFactory;importorg.jfree.chart.plot.PlotOrientation;importjava.io.File;importjava.io.IOException;示例代碼(cont.)//需要加載的類44Excel處理加載所需的類importjava.io.File;importjxl.write.WritableCellFormat;importjxl.write.WritableFont;importjxl.write.WritableWorkbook;importjxl.Workbook;importjxl.format.Alignment;Excel處理加載所需的類45Excel處理(cont.)創(chuàng)建Sheet,并初始化WritableWorkbookworkbook=null;jxl.write.WritableSheetws=null; workbook=Workbook.createWorkbook(newFile("d:/exceldemo.xls"));ws=workbook.createSheet("學生成績表",0);ws.setRowView(0,400);//設置行高ws.setColumnView(0,40);//設置列寬ws.setColumnView(1,40);ws.setColumnView(2,40);ws.setColumnView(3,40);Excel處理(cont.)創(chuàng)建Sheet,并初始化46Excel處理(cont.)創(chuàng)建表頭WritableFontwf=newWritableFont(WritableFont.TIMES,14,WritableFont.BOLD,true);WritableCellFormatcf=newWritableCellFormat(wf);cf.setAlignment(Alignment.CENTRE);label=newjxl.write.Label(0,0,"2007-2008學年第一學期Java成績表",cf);ws.addCell(label);ws.mergeCells(0,0,3,0);//wf=null;cf=null;Excel處理(cont.)創(chuàng)建表頭47Excel處理(cont.)設置ColumnHeaderwf=newWritableFont(WritableFont.TIMES,10,WritableFont.NO_BOLD,true);cf=newWritableCellFormat(wf);label=newjxl.write.Label(0,2,"學號");ws.addCell(label);label=newjxl.write.Label(1,2,"期中成績");ws.addCell(label);label=newjxl.write.Label(2,2,"期末成績");ws.addCell(label);label=newjxl.write.Label(3,2,"總評成績");ws.addCell(label);Excel處理(cont.)設置ColumnHeader48Excel處理(cont.)批量增加數(shù)據(jù)到Excelfor(intline=3;line<30;line++){jxl.write.Labellabel0=newjxl.write.Label(0,line,"00"+Integer.toString(line));ws.addCell(label0);jxl.write.Numberlabel2=newjxl.write.Number(1,line,line);ws.addCell(label2);jxl.write.Numberlabel3=newjxl.write.Number(2,line,line);ws.addCell(label3);jxl.write.Numberlabel4=newjxl.write.Number(3,line,line+line);ws.addCell(label4);}Excel處理(cont.)批量增加數(shù)據(jù)到Excel49Excel處理(cont.)輸出,并關閉文件workbook.write();workbook.close();Excel處理(cont.)輸出,并關閉文件50Java程序設計常用類及開源工具Java程序設計常用類及開源工具51學習目標理解Object掌握System類掌握String與StringBuffer了解正則表達式掌握日期處理機制了解定時器掌握隨機類Random掌握數(shù)值類了解開源代碼通過JFreeChart了解如何使用圖形繪制類庫學習目標理解Object521.ObjectObject類是所有Java類(系統(tǒng)提供的,第三方類庫、用戶自定義的)的根類。publicclassObject{publicObject(){…}publicfinalClass<?extendsObject>getClass(){…}publicinthashCode(){…}publicbooleanequals(Objectobj){…}protectedObjectclone()throwsCloneNotSupportedException{…}publicStringtoString(){…}publicfinalvoidnotify(){…}publicfinalvoidnotifyAll(){…}publicfinalvoidwait(…)throwsInterruptedException{…}protectedvoidfinalize()throwsThrowable{…}}1.ObjectObject類是所有Java類(系統(tǒng)提53對象的哈希碼-hashCode()每個對象都有自己的哈希碼,利用這個哈希碼可以表示一個對象。在Object提供的hashCode()的缺省實施通過將對象的內(nèi)存地址對映于一個整數(shù)值來生成。如果兩個對象是相等的,它們必須有相同的hashCode()值對象的哈希碼-hashCode()54toString()方法如:System.out.println(student)輸出:chap5.sample.Postgraduate@1172e08對象間的相等性比較-euqals()和”==”對于兩個對象引用變量,equals()比較的是邏輯意義,而不是判斷兩個引用變量是否是一個對象。但是“==”則判斷的是兩端的引用變量是否是引用一個對象對于兩個字符串,“==”返回true,例如“hello”==“hello”的結果是true。數(shù)值類對象和字符串對象之間的邏輯性相等判斷,比較的是它們各自的狀態(tài)(值),所以只要兩個對象的值相同,equals()就返回true,但是只要不是引用的同一個對象,"=="返回falsetoString()方法55"hello"=="hello"truenewString("hello")==newString("hello")flasestr1==str2flasestr1.equals(str2)truestr1==str3truestr1.equals(str3)truea==bflasea.equals(b)truestudent1==student2flasestudent1.equals(student2)truestudent1==student3truestudent1.equals(student3)true"hello"=="hello"truenewString56clone()方法如何復制對象本身最基本的作法:實現(xiàn)java.lang.Cloneable(Interface)//要實現(xiàn)CloneablepublicclassPointimplementsCloneable{…publicObjectclone()throwsCloneNotSupportedException{//呼叫父類別的clone()來進行復制returnsuper.clone();}}clone()方法如何復制對象本身572.System類System包含了一些我們常用的方法與成員變量。System不能被實例化,所有的方法都可以直接引用。在System類提供的設施中,有標準輸入、標準輸出和錯誤輸出流;對外部定義的屬性和環(huán)境變量的訪問;加載文件和庫的方法;還有快速復制數(shù)組的一部分的實用方法2.System類System包含了一些我們常用的方法與582.System類(cont.)staticPrintStreamerr“標準”錯誤輸出流。默認是顯示器staticInputStreamin“標準”輸入流。默認是鍵盤staticPrintStreamout“標準”輸出流。默認是顯示器arraycopy()指定源數(shù)組中復制一個數(shù)組,復制從指定的位置開始,到目標數(shù)組的指定位置結束。getProperties()確定當前的系統(tǒng)屬性。loadLibrary(Stringlibname)加載由libname參數(shù)指定的系統(tǒng)庫。將庫名映射到實際系統(tǒng)庫的方法取決于系統(tǒng)currentTimeMillis

()返回以毫秒為單位的當前時間setErr(PrintStreamerr)新分配“標準”錯誤輸出流。setIn(InputStreamin)重新分配“標準”輸入流。setOut(PrintStreamout)重新分配“標準”輸出流。2.System類(cont.)staticPrint593.String與StringBuffer字符串常量是一個用雙引號(“”)括起來的字符序列編譯器會為每一個字符串常量創(chuàng)建對象。另外,字符串常量中可以包含一些不能從鍵盤上輸入的字符,這涉及到字符轉義。例如:"Thisisa\u03c0"實際上就是"Thisisaπ"另外,還需要提醒注意的是:字符串中的所有字符都是Unicode字符,所以每個字符均占兩個字節(jié)。3.String與StringBuffer字符串常量是一60字符串常量和字符串對象是兩個不同的概念,字符串常量有在內(nèi)存當中由編譯器分配的固定區(qū)域,保存有字符序列。而字符串對象只是一個引用,所以不能通過字符串對象對常量進行修改,例如:Stringstr="Thisisastringliteral";str="Thisisotherstringliteral";另一個例子:Stringstr1="Thisisastringliteral";Stringstr2="Thisis"+"astringliteral";實際上str1和str2指向了同一引用字符串常量和字符串對象是兩個不同的概念,字符串常量有在內(nèi)存當61字符串運算字符串連接、比較、分割、子串的查詢等連接(+)值比較(equals(),compareTo())對象比較==提取、檢索、分割字符串charAt()、substring()indexOf();split()構造格式化字符串publicstaticStringformat(Stringformat,Object...args)字符串運算62StringBuffer因為String對象是不能修改的,Java語言提供了另外一個能夠修改的類似字符串的字符串緩沖區(qū)類,就是StringBuffer。對于StringBuffer對象可以進行添加、刪除、替換等操作。StringBuffer因為String對象是不能修改的,J63創(chuàng)建StringBuffersbf=newStringBuffer();創(chuàng)建一個不帶字符的緩沖區(qū),默認容量為16個字符,隨著操作容量將發(fā)生變化。StringBuffersbf=newStringBuffer("初始化字符串");按照給定內(nèi)容創(chuàng)建一個緩沖區(qū),初始容量為16+字符長度。StringBuffersbf=newStringBuffer(256);創(chuàng)建一個具有初始容量的緩沖區(qū)。創(chuàng)建64追加字符串a(chǎn)ppend(...)方法是一個適應于基本類型和引用類型的方法。例如:sbf.append(10);sbf.append("additionalstring");刪除操作StringBufferdelete(int,int)StringBufferdeleteCharAt(int)增加操作StringBufferinsert(int,boolean|Object|…)替換操作StringBufferreplace(int,int,String)voidsetCharAt(int,char)

追加字符串65從StringBuffer到String基于一個StringBuffer對象的內(nèi)容創(chuàng)建字符串可以:Stringstr=newString(sbf);Stringstr=sbf.toString();;從StringBuffer到String664、正則表達式一個例子[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+)a+123.56,b.4,c-123+123.56.4-1234、正則表達式一個例子67java.util.regex是一個用正則表達式所訂制的模式來對字符串進行匹配工作的類庫。它包括兩個類:Pattern:是一個正則表達式經(jīng)編譯后的表現(xiàn)模式。Matcher:是一個狀態(tài)機器,它依據(jù)Pattern對象做為匹配模式對字符串展開匹配檢查。java.util.regex是一個用正則表達式所訂制的模式68publicclassRegxDemo{publicstaticvoidmain(String[]args){//定義正則表達式,以便匹配目標字符串

Stringregx="[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+)";//定義需要匹配的字符串Stringinput="a+123.56,b.4,c-123";Matchermatcher=null;//基于定義的正則表達式,創(chuàng)建一個模式對象

Patternpattern=Ppile(regx);//從模式創(chuàng)建匹配器

matcher=pattern.matcher(input);//循環(huán)獲得所有的匹配子串

while(matcher.find()){//輸出每一個匹配成功的子串序列System.out.println(matcher.group());}}}publicclassRegxDemo{69正則表達式是有普通字符,包括大小寫字母和數(shù)字以及一些具有特殊含義的符號組成的字符序列。簡單的如"str"、"str*",復雜的如下面的例子:"[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+)"這里面就包括了各種預先定義好的字符在起作用。(字符類、正則表達式內(nèi)的邏輯操作符、預定義字符類、量詞、邊界)正則表達式是有普通字符,包括大小寫字母和數(shù)字以及一些具有特殊70字符類(CharacterClasses)[abc]對應位置上可以是a、b、c三個字母任意一個[^abc]^取反,此模式意味著對應位置上可以是除a,b,c之外的任一字符[a-zA-Z]-范圍,此模式意味著對應位置上可以是大小寫字母[a-d[m-p]]并,此模式意味著對應位置上可以是a到d,或者m到p[a-z&&[def]]&&交,此模式意味著對應位置上可以是d,e,f[a-z&&[^bc]]a到z,排除b和c:等價于[ad-z][a-z&&[^m-p]]a到z,排除m到p:等價于[a-lq-z]字符類(CharacterClasses)[abc]對應位71正則表達式內(nèi)的邏輯操作符&&:此操作符把定義字符集的類所表達的共同字符范圍組織在一起。|:邏輯或,兩者選一。^:對后面的字符類取反,等價于排除定義字符類范圍的其它所有字符。正則表達式內(nèi)的邏輯操作符&&:此操作符把定義字符集的類所表72預定義字符類(PredefinedCharacterClasses)表8-9預定義字符類.任意一個字符\d一位數(shù)字,對應[0-9]\D非數(shù)字,對應[^0-9]\s空白字符或換行符,對應[\t\n\x0B\f\r]\S非空白字符,對應[^\s]\w單字字符(a~z、A~Z、0~9以及下劃線),對應[a-zA-Z_0-9]\W非單字字符(其它任意字符),對應[^\w]預定義字符類(PredefinedCharacterCl73量詞(Quantifiers)表8-10量詞?表示出現(xiàn)一次或根本不出現(xiàn)*表示出現(xiàn)零次或一次以上(含一次)+表示出現(xiàn)一次或多次{n}出現(xiàn)n次{n,}至少n次{n,m}n次,但不超過m次量詞(Quantifiers)表8-10量詞?表示出現(xiàn)一次74邊界表8-11邊界匹配器^一行的開始。例如查找每行開始的單詞,可以"^[a-zA-Z]+\\b"$一行的結束,查找位于行尾的單詞"[a-zA-Z]+$",如果有句號,可以"[a-zA-Z]+\\.$"\b\B單詞的邊界,查找單詞had可以"\\bhad\\b"非單詞邊界\A指定搜索文本的開始\G前一個匹配的結束\z指定要搜索的字符串的結尾。要查找字符串結尾處的單詞good和句號,可以"\\bgood\\.\\z"\Z表示除最后終止符以外的輸入結束。如果設置了UNIX_LINES模式,那么最后終止符就是"\n",否則,也可以是"\r"、\\r\\n、行分割符"\u2028"、段分割符"\u2029"邊界表8-11邊界匹配器^一行的開始。例如查找每行開始的單詞755日期處理abstractCalendar類是一個抽象類,它為特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH、HOURMINUTE等日歷字段之間的轉換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標準時間1970年1月1日的00:00:00.000,格里高利歷)的偏移量abstractTimeZone代表一個任意的從格林威治的偏移量,也包含了適用于夏令時(daylightsavingsrules)的信息abstractjava.text.DateFormat是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化并分析日期或時間。日期/時間格式化子類(如SimpleDateFormat)允許進行格式化(也就是日期->文本)、分析(文本->日期)和標準化。將日期表示為Date對象,或者表示為從GMT(格林尼治標準時間)1970年,1月1日00:00:00這一刻開始的毫秒數(shù)SimpleDateFormat是一個以與語言環(huán)境相關的方式來格式化和分析日期的具體類。它允許進行格式化(日期->文本)、分析(文本->日期)和規(guī)范化java.sql.Date繼承java.util.DateDate代表一個時間點.在許多應用中,此種抽象被稱為"TimeStamp."在標準的Java類庫實現(xiàn)中,這個時間點代表Unix紀元January1,1970,00:00:00GMT開始的毫秒數(shù).因而概念上來說,這個類是long的簡單封裝5日期處理abstractCalendar類是一個抽象類,766定時器創(chuàng)建定時任務importjava.util.TimerTask;publicclassMyTaskextendsTimerTask{intnumber=10;//控制任務執(zhí)行次數(shù)publicvoidrun(){if(number>0){System.out.println("Hi,ihasbeenstarted"); number--;}else{System.out.println("taskcompleted");System.exit(0);}}}6定時器創(chuàng)建定時任務77創(chuàng)建定時任務importjava.util.Timer;publicclassTimerDemo{publicstaticvoidmain(String[]args){Timertimer=newTimer();timer.schedule(newMyTask(),1000,2*1000);}}創(chuàng)建定時任務importjava.util.Timer;787RandomclassRandNumber{ publicstaticvoidmain(String[]args){for(inti=0;i<10;i++) System.out.print(""+(int)(Math.random()*100)); }}7RandomclassRandNumber{798數(shù)值和字符串Number類轉換數(shù)值到字符串轉換字符串到數(shù)值格式化數(shù)值8數(shù)值和字符串Number類80Number類及其數(shù)值的包裝類大多數(shù)情況,我們使用基本類型定義和使用變量:inta=10;當你需要一個數(shù)值類(包裝類)對象(提供一個整數(shù)列表、網(wǎng)絡傳輸?shù)龋r,當你需要某種數(shù)值類的普遍方法或值時,如Float.NEGATIVE_INFINITYNumber類及其數(shù)值的包裝類大多數(shù)情況,我們使用基本類型定81數(shù)值包裝類的構造函數(shù)Integer(intvalue)構造一個新分配的Integer對象,它表示指定的int值。Integer(Strings)構造一個新分配的Integer對象,它表示String參數(shù)所指示的int值。數(shù)值包裝類的構造函數(shù)Integer(intvalue)82自動包裝/拆箱Integera=5;inti=a;自動包裝/拆箱Integera=5;83轉換數(shù)值到字符串staticStringtoBinaryString(inti)以二進制(基數(shù)2)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。staticStringtoHexString(inti)以十六進制的無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。staticStringtoOctalString(inti)以八進制(基數(shù)8)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。StringtoString()返回一個表示該Integer值的String對象。staticStringtoString(inti)返回一個表示指定整數(shù)的String對象。staticStringtoString(inti,intradix)用第二個參數(shù)指定的基數(shù)返回第一個參數(shù)的字符串表示形式轉換數(shù)值到字符串staticStringtoBinary84轉換字符串到數(shù)值static

IntegervalueOf(String

s)返回保持指定的String的值的Integer對象。staticintparseInt(Strings)將字符串參數(shù)作為有符號的十進制整數(shù)進行分析轉換字符串到數(shù)值static

IntegervalueOf85格式化數(shù)值NumberFormat是所有數(shù)字格式的抽象基類。此類提供了格式化和分析數(shù)字的接口。為了格式化當前語言環(huán)境的數(shù)字,要使用一個工廠類方法:NumberFormatnf=NumberFormat.getInstance();要格式化不同語言環(huán)境的日期NumberFormatnf=NumberFormat.getInstance(Locale.FRENCH);格式化數(shù)值NumberFormat是所有數(shù)字格式的抽象基類86格式化數(shù)值(cont.)parseObject(String

source,ParsePosition

pos)

分析字符串中的文本,以生成一個Number。

voidsetCurrency(Currency

currency)

獲取格式化貨幣值時此數(shù)字格式使用的貨幣。

voidsetMaximumFractionDigits(int

newValue)設置數(shù)的小數(shù)部分的最大位數(shù)。

voidsetMaximumIntegerDigits(int

newValue)

設置數(shù)的整數(shù)部分允許的最大位數(shù)。

voidsetMinimumFractionDigits(int

newValue)

設置數(shù)的小數(shù)部分允許的最小位數(shù)。

voidsetMinimumIntegerDigits(int

newValue)

設置數(shù)的整數(shù)部分允許的最小位數(shù)。

voidsetParseIntegerOnly(boolean

value)

設置數(shù)是否應該僅作為整數(shù)來分析。格式化數(shù)值(cont.)parseObject(String87格式化示例下面的語句創(chuàng)建一個模式“000.00”的DecimalFormat實例NumberFormatnf=NumberFormat.getInstance();DecimalFormatdf=(DecimalFormat)nf;如:df.applyPattern(“000.00”);df.format(30.8989)返回030.90再如:df.applyPattern("00.00%");df.format(0.308989)返回30.90%格式化示例下面的語句創(chuàng)建一個模式“000.00”的Decim88Java程序設計基于開源工具包開發(fā)應用程序Java程序設計基于開源工具包開發(fā)應用程序89如何在程序中引用工具包開發(fā)獨立的應用程序在CLASSPATH環(huán)境變量中,指定JAR文件的位置如:CLASSPATH=%CLASSPATH%;d:/javalib/jexcelapi/jxl.jar開發(fā)運行在特定容器(Web服務器等)中的程序將jar文件放置在特定目錄下在程序中,用import語句引用其中的類如何在程序中引用工具包開發(fā)獨立的應用程序90示例,創(chuàng)建統(tǒng)計圖1、放置指定的jar文件到合適位置2、修改classpath環(huán)境變量3、開始編程,注意查看對應的示例代碼和參考文檔示例,創(chuàng)建統(tǒng)計圖1、放置指定的jar文件到合適位置91示例代碼//創(chuàng)建餅型統(tǒng)計圖publicclassChartDemo{privateDefaultPieDatasetinitPieDataSet(){DefaultPieDatasetdataset=newDefaultPieDataset();dataset.setValue("<60",5);dataset.setValue("60-69",10);dataset.setValue("70-79",15);dataset.setValue("80-89",10);dataset.setValue("90-100",5);returndataset;}

示例代碼//創(chuàng)建餅型統(tǒng)計圖92示例代碼(cont.)publicvoidcreatePieChart(){DefaultPieDatasetdata=initPieD

溫馨提示

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

評論

0/150

提交評論