實驗一 Java常用工具類編程.doc_第1頁
實驗一 Java常用工具類編程.doc_第2頁
實驗一 Java常用工具類編程.doc_第3頁
實驗一 Java常用工具類編程.doc_第4頁
實驗一 Java常用工具類編程.doc_第5頁
免費預覽已結(jié)束,剩余15頁可下載查看

下載本文檔

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

文檔簡介

實驗一 Java常用工具類編程1.1實驗指導1、String類使用String 類表示字符串。 在 Java 程序中所有的字符串常量,如 abc,都被實現(xiàn)為這個類的實例。 1)、構(gòu)造函數(shù) String s1=java; String s2=new String(java); 2)、比較函數(shù) =比較引用是否相同 if(s1=s2) /返回falseequals():比較串內(nèi)容是否相同 if(s1.equals(s2)/返回true compareTo():比較內(nèi)容,返回數(shù)字 pareTo(s2) 如果s1s2 則返回0 如果s1=s2 則返回0 如果s1s2 則返回0 3)、取子串substring(),取字符charAt(index) String s1=hello java; s1.substring(start,end); s1.substring(0,3);/start到end-1 String s2=s1.substring(6,10); 4)、分割split(); String s1=c+,java,; String str=s1.split(,); String s2=c+.java.vb; String s2=c+.java.vb dotnet; String str=s2.split(.| ); for(int i=0;istr.length;i+) System.out.println(stri);2、StringBuffer類StringBuffer public StringBuffer()構(gòu)造一個不包含字符的字符串緩沖區(qū),其初始的容量設(shè)為 16 個字符。 StringBuffer public StringBuffer(int length):構(gòu)造一個不包含字符的字符串緩沖區(qū),其初始的容量由參數(shù) length 設(shè)置。 StringBuffer public StringBuffer(String str):構(gòu)造一個字符串緩沖區(qū),來表示和字符串參數(shù)相同的字符序列。 length public int length():返回字符串緩沖區(qū)的長度 (字符數(shù))。 capacity public int capacity():返回字符串緩沖區(qū)的當前容量。 該容量表示可用于插入新的字符的存儲空間;超出該容量時會發(fā)生新的容量分配。 ensureCapacity public synchronized void ensureCapacity(int minimumCapacity):保證緩沖區(qū)的容量至少等于指定的最小數(shù)。 如果字符串緩沖區(qū)的當前容量少于該參數(shù),則分配一個新的更大的內(nèi)部緩沖區(qū)。 新容量將取如下參數(shù)中較大的一個: setLength public synchronized void setLength(int newLength):設(shè)置該字符串緩沖區(qū)的長度。 如果參數(shù) newLength 小于該字符串緩沖區(qū)的當前長度。 該字符串緩沖區(qū)將被截斷來包含恰好等于由參數(shù) newLength 給出的字符數(shù)。 append public synchronized StringBuffer append(Object obj):把 Object 型參數(shù)的字符串表示添加到該字符串緩沖區(qū)。 StringBuffer x = new StringBuffer().append(a).append(4).append(c) .toString();insert public synchronized StringBuffer insert(int offset, Object obj):把 Object 型參數(shù)的字符串表示插入到字符串緩沖區(qū)。 reverse public synchronized StringBuffer reverse():該字符串緩沖區(qū)的字符序列被其反向字符序列所替換。 toString public String toString():轉(zhuǎn)換為一個表示該字符串緩沖區(qū)數(shù)據(jù)的字符串。 分配一個新的 String 對象,并且用字符串緩沖區(qū)所表示的字符序列進行初始化。 于是此 String 被返回。 隨后緩沖區(qū)發(fā)生的變化不再影響該 String 的內(nèi)容。 3、日期類示例1)獲取服務器端當前日期: import java.util.Date; Date myDate = new Date();2) 獲取當前年、月、日:Date myDate = new Date();int thisYear = myDate.getYear() + 1900;/thisYear = 2009int thisMonth = myDate.getMonth() + 1;/thisMonth = 10int thisDate = myDate.getDate();/thisDate = 303)按本地時區(qū)輸出當前日期Date myDate = new Date();out.println(myDate.toLocaleString();輸出結(jié)果為:2003-5-30 4)按照指定格式打印日期import java.util.Date;import java.text.DateFormat;Date dNow = new Date();SimpleDateFormat formatter =new SimpleDateFormat(E yyyy.MM.dd at hh:mm:ss a zzz);System.out.println(It is + formatter.format(dNow);輸出的結(jié)果為:It is 星期五 2003.05.30 at 11:30:46 上午 CST 5)將字符串轉(zhuǎn)換為日期import=java.util.Dateimport=java.text.DateFormatString input = 1222-11-11;SimpleDateFormat formatter = new SimpleDateFormat(yyyy-MM-dd);Date t = null;try t = formatter.parse(input);System.out.println(t); catch(ParseException e) System.out.println(unparseable using + formatter); 輸出結(jié)果為:Fri Nov 11 00:00:00 CST 1222 6) 計算日期之間的間隔 getTime()函數(shù)返回日期與1900-01-01 00:00:00相差的毫秒數(shù)import=java.util.Dateimport=java.text.DateFormatString input = 2003-05-01;SimpleDateFormat formatter = new SimpleDateFormat(yyyy-MM-dd);Date d1 = null;Date d2 = new Date();long diff = d2.getTime() - d1.getTime();out.println(Difference is + (diff/(1000*60*60*24) + days.);輸出結(jié)果為:Difference is 29 days. 7) 日期的加減運算方法:用Calendar類的add()方法Calendar now = Calendar.getInstance();SimpleDateFormat formatter = new SimpleDateFormat(E yyyy.MM.dd at hh:mm:ss a zzz);out.println(It is now + formatter.format(now.getTime();now.add(Calendar.DAY_OF_YEAR,-(365*2);out.println();out.println(Two years ago was + formatter.format(now.getTime();輸出結(jié)果為:It is now 星期五 2003.05.30 at 01:45:32 下午 CST Two years ago was 星期三 2001.05.30 at 01:45:32 下午 CST 8) 比較日期方法:用equals()、before()、after()方法import=java.util.* import=java.text.* DateFormat df = new SimpleDateFormat(yyy-MM-dd);Date d1 = df.parse(2000-01-01);Date d2 = df.parse(1999-12-31);String relation = null;if(d1.equals(d2) relation = the same date as;else if(d1.before(d2) relation = before;else relation = after;System.out.println(d1 + is + relation + + d2);輸出結(jié)果為:Sat Jan 01 00:00:00 CST 2000 is after Fri Dec 31 00:00:00 CST 19991.2實驗題目1、 使用類String類的分割split 將字符串 “Solutions to selected exercises can be found in the electronic document The Thinking in Java Annotated Solution Guide, available for a small fee from BruceEckel” 單詞提取輸出。單詞以空格或,分割。package job1;public class Split public static void main(String args)String s1=Solutions to selected exercises +can be found in the electronic document +The Thinking in Java Annotated Solution Guide, +available for a small fee from BruceEckel;String s2=s1.split( |,);for(int i=0;is2.length;i+)System.out.println(s2i);2、 設(shè)計一個類Student,類的屬性有:姓名,學號,出生日期,性別,所在系等。并生成學生類對象數(shù)組。按照學生的姓名將學生排序輸出。使用String類的compareTo方法。package job1;public class Student private String name;private int num;private String birth;private String sex;private String sdept;public Student()public Student(String name,int num,String birth,String sex,String sdepet)=name;this.num=num;this.birth=birth;this.sex=sex;this.sdept=sdept;public String getName()return name;public void setName(String name)=name;public int getNum()return num;public void setNum(int num)this.num=num;public String getBirth()return birth;public void setBirth(String birth)this.birth=birth;public String getSex()return sex;public void setSex(String sex)this.sex=sex;public String getSdept()return sdept;public void setSdept(String sdept)this.sdept=sdept;package job1;import java.util.Comparator;import java.text.CollationKey;import java.text.Collator;public class MyCmp implements Comparatorpublic int compare(Object obj1,Object obj2)Collator collator=Collator.getInstance();CollationKey key1=collator.getCollationKey(obj1.toString();CollationKey key2=collator.getCollationKey(obj2.toString();return pareTo(key2);package job1;import java.util.*;public class TreeText public static void main(String args)TreeMap map=new TreeMap(new MyCmp();map.put(蔣高登,20081851 1990-08-03 男 CS);map.put(蔣稀文,20081852 1989-01-11 男 CS);map.put(董駿,20081850 1990-04-05 男 CS);Set keys=map.entrySet();Iterator it=keys.iterator();while(it.hasNext()Map.Entry e=(Map.Entry) it.next();System.out.println(e.getKey()+ +e.getValue();3、 設(shè)計一個程序計算2011-05-01日與系統(tǒng)當前日期相差的天數(shù)。package job1;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Days public static void main(String args) throws ParseExceptionDate d1=new Date();SimpleDateFormat format=new SimpleDateFormat(yyyy-MM-dd);String s=2011-05-01;Date d2=format.parse(s);int days=(int)(d2.getTime()-d1.getTime()/(1000*60*60*24);System.out.print(2011-05-01日與系統(tǒng)當前時間相差+days+天);4、使用日歷類等相關(guān)方法 按截圖做出一個日歷 參照書本示例,研究其中代碼回顧與復習利用Java Swing編程。參考:以下函數(shù)根據(jù)輸入的年和月計算相應的數(shù)字public void showCalendar(int year,int month) Calendar cal=Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month-1); /計算當前月一共有多少天 int days=cal.getActualMaximum(Calendar.DAY_OF_MONTH); /計算當前月的1號為星期幾 cal.set(Calendar.DAY_OF_MONTH, 1);/設(shè)置為1號 int firstweek=cal.get(Calendar.DAY_OF_WEEK); 。 package job1;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import javax.swing.*;import javax.swing.table.DefaultTableModel;public class CalendarTable extends JFrame implements ActionListenerprivate JLabel label_year=new JLabel(年);private JLabel label_month=new JLabel(月);private JComboBox box_year=new JComboBox();private JComboBox box_month=new JComboBox();private JButton btn=new JButton(確定);private JTable table;private String week=日,一,二,三,四,五,六;private String rows=new String67;public CalendarTable()JPanel jp_north=new JPanel(new GridLayout(1,5);for(int i=1;i13;i+)box_month.addItem(i);jp_north.add(box_year);jp_north.add(label_year);jp_north.add(box_month);jp_north.add(label_month);jp_north.add(btn);table=new JTable(rows,week);JScrollPane scroll=new JScrollPane(table);this.add(jp_north,BorderLayout.NORTH);this.add(scroll);calendarinit();btn.addActionListener(this);box_year.addActionListener(this);box_month.addActionListener(this);public void actionPerformed(ActionEvent e)Calendar cal=Calendar.getInstance();int year=cal.get(Calendar.YEAR);/box_year.getSelectedIndex();int month=box_month.getSelectedIndex();showCalendar(year,month);table.setModel(new DefaultTableModel(rows,week);private void calendarinit()Calendar cal=Calendar.getInstance();box_year.addItem(new Integer(cal.get(Calendar.YEAR);cal.set(Calendar.DAY_OF_MONTH, 1);box_month.setSelectedIndex(cal.get(Calendar.MONTH);showCalendar(Calendar.YEAR,Calendar.MONTH);private void showCalendar(int year,int month)Calendar cal=Calendar.getInstance();cal.set(Calendar.YEAR, year);cal.set(Calendar.MONTH, month);int days=cal.getActualMaximum(Calendar.DAY_OF_MONTH);cal.set(Calendar.DAY_OF_MONTH, 1);int firstweek=cal.get(Calendar.DAY_OF_WEEK);for(int i=0;irows.length;i+)for(int j=0;jrowsi.length;j+)rowsij=;int line=0;for(int i=1;i=firstweek-1)rowslinei%7=(i-firstweek+2)+;public static void main(String args)CalendarTable cal=new CalendarTable();cal.setBounds(40, 40, 400, 200);cal.setVisible(true);cal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);5日期類的構(gòu)造定義一個日期類,屬性有年、月、日;以及對應這些屬性的構(gòu)造函數(shù)以及set-get訪問器方法。其它功能包括:1)、按照中國日期輸出格式,編寫toString()函數(shù)。即形如2010年12月10日.public String toString ()2)、定義日期相加的函數(shù),可以加年,月,日。public void addDate(int part,int nums)其中part表示加哪個部分,年,月還是日,nums表示加多少? 如:d1.addDate(1,10);表示加上10年,d1.addDate(2,10);表示加上10月,d1.addDate(3,10);表示加上10天。參考:可以定義一個私有函數(shù),將日期加一天后的日期3)、定義日期差函數(shù)可以相差多少年,月,日。 public int diffDate(int part,Date date) 如:d1. diffDate (1,d2);表示d1與d2相差多少年。d1. diffDate (2,d2);表示d1與d2相差多少月。d1. diffDate (3,d2);表示d1與d2相差多少天。4)、計算輸出當前日期實例對應的是星期幾函數(shù)public int calcuWeekDay() .注意:考慮到1900-1-1日這一天是星期一的現(xiàn)實.package job1;import java.text.SimpleDateFormat;import java.util.Date;public class MyDate private int year;private int month;private int day;public MyDate()public MyDate(int year,int month,int day)this.year=year;this.month=month;this.day=day;public int getYear()return this.year;public void setYear(int year)this.year=year;public int getMonth()return this.month;public void setMonth(int month)this.month=month;public int getDay()return this.day;public void setDay(int day)this.day=day;private void addOneMonth()this.month+;if(this.month12)this.year+;this.month=1;private void addOneDay()this.day+;if(this.daymaxMonthDays()this.month+;this.day=1;if(this.month12)this.year+;this.month=1;public int maxMonthDays()int monthDays=31;if(this.month=4|this.month=6|this.month=9|this.month=11)monthDays=30;else if(this.month=2&isLeapYear()monthDays=29;else if(this.month=2&!isLeapYear()monthDays=28;return monthDays;private boolean isLeapYear() if(this.year%4=0&this.year%100!=0|this.year%400=0)return true;return false;public String toString() return this.year + 年 + this.month + 月 + this.day + 日;public void addDate(int part,int nums)if(part=1)this.year=this.year+nums;else if(part=2)for(int i=0;inums;i+)addOneMonth();else if(part=3)for(int i=0;inums;i+)addOneDay();public boolean isEquals(MyDate date)boolean f = false;if (this.year = date.year & this.month = date.month& this.day = date.day)f = true;return f;public boolean isBefore(MyDate date)boolean f=false;if(this.yeardate.year)f=true;else if(this.year=date.year)if(this.monthdate.month)f=true;else if(this.year=date.year&this.month=date.month)if(this.daydate.day)f=true;return f;public int diffDate(int part,MyDate date)int diffDays=0;if(part=1)if(this.isBefore(date)diffDays=date.year-this.year;else if(this.isEquals(date)diffDays=0;else diffDays=this.year-d

溫馨提示

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

評論

0/150

提交評論