3.9 Java基础类与工具类.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目6 通用堆栈.
第 七 章 java.util包.
第4章 类与对象 本章导读 0. 面向对象编程 1. 类声明和类体 2. 类体的构成 3. 构造方法与对象的创建 4. 对象的引用与实体
5.1 Java基础类库 5.2 Object类 5.3 System类 5.4 Math类 5.5 基本数据类型包装类 5.6 字符串
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
第5章 进一步讨论对象和类.
第九章 字符串.
JAVA语言程序设计 第七章 类的继承性 (上).
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
Signutil.
Hadoop I/O By ShiChaojie.
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
常用工具类.
CHAPTER 9 建構方法 ROBERT.
第六章 类的扩展与继承.
Ch13 集合與泛型 物件導向程式設計(2).
本單元介紹何謂變數,及說明變數的宣告方式。
程式設計實作.
抽象类 File类 String类 StringBuffer类
第4章 面向对象编程方法 王德俊 上海交通大学继续教育学院.
管理信息结构SMI.
Java程序设计 第9章 继承和多态.
走进编程 程序的顺序结构(二).
辅导课程六.
辅导课程十三.
3.7 Java的工具类.
Ch02-基礎語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
顺序表的删除.
Java變數 2014/6/24.
C#面向对象程序设计 $6 深入理解类.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
第二章 Java基本语法 讲师:复凡.
VB与Access数据库的连接.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
第二章 Java语法基础.
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
Chapter 18 使用GRASP的对象设计示例.
Review 1~3.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
第4章 数组与字符串 学习目标 本章要点 上机练习 习 题.
第二章 Java基本语法 讲师:复凡.
基于列存储的RDF数据管理 朱敏
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第 5 章 常用类的使用 伍孝金
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第6章 继承和多态 伍孝金
第二章 简单数据类型 §2.1 数据类型概述 §2.2 变量和常量 §2.3 简单数据类型 §2.4 简单数据类型的相互转换
Summary
Presentation transcript:

3.9 Java基础类与工具类

目录 CONTENTS Object类与Class类 基本数据类型封装类 Math类 System类 Date和Calendar类 3.9.11 Object类与Class类 3.9.4 System类 3.9.3 Math类 基本数据类型封装类 3.9.2 3.9.5 Date和Calendar类 3.9.6 集合框架与泛型编程 *

3.9.1 Object类与Class类

3.9.1 Object类和Class类 Object类 Object类 是Java程序中所有类的直接或间接父类,也是类库中所有类的父类, 位于java.lang 包中。Object类包含了所有Java类的公共属性,其中的主要方法有: Object类 protected Object clone() 生成当前对象的一个拷贝,并返回这个复制对象。 public boolean equals(Object obj) 比较两个对象是否相同,是则返回true。

3.9.1 Object类和Class类 Object类 public final Class getClass() protected void finalize() 定义回收当前对象时所需要完成的清理工作。 public String toString() 返回当前对象本身的有关信息,按字符串对象返回。

3.9.1 Object类和Class类 Class 类 Class 类是java.lang 包中的类,该类的实例可以帮助程序创建其他类的实例或者取得其他类的对象的内部信息。 Class 类 Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,不能像普通类一样以 new 运算符创建,因为这个类没有public构造方法 Class类封装一个对象和接口运行时的状态,每个类都有一个相应的Class对象。

3.9.1 Object类和Class类 使用Class类实例化一个对象 方法1——通过Class类对象的forName()+ newInstance ( ) public static Class forName(String className)throws ClassNotFoundException public Object newInstance ( ) throws InstantiationException 例: Class obj= Class.forName(“shapes.Circle“ ); //Circle是shapes包中的类 Circle c1=(Circle)boj. newInstance ( ) ; //通过obj来实例化一个Circle对象 注意:使用Class对象调用newInstance()实例化某一个类的对象时,该类必须有无参构造方法。

3.9.1 Object类和Class类 使用Class类实例化一个对象 方法2——使用对象的getClass()方法: public final Class <?> getClass( ) 例: Circle c1=new Circle( ) ; //创建一个Circle对象c1 Class obj= c1. getClass(); //获取与Circle对象c1相关 的一个Class类对象

3.9.1 Object类和Class类 使用Class类的实例获取类的相关信息 任何对象调用getClass()方法都可以获得与该对象相关的一个Class对象。 使用Class类的实例获取类的相关信息 Class对象经常调用的方法: String getName( ) // 返回类的名字 Constructor[] getDeclaredConstructors( ) // 返回类的全部构造方法 Field[] getDeclaredFields( ) // 返回类的全部成员变量 Method[] getDeclaredMethods() // 返回类的全部方法

3.9.1 Object类和Class类 Java的反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 主要由以下类来实现Java的反射机制: Class类:代表一个类,位于java.lang包下 Field类:代表类的成员变量(成员变量也称为类的属性) Method类:代表类的方法 Constructor类:代表类的构造方法 Array类:提供了动态创建数组、访问数组的元素的静态方法 位于java.lang.reflect包中

3.9.2 基本数据类型封装类

3.9.2 基本数据类型封装类 基本数据类型 数据类型封装类 名称 boolean Boolean 逻辑型 char Character 3.9.2 基本数据类型封装类 基本数据类型 数据类型封装类 名称 boolean Boolean 逻辑型 char Character 字符型 double Double 双精度型 float Float 浮点型 int Integer 整型 long Long 长整型

3.9.2 基本数据类型封装类 a)最大值和最小值的限定 通过 MAX_VALUE域 和 MIN_VALUE域来设定 Integer 类的使用 public Integer(int value) //通过int数据生成 public Integer(String s) //通过字符串生成 b)生成Integer对象的构造方法 将当前对象所对应的int量转换成其他基本数据类型的量,并返回转换后的值。 public double doubleValue( ); public int intValue( ); public long longValue( ); c)数据类型转换方法

3.9.2 基本数据类型封装类 d) 字符串与int量相互转化的方法 3.9.2 基本数据类型封装类 public String toString(), 将当前Integer对象对应的int量转换成字符串; public static int parseInt(String s)是类方法,直接将字符串转化成int量。 例: int i= Integer.parseInt(”345”); public static Integer valueOf(String s)也是类方法,可以将一个字符串转化成一个Integer对象。这个对象对应的int数值与字符串表示的数值一致。 例: int i= Integer. valueOf(”345”).intValue(); 对其他数据类型: float f= Float.valueOf(”345”).floatValue(); float f=Float.parseFloat(“345”); d) 字符串与int量相互转化的方法 Integer类的使用

3.9.3 Math类

3.9.3 Math类 Math类用来完成一些常用的数学运算, 提供了一些static方法, 使用时用类名做前缀就可以直接使用。如: k=Math.max(9,6); Math类的主要属性和方法: public final static double E; //数学常数e public final static double PI; //圆周率常量π public static double abs(double a); //绝对值 public static double exp(double a); //e的a幂 public static double floor(double a); //不大于a的最大整数 public static double log(double a); //自然对数

3.9.3 Math类 public static double sqrt(double a); //开平方 public static double random(); //产生0到1之间的随机数 public static double pow(double a, double b ); //乘方 public static double rint(double a); //四舍五入 public static double IEEEremainder(double a, double b); // 求余数 (取模运算) public static float min(float a, float b); //求最小值 public static double max(double a, double b); //求最大值

3.9.3 Math类 Math类使用示例

3.9.4 System类

3.9.4 System类 (1) 用System类获取标准输入/输出 public static InputStream in public static PrintStream out b) 标准输出 public static PrintStream err c) 标准错误

3.9.4 System类 System类使用示例

3.9.4 System类 (2) 用System类的方法获取系统信息及完成系统操作 System的操作 public static long currentTimeMillis( ) 获取自1970年1月1日零时至当前系统时刻的微秒数,通常用来比较两事件发生的先后时间差。 System的操作 public static void exit (int status) 在程序的用户线程执行完之前,强制java虚拟机退出运行状态,并把状态信息status返回给虚拟机的操作系统,如:System.exit(0);//非0为不正常退出 Public static void gc( ) 强制调用Java虚拟机的垃圾回收功能,收集内存中丢失的垃圾对象所占用的空间,使其可以被重新加以利用。

3.9.5 Date和Calendar类

3.9.5 Date和Calendar类 (1) Date(时间)类 可以使用 DateFormat 的子类 SimpleDateFormat 来实现日期的格式化输出, 其构造方法是: public SimpleDateFormat(String pattern) 该构造方法可以用参数 pattern 指定的格式创建一个对象,该对象调用format(Date date) 方法来格式化时间对象date。 系统中计算机的起始时间: 公元1970年1月1日0时(格林威治时间) 如果是北京时间为 公元1970年1月1日8时。

3.9.5 Date和Calendar类 Pattern中可以有的元字符 表示的内容 格式 年 y yy yyyy 月 M MM 日 d dd 时 H HH 分 m mm 秒 s ss 星期 E 用系统当前时间创建日期对象的方法:Date nowTime=new Date( )

3.9.5 Date和Calendar类 Date类使用示例

3.9.5 Date和Calendar类 (2) Calendar(日历)类 使用Calendar类的static方法 getInstance( ) 可以初始化一个日历对象: Calendar myCalendar= Calendar. getInstance( ); Calendar对象可以调用方法来设置时间: public final void set(int year, int month, int date) public final void set(int year, int month, int date, int hour, int minute) public final void set(int year, int month, int date, int hour,int minute,int second)

3.9.5 Date和Calendar类 Calendar(日历)类使用示例

3.9.6 集合框架与泛型编程

3.9.6 集合框架与泛型编程* (1) 集合框架 在JDK1.2之后,Java提供了实现常见数据结构的类,这些实现数据结构的类通称为Java集合框架。 例如: 链表类: LinkedList 顺序表类:ArrayList 堆栈类:Stack<E> 树集类: TreeSet<E> 散列映射(哈希表):HashMap<K,V> JDK1.5 之后有了泛型链表类: LinkedList <E> 优点: 使用泛型类建立的数据结构时,不必进行强制类型转换

3.9.6 集合框架与泛型编程* (2) 泛型编程 泛型(Generics):是在JDK1.5中推出的,目的是可以建立具有类型安全的集合框架。 在引入范型之前,Java数据类型分为基本数据类型、复合数据类型,其中复合类型分为数组和类。 引入范型后,一个复合类型就可以在细分成更多的类型。 例如: 原先的类型List,现在在细分成List<Object>, List<String>等更多的类型。

3.9.6 集合框架与泛型编程* 在引入泛型之前,要在类的方法中支持多个数据类型,就需要对方法进行重载;在引入泛型后,可以很方便的解决此问题(多态)。 例如: public void write(Integer i, Integer[] ia); public void write(Double d, Double[] da); 其范型版本为: public <T> void write(T t, T[] ta);

3.9.6 集合框架与泛型编程* 泛型类的定义格式: class 名称<泛型列表>{ …… // 类体 } 3.9.6 集合框架与泛型编程* 泛型类的定义格式: class 名称<泛型列表>{ …… // 类体 } 可以是任何对象或接口, 但不可以是基本数据类型 泛型类的类体定义与普通类的类体完全类似。

3.9.6 集合框架与泛型编程* 泛型编程示例——计算不同底的锥形体积

附加:Java的向量* 向量的概念 01 向量(Vector)是 java.util 包提供的一个用来实现不同类型元素共存的变长数组的工具类功能强大。 Vector类的对象(不能是简单数据类型)不但可以保存顺序的一列数据,而且还封装了许多有用的方法来操作和处理这些数据,比数组功能强大。

1 2 3 4 5 Java的向量* 适合用Vector类的情况: 需要处理的对象数目不定,序列中的元素都是对象,或可以表示为对象 单击此处添加段落文字内容 需要处理的对象数目不定,序列中的元素都是对象,或可以表示为对象 1 需要将不同类的对象组合成一个数据系列 2 需要做频繁的对象序列中元素的插入和删除 3 经常需要定位序列中的对象或其他查找操作 4 在不同类之间传递大量的数据 5

Java的向量* 创建向量类的对象 Vector类有三个构造方法,最复杂的是: 02 Vector类有三个构造方法,最复杂的是: public Vector(int initCapacity,int capacityIncrement); initCapacity: 表示刚创建时Vector序列包含的元素个数 capacityIncrement: 表示每次向Vector中追加元素时的增量 例: Vector myVector = new Vector(10,5) 表示创建的myVector 向量序列初始有10个元素,以后不够用时,按5为单位递增。创建时不需要指明元素类型,使用时再确定。

Java的向量* 向向量序列中添加元素 方法1:用addElement()方法将新元素添加在向量序列的尾部 03 方法1:用addElement()方法将新元素添加在向量序列的尾部 格式: addElement(Object obj); 方法2:用insertElement()方法将新元素插入在向量序列的指定位置处 格式:insertElement(Object obj, int index); 其中index为插入位置,0表示第1个位置。

Java的向量* 向向量序列中添加元素 例: Vector myVector=new Vector( ); 03 例: Vector myVector=new Vector( ); for ( int i=0; i<10;i++) { myVector. addElement( new Student(20150012+i, 666666)); } myVector. insertElement(new Student(201500121,666666),0);

1 2 3 4 Java的向量* 修改或删除向量序列中的元素 04 void setElementAt(Object obj, int index) 1 4 2 3 将向量序列index位置处的对象元素设置成为obj,如果此位置原来有元素则被覆盖。 boolean removeElement (Object obj) 删除向量序列中第一个与指定的obj对象相同的元素,同时将后面的元素前移。 void removeElementAt(int index) 删除index指定位置处的元素,同时将后面的元素前移。 void removeAllElements() 清除向量序列中的所有元素。

1 2 3 4 Java的向量* 查找向量序列中的元素 Object elementAt(int index) 05 Object elementAt(int index) 1 4 2 3 返回指定位置处的元素。通常需要进行强制类型转换。 boolean contains (Object obj) 检查向量序列中是否包含与指定的obj对象相同的元素,是则返回true,否则返回false。 int indexOf(Object obj,int start_index) 从指定的start_ index位置开始向后搜索,返回所找到的第一个与指定对象相同元素的下标位置,若指定对象不存在则返回-1。 int lastindexOf(Object obj,int start_index) 从指定的start_ index位置开始向前搜索,返回所找到的第一个与指定对象相同元素的下标位置,若指定对象不存在则返回-1。

3.9.6 集合框架与泛型编程* 向量使用示例

谢谢观看!