Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java标准类库 福州大学阳光学院 张海歆.

Similar presentations


Presentation on theme: "Java标准类库 福州大学阳光学院 张海歆."— Presentation transcript:

1 Java标准类库 福州大学阳光学院 张海歆

2 本章主要内容 java.lang包中常用类 java.util包中常用类 集合框架

3 java.lang包-Object类 Object类是Java程序中所有类的直接或间接父类。 Object类常用方法:
Object clone()//创建并返回对象副本 public final Class getClass() //返回一个对象运行时类 public String toString() //返回该对象的字符串表示 public final void wait() //在其他线程调用此对象的 notify()方法或 notifyAll()方法前,导致当前线程等待。 public final native void notify()// 唤醒在此对象监视器上等待的单个线程。 protected void finalize()//当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

4 java.lang包-基本类型的包装类 包装类:将基本类型包装成对象。
包装类提供的公有方法是类方法(static),不需要实例化就可以调用。 Java中基本类型的包装类:Boolean、Character、Double、Float、Byte、Short、Integer、Long。 基本包装类型的抽象父类:Number

5 包装类的使用(以Double为例) 构造基本类型的包装类 Double d1 = new Double("350.4");
类型转换 基本类型间转换 long l = d1.longValue(); //l = 350 float f = d1.floatValue(); //f = 350.4 byte b = d2.byteValue();//b=94 字符串转为基本类型 double d3 = Double.parseDouble("123.4"); double d4 = Double.valueOf("123.4"); 基本类型包装类转换成String String str = d1.toString();

6 java.lang包-System类 通过System类获取标准输入和输出流 系统标准输入流:System.in
系统标准输出流:System.out 系统标准错误流:System.err 用System类的方法复制数组,获取时间和系统信息。

7 使用System复制数组,获取系统属性、当前时间
int[] i1 = {1, 2, 3, 4, 5}; int[] i2 = new int[5]; System.out.print("复制前数组为:"); for (int i = 0; i < 5; i++) { System.out.print("i2[" + i + "]=" + i2[i]+" "); } System.out.println(); System.arraycopy(i1, 0, i2, 0, 5); System.out.print("复制后数组为:"); System.out.println("系统属性为:" + System.getProperties()); System.out.println("系统当前时间为:" + new Date(System.currentTimeMillis()));

8 控制台输出: 复制前数组为:i2[0]=0 i2[1]=0 i2[2]=0 i2[3]=0 i2[4]=0
系统属性为:{java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=F:\Program Files\Java\jdk1.6.0_20\jre\bin, java.vm.version=16.3-b01, java.vm.vendor=Sun Microsystems Inc., …… 系统当前时间为:Tue Nov 09 11:02:36 CST 2010

9 java.util包——Date类 Date类:描述了一个精度为毫秒的特定时间实例。 Date类构造函数 Date()
Date(long) //参数表示构造日期对象到1970年1月1日 00:00:00之间相隔的毫秒数。 Date类中主要方法: after(Date)//测试该日期是否在某指定日期后 before(Date) //测试该日期是否在某指定日期之前 getTime() //返回该日期表示的从1970年1月1日 00:00:00起的毫秒数 setTime(long)//设置日期表示从1970年1月1日 00:00:00起的毫秒数

10 java.util包——Calendar类
Calendar Calendar.getInstance()//获取一个Calendar 实例; public final Date getTime() //以获取当前时间 public int get(int field)//得到日历的一部分,如:c.get(Calendar.YEAR):得到当前年份 Calendar类的常用静态变量: YEAR(年)、MONTH (月) 、DATE(日) AM_PM(0表示上午,1表示下午)、 HOUR (小时) 、MINUTE(分)、SECOND(秒)、MILLISECOND(毫秒)

11 Date示例: //定义一个日期输出格式 SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd hh:mm:ss"); //创建一个当前时间对象 Date today = new Date(); //通过Date(long)方法创建一个一周后的时间对象 Date oneWeekAfter = new Date(today.getTime() *60*60*24*7); //通过Date(long)方法创建一个一周前的时间对象 Date oneWeekBefore = new Date(today.getTime() *60*60*24*7); //格式化输出3个时间对象 System.out.println("一周前是:"+sdf.format(oneWeekBefore)); System.out.println("现在是:"+sdf.format(today)); System.out.println("一周后是:"+sdf.format(oneWeekAfter)); //判断3个时间对象的前后顺序 System.out.println("oneWeekBefore.before(today) = "+oneWeekBefore.before(today)); System.out.println("oneWeekAfter.before(today)="+oneWeekAfter.before(today)); System.out.println("oneWeekAfter.after(today)="+oneWeekAfter.after(today));

12 Date示例: Calendar c = Calendar.getInstance(); String nowTime = ""; nowTime += c.get(Calendar.YEAR) + "年"; nowTime += c.get(Calendar.MONTH) + "月"; nowTime += c.get(Calendar.DATE) + "日"; if (c.get(Calendar.AM_PM) == 0) { nowTime += c.get(Calendar.HOUR) + "时"; } else { nowTime += 12 + c.get(Calendar.HOUR) + "时"; } nowTime += c.get(Calendar.MINUTE) + "分"; nowTime += c.get(Calendar.SECOND) + "秒"; System.out.println("当前时间是:" + nowTime);

13 java.text包——DateFormat类
java.text.DateFormat类:提供了一些输出时间的标准格式。DateFormat类常用方法: public final static DateFormat getDateInstance(int style)//得到一个类型为style的DateFormat 实例 public final String format(Date date)//格式化输出date SimpleDateFormat类:允许用户字自定义日期的输出格式。 日期格式:EEEE(大写):星期;MM/MMMM(大写):月份;dd/DD:日;yyyy/yy(小写):年;hh:时;mm:分;ss:秒;SS:毫秒。

14 DateFormat示例: Date date = Calendar.getInstance().getTime(); System.out.println("Date格式:" + date); //Date格式:Tue Nov 09 10:13:51 CST 2010 System.out.println(DateFormat.getInstance().format(date)); //输出 上午10:13 System.out.println("默认:" + DateFormat.getDateInstance(DateFormat.DEFAULT).format(date)); //默认: System.out.println("完整:" + DateFormat.getDateInstance(DateFormat.FULL).format(date)); //完整:2010年11月9日 星期二 System.out.println("长格式:" + DateFormat.getDateInstance(DateFormat.LONG).format(date)); //长格式:2010年11月9日 System.out.println("中格式:" + DateFormat.getDateInstance(DateFormat.MEDIUM).format(date)); //中格式: System.out.println("短格式:" + DateFormat.getDateInstance(DateFormat.SHORT).format(date)); //短格式:

15 SimpleDateFormat示例: Date date = new Date(); SimpleDateFormat dateFm = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss:SSSS EEEE" ); System.out.println(dateFm.format(date)); //输出 :21:59:0014 星期二 dateFm = new SimpleDateFormat("MM-dd-yy EEEE hh:mm:ss:SS"); //输出 星期二 10:21:59:14

16 集合框架 集合:一系列对象的聚集,集合中的每个元素都是对象。 Collection接口:最基本的集合接口
boolean add(E e); void clear(); boolean contains(Object o); boolean isEmpty(); Iterator<E> iterator(); boolean remove(Object o); int size(); Object[] toArray();

17 集合框架-Set接口与实现类 Set接口:定义了一个集合,它继承自Collection接口,且不允许集合中存在重复元素
HashSet:实现Set接口。HashSet创建一个集合,该集合使用散列表进行存储,它不保证集合的迭代顺序,且允许使用null元素。 TreeSet:实现了Sorted接口。 TreeSet使用树结构存储,并按升序排列,访问和检索速度快。TreeSet中元素类型必须一致,且不允许null元素。

18 集合框架-List接口与实现类 List接口:继承自Collection。 List中的元素可以通过它们在列表中的位置被访问。
void add(int index, E element); int indexOf(Object o); int lastIndexOf(Object o); remove(int index); set(int index, Object o); ……

19 List实现类 ArrayList:可随需要而动态增长、减少的数组。
public ArrayList(int initialCapacity) public ArrayList()//默认容量为10 LinkedList:由List接口的链接表实现,可实现所有可选的列表操作。 public void addFirst(E e) public void addLast(E e) public E removeFirst() public E removeLast() ArrayList的查询效率比较高,增删动作的效率比较差;LinkedList的查询效率低,但是增删效率很高。

20 ArrayList中的元素:[123, null, 5, [5, 4]]
ArrayList alist = new ArrayList(); alist.add("123"); alist.add(null); alist.add(new Integer(5)); //添加另一个ArrayList作为一个元素 ArrayList a1 = new ArrayList(); a1.add("5"); a1.add("4"); alist.add(a1); System.out.println("ArrayList中元素个数"+alist.size()); System.out.println("ArrayList中的元素:"+alist); 控制台输出: ArrayList中元素个数4 ArrayList中的元素:[123, null, 5, [5, 4]]

21 使用LinkedList模拟堆栈 public class TestStack {
public static void main(String[] args) { MyStack ms=new MyStack(); ms.push("Chenzq"); ms.push("Liucy"); ms.push("BaiLu"); System.out.println(ms.pop()); } class MyStack{ private LinkedList ll=new LinkedList(); public void push(Object o){ ll.addFirst(o); public Object pop(){ return ll.removeFirst();

22 集合框架-Map接口与实现类 Map<K,V>接口 映射的概念:一个存储关键字(K)/值(V)对的集合。
一个映射不能包含重复的键。 Map接口定义的主要方法 int size(); boolean isEmpty(); boolean containsKey(Object key); boolean containsValue(Object value); V get(Object key); V put(K key, V value); V remove(Object key); void clear();

23 HashMap&TreeMap HashMap 基于哈希表的Map接口实现。 输入顺序和输出顺序不一定相对应。 允许使用空值和空键。
保证了映射按升序排列关键字 在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。

24 HashMap示例 HashMap trMap = new HashMap(); trMap.put("5", new Integer(123)); trMap.put("3", new Integer(124)); trMap.put("4", new Integer(125)); trMap.put("1", new Integer(126)); trMap.put("2", new Integer(127)); System.out.println(trMap); 输出 {3=124, 2=127, 1=126, 5=123, 4=125}

25 TreeMap示例 TreeMap trMap = new TreeMap(); trMap.put("5", new Integer(123)); trMap.put("3", new Integer(124)); trMap.put("4", new Integer(125)); trMap.put("1", new Integer(126)); trMap.put("2", new Integer(127)); System.out.println(trMap); 输出:{1=126, 2=127, 3=124, 4=125, 5=123}

26 Iterator接口 Iterator(迭代器):可以一个一个地获取集合中的元素。 Iterator主要方法:
boolean hasNext(); //是否还有下一个元素 Object next();//获得下一个元素 void remove();//从迭代器指向的 collection 中移除迭代器返回的最后一个元素

27 迭代器示例1: ArrayList arrayList = new ArrayList(); arrayList.add("1");
it = arrayList.iterator(); //如果迭代器还有下一个元素,则循环一直继续 while (it.hasNext()) { //通过next()方法获取迭代器下一个元素 System.out.print( it.next() +","); } 控制台输出:1,2,4,5,6,5,

28 迭代器示例2: TreeMap trMap = new TreeMap(); trMap.put("5", new Integer(123)); trMap.put("4", new Integer(124)); trMap.put("1", new Integer(125)); trMap.put("3", new Integer(126)); trMap.put("2", new Integer(127)); //获取TreeMap的键值集合的迭代器 Iterator it = trMap.keySet().iterator(); //如果迭代器还有下一个元素,则循环一直继续 while ( it.hasNext() ) { //得到迭代器的下一个元素 String key = it.next().toString(); if (key != null) { //通过TreeMap的get(key)方法获取key对应的元素 System.out.print(key + "=" + trMap.get(key) +","); } 控制台输出:1=125,2=127,3=126,4=124,5=123

29 小结 所有的类都是Object类的子类。 可以通过基本类型的包装类来实现基本类型的对象化。
使用Date类、Calendar类、DateFormat、SimpleDateFormat类来实现日期的显示。 集合框架的常用类:ArrayList、LinkedList、HashSet、TreeSet、HashMap和TreeMap 使用迭代器(Iterator)实现集合元素的遍历。

30 练习 创建一个Student类,该类包含4个属性:姓名,性别,年龄,生日(日期类型)。同时该类覆盖Student类的toString方法,输出学生的相关信息。 创建一个StudentTest类,在该类中创建10个学生对象,分别使用ArrayList,HashMap和TreeMap进行存储,使用迭代器(Iterator)进行遍历,输出10个学生的信息。


Download ppt "Java标准类库 福州大学阳光学院 张海歆."

Similar presentations


Ads by Google