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

Slides:



Advertisements
Similar presentations
主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
Advertisements

第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目6 通用堆栈.
四資二甲 第三週作業 物件導向程式設計.
Chapter 6 字串與時間處理.
第二章 JAVA语言基础.
Google App Engine Google 應用服務引擎.
第二部分 Java语言基础篇 第4章 Java语言与面向对象 (之一).
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
第九章 字符串.
JAVA语言程序设计 第七章 类的继承性 (上).
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
Signutil.
常用工具类.
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
2018/11/22 Java语言程序设计-程序流程 教师:段鹏飞.
第六章 类的扩展与继承.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
Ch13 集合與泛型 物件導向程式設計(2).
本單元介紹何謂變數,及說明變數的宣告方式。
2018/11/27 Java语言程序设计-程序流程 教师:段鹏飞.
Ch10 類別與物件-方法 Java程式設計(2).
程式設計實作.
抽象类 File类 String类 StringBuffer类
Java程序设计 第9章 继承和多态.
辅导课程六.
Java集合类.
第 六 章 鏈結串列(Link List) 課程名稱:資料結構 授課老師:________ 2019/1/2.
集合框架和泛型(一).
Java程序设计 第2章 基本数据类型及操作.
3.7 Java的工具类.
Ch02-基礎語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
简单工厂模式.
Java集合.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
第三课 标识符、关键字、数据类型.
第二章 Java基本语法 讲师:复凡.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
第二章 Java基本语法 讲师:复凡.
分裂对象模型 C++ otcl.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第四章 类 4.1 基础知识 4.2 构造函数 4.3 方法 4.4 属性与索引 4.5 String类
第二章 Java语法基础.
3.16 枚举算法及其程序实现 ——数组的作用.
Review 1~3.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
判斷(選擇性敘述) if if else else if 條件運算子.
第 5 章 常用类的使用 伍孝金
第二章 Java基础语法 北京传智播客教育
6 集合类与泛型.
第二章 Java基本语法 讲师:复凡.
第二章 简单数据类型 §2.1 数据类型概述 §2.2 变量和常量 §2.3 简单数据类型 §2.4 简单数据类型的相互转换
Summary
Presentation transcript:

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

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

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()//当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

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

包装类的使用(以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();

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

使用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()));

控制台输出: 复制前数组为: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

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起的毫秒数

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(毫秒)

Date示例: //定义一个日期输出格式 SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd hh:mm:ss"); //创建一个当前时间对象 Date today = new Date(); //通过Date(long)方法创建一个一周后的时间对象 Date oneWeekAfter = new Date(today.getTime() + 1000*60*60*24*7); //通过Date(long)方法创建一个一周前的时间对象 Date oneWeekBefore = new Date(today.getTime() - 1000*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));

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);

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:毫秒。

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-11-9 上午10:13 System.out.println("默认:" + DateFormat.getDateInstance(DateFormat.DEFAULT).format(date)); //默认:2010-11-9 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)); //中格式:2010-11-9 System.out.println("短格式:" + DateFormat.getDateInstance(DateFormat.SHORT).format(date)); //短格式:10-11-9

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

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

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

集合框架-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); ……

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的查询效率低,但是增删效率很高。

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]]

使用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();

集合框架-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();

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

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}

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}

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

迭代器示例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,

迭代器示例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

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

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