Java程序设计基础教程第四章常用系统类.docx
一、语言基础类(1)Object类Java中所有类的祖先类。(2)Math类 包含用来完成常用的数学运算的方法及Math.PI和Math.E两个数学常量。例题:利用随机函数产生10道二位数的加法测试题,根据用户输入计算得分。import java.io.*;public classAddTest public static void main(Stringargs)throws IOException int score=0;BufferedReader in=new BufferedReader(new InputStreamReader(System.in); for (int i=0;i<10;i+) inta=10+(int)(90*Math.random(); intb=10+(int)(90*Math.random(); System.out.print(a+"+"+b+"=?"); intans=Integer.parseInt(in.readLine(); if(a+b=ans) score=score+10; System.out.print("youscore="+score); (3)数据类型包装类 基本类型 对应包装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 例题:例题:public classE437 public static void main(String args ) chara='a','b','c','D','E','F' for(int i=0;i<a.length;i+) if(Character.isLowerCase(a) a=Character.toUpperCase(a); elseif(Character.isUpperCase(a) a=Character.toLowerCase(a); for(int i=0;i<a.length;i+) System.out.print(""+a); 二、字符串(1)String类:创建不可变长的字符串 创建字符串String s1=“abc”;String s2=new String(“abc”); 比较两个字符串=和equals()方法。例题:class TestEquals public static void main(String args) Strings1="abc" Strings2="abc" String s3=newString("abc"); String s4=newString("abc"); System.out.println(s1=s2); System.out.println(s2=s3); System.out.println(s3=s4); System.out.println(s1.equals(s2); System.out.println(s1.equals(s3); 字符串的其他常用方法length():字符串的长度,即字符串中字符的个数。concat(String str):字符串的连接。“+”:字符串的连接。indexOf(int ch):在当前的字符串中查找字符ch,从前向后找。lastIndexOf(int ch): 在当前的字符串中查找字符ch,从后向前找。字符串的分析:StringTokenizer类。例题:import java.util.*;public class WordAnalyse public static void main(String args) StringTokenizer st=new StringTokenizer("helloeverybody"); while(st.hasMoreTokens()/判断是否有后续单词。 System.out.println(st.nextToken();/取下一个单词。 public String split(Stringregex)方法:使用指定分隔符分离字符串。例题:public class TestSplit public static void main(String args) String s=new String("boo:and:foo"); for(String s1:s.split(":") System.out.println(s1); (2)StringBuffer类:创建可变长的字符串 创建StringBuffer对象publicStringBuffer():创建一个空的StringBuffer对象。publicStringBuffer(int length):创建一个长度为length的StringBuffer对象。publicStringBuffer(String str):用字符串str初始化StringBuffer对象。 StringBuffer的主要方法例题:classTestStringBuffer public static void main(String args) StringBuffer str=newStringBuffer(); str.append("Hello "); str.append("Mary!"); str.insert(6,"good "); str.setCharAt(6,'G'); str.deleteCharAt(15); str.replace(11,15,"Tom"); System.out.println(str); (3)StringBuilder类(JDK5.0开始):StringBuilder不支持同步。StringBuffer支持同步。性能:StringBuilder>StringBuffer>String例题:public classTestB final static int ttime=;/测试循环次数 public TestB() public void test(String s) long begin=System.currentTimeMillis(); for(int i=0;i<ttime;i+) s+="add" long over=System.currentTimeMillis(); System.out.println("操作"+s.getClass().getName()+"类型使用的时间为:"+(over-begin)+"毫秒"); public void test(StringBuffer s) long begin=System.currentTimeMillis(); for(int i=0;i<ttime;i+) s.append("add"); long over=System.currentTimeMillis(); System.out.println("操作"+s.getClass().getName()+"类型使用的时间为:"+(over-begin)+"毫秒"); public void test(StringBuilder s) long begin=System.currentTimeMillis(); for(int i=0;i<ttime;i+) s.append("add"); long over=System.currentTimeMillis(); System.out.println("操作"+s.getClass().getName()+"类型使用的时间为:"+(over-begin)+"毫秒"); public void test2() String s2="abadf" long begin=System.currentTimeMillis(); for(int i=0;i<ttime;i+) String s=s2+s2+s2; long over=System.currentTimeMillis(); System.out.println("操作字符串对象引用相加类型使用的时间为:"+(over-begin)+"毫秒"); public void test3() String s2="abadf" long begin=System.currentTimeMillis(); for(int i=0;i<ttime;i+) Strings="abadf"+"abadf"+"abadf" long over=System.currentTimeMillis(); System.out.println("操作字符串相加使用的时间为:"+(over-begin)+"毫秒"); public static void main(String args) String s1="abc" StringBuffer sb1=newStringBuffer("abc"); StringBuilder sb2=new StringBuilder("abc"); TestB t=new TestB(); t.test(s1); t.test(sb1); t.test(sb2); t.test2(); t.test3(); 三、Vector类Vector类实现了可扩展的对象数组。例题:测试向量的大小及容量的变化。importjava.util.*;public classTestCapacity public static void main(String args) Vector v=new Vector(); System.out.println("size="+v.size(); System.out.println("capacity="+v.capacity(); for(int i=0;i<14;i+) v.add("hello"); System.out.println("Afteradded 14 Elements"); System.out.println("size="+v.size(); System.out.println("capacity="+v.capacity(); (1)给向量序列尾部添加新元素(2)获取向量序列中元素(3)查找向量序列中元素(4)修改向量序列中元素(5)删除向量序列中元素(6)向量的遍历访问例题:向量的添加、获取、修改、删除和遍历。importjava.util.*;public classTestVector public static void main(String args) Vector v=new Vector(); v.add("abc"); v.addElement("def"); v.add("xyz"); System.out.println("v(1)="+v.elementAt(1); System.out.println("v(1)="+v.get(1); System.out.println(v); v.setElementAt("DEF",1); System.out.println(v); v.removeElementAt(1); System.out.println(v); for(int i=0;i<v.size();i+) System.out.print(v.get(i)+" "); System.out.println(); Iterator x=v.iterator(); while(x.hasNext() System.out.print(x.next()+""); 四、Collection API 简介在Java API中为了支持各种对象的存储访问提供了Collection(收集)系列API,Vector是这种类型的一种。(1)Collection接口及实现层次接口Collection处于Collection API的最高层次,其中定义了所有底层接口或类的公共方法,如下图所示:file:/C:/Users/SBT/AppData/Local/Temp/msohtmlclip1/09/clip_image001.gif Collection接口l boolean add(Object o):将一个对象加入到收集中。l boolean contains(Object o):判断收集中是否包含指定对象。l boolean isEmpty():判断收集是否为空。l Iterator iterator():取得遍历访问收集的迭代子对象。l boolean remove(Object o):从收集中删除某对象。l int size():获取对象的大小。l Object toArray():将收集元素转化为对象数组。l void clear():删除收集中所有的元素。 Set接口该接口是数学上集合模型的抽象,有两个特点:一是不含重复元素,而是无序。例题:import java.util.*;public class TestSet public staticvoid main(String args) HashSeth=new HashSet(); h.add("Str1"); h.add(newInteger(12); h.add(newDouble(4.2); h.add("Str1"); h.add(newString("Str1"); System.out.println(h); List接口该接口类似于数学上数列的模型,也称序列。其特点是可含有重复元素,而且是有序的。 类ArrayList内部使用基于动态数组的数据结构。类LinkedList内部使用基于链表的数据结构。 对于随机访问get和set,ArrayList要优于LinkedList,因为linkedList要移动指针。 对于新增和删除元素操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。例题: importjava.util.*;public class TestList publicstatic void main(String args) ArrayLista=new ArrayList(); a.add("Str1"); a.add(newInteger(12); a.add(newDouble(4.2); a.add("Str1"); a.add(newString("Str1"); System.out.println(a);/或者使用迭代器访问a中的元素 Iteratorp=a.iterator(); while(p.hasNext() System.out.print(p.next()+","); 例题:import java.util.*;public class ListDemo2 final int N=50000; long timeList(List st) long start=System.currentTimeMillis(); for(inti=0;i<N;i+) Object obj=new Integer(i); st.add(obj); longstop=System.currentTimeMillis(); return(stop-start); publicstatic void main(String args) ListDemo2l=new ListDemo2(); System.out.println("timefor ArrayList="+l.timeList(new ArrayList(); System.out.println("time forLinkedList="+l.timeList(new LinkedList(); (2)Map接口及实现层次除了Collection表示的这种单一对象数据集合,对于“”表示的数据集合在CollectionAPI提供了Map接口。Map接口及其子接口的实现层次如下图:file:/C:/Users/SBT/AppData/Local/Temp/msohtmlclip1/09/clip_image002.gif例题:import java.util.*;public class MapDemo publicstatic void main(String args) Mapm=new HashMap(); m.put("张三",""); m.put("李四",""); m.put("王五",""); SetallEntry=m.entrySet(); for(Iteratori=allEntry.iterator();i.hasNext();) System.out.println(i.next(); System.out.println(m.get("李四"); 五、日期和时间(一)Date类(1)java.util.Date类:例题:输出当前的时间import java.util.*;class OutDate public static voidmain(String args) Date d=new Date(); System.out.println("当前的时间是:"+d); (2)按格式输出时间对象Java.text.SimpleDateFormat类例题:按照xxxx年xx月xx日 星期x xx时xx分xx秒的格式输出当前时间。import java.util.*;import java.text.SimpleDateFormat;class OutDate public static voidmain(String args) Date d=new Date(); SimpleDateFormatsm=new SimpleDateFormat("现在的时间是:yyyy年MM月dd日E HH时mm分ss秒"); System.out.println(sm.format(d); (二)Calendar类java.util包中的类为抽象方法,可以使用static的方法getInstance()初始化一个日立对象。set()方法可以将日立翻到任何一个时间。例题:importjava.util.*;classExample6_2 public static void main(String args) Calendarcalendar=Calendar.getInstance(); calendar.setTime(new Date();String 年=String.valueOf(calendar.get(Calendar.YEAR), 月=String.valueOf(calendar.get(Calendar.MONTH)+1),日=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH),星期=String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)-1); inthour=calendar.get(Calendar.HOUR_OF_DAY), minute=calendar.get(Calendar.MINUTE), second=calendar.get(Calendar.SECOND); System.out.println("现在的时间是:");System.out.println(""+年+"年"+月+"月"+日+"日 "+ "星期"+星期); System.out.println(""+hour+"时"+minute+"分"+second+"秒"); calendar.set(1962,5,29); /将日历翻到1962年6月29日,注意5表示六月。 longtime1962=calendar.getTimeInMillis(); calendar.set(2006,9,1); longtime2006=calendar.getTimeInMillis(); long 相隔天数=(time2006-time1962)/(1000*60*60*24); System.out.println("2006年10月1日和1962年6月29日相隔"+相隔天数+"天"); 例题:输出2006年12月的日历页importjava.util.*;classExample6_3 public static void main(String args) System.out.println(" 日 一 二 三 四 五 六"); Calendar 日历=Calendar.getInstance(); 日历.set(2006,11,1); /将日历翻到2006年12月1日。 int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1; String a=new String星期几+31; for(int i=0;i<星期几;i+) a="*" for(int i=星期几,n=1;i<星期几+31;i+) if(n<=9) a=String.valueOf(n)+"" else a=String.valueOf(n) ; n+; for(int i=0;i<a.length;i+) if(i%7=0) System.out.println(""); System.out.print(" "+a); 大连IT培训权威机构,首选大连中软国际,100%成功就业,入职名企不是梦!