四章类和对象常用类.ppt

上传人:本田雅阁 文档编号:3208202 上传时间:2019-07-31 格式:PPT 页数:67 大小:893.05KB
返回 下载 相关 举报
四章类和对象常用类.ppt_第1页
第1页 / 共67页
四章类和对象常用类.ppt_第2页
第2页 / 共67页
四章类和对象常用类.ppt_第3页
第3页 / 共67页
四章类和对象常用类.ppt_第4页
第4页 / 共67页
四章类和对象常用类.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《四章类和对象常用类.ppt》由会员分享,可在线阅读,更多相关《四章类和对象常用类.ppt(67页珍藏版)》请在三一文库上搜索。

1、第四章 类和对象-2 常用类和接口,Company Logo,,主要内容,学习目标 重点、难点,Company Logo,回顾,类的定义 属性 方法 (访问控制权限4个,static、final) 构造方法 方法重载 对象 创建对象 使用对象 对象的生命周期,本章背景,本章将学习 Java中有很多常用的类和接口,非常实用 要求学生 掌握String和StringBuffer类的区别和使用 掌握Math类和数据包装类的使用 掌握java.lang中其他常用的类 掌握java.util中常用的类 掌握Date,Calendar,Vector类的使用 会查看API文档 掌握常用类的使用,任务学习,C

2、ompany Logo,任务描述 任务一:会使用java.lang中常用的类,任务学习,Company Logo,支撑知识介绍 Java.lang包 类Object,System 类String,StringBuffer 类Math,Class 基本数据类型包装类,8,Java类库,Java的类库 系统提供的已实现的标准类的集合 是Java编程的API(Application Program Interface),它可以帮助开发者方便、快捷地开发Java程序。 系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为类库。 API 应用程序编程接口 面向过程语言 函数库

3、(子程序包) 面向对象语言 类库,9,Java类库结构,类库的结构 java.lang 语言基础类库(System、Math、 Thread、基本数据类型类) java.util Java的工具类库(向量、栈、日期) java.io Java的标准输入输出类库 java.applet 用于实现Java Applet小程序的类库 java.awt 用于构建图形用户界面的类库 java.awt.event 界面用户交互控制和事件响应类库 Java的用于实现网络功能的类库 使用JDK API查看类库,10,语言基础类库Object类,Object类 Java程序中所有类的直接或间接父类,也是类库中

4、所有类的的父类 构造方法 Object( ) 一般方法: Object clone( ) 生成当前对象的一个拷贝。 boolean equals(Object obj) 比较两个对象是否相等。 Class getClass() 获取当前对象所属的类信息。 String toString() 用来返回当前对象本身的有关信息。 protected void finalize() 当垃圾收集器确定对象上没有其他的引用时,调用对象上的垃圾收集器。Object类上的此方法不执行任何特定行为,仅简单返回,其子类会覆盖此方法。,11,关于toString()方法,public String toString

5、()方法 其返回值是String类型,描述当前对象的有关信息 在进行String与其它类型数据的连接操作时(如:System.out.println(“info”+Person),将自动调用该对象类的toString()方法 可以根据需要在用户自定义类型中重写toString()方法,12,equals()方法,public boolean equals(Object obj)方法 判断对象是否“相等” x.equals(y),当x和y是同一个对象的应用时返回true,否则返回false 有些类,如String、Date等,重写了equals()方法,当使用x.equals(y)时表示x和y所

6、引用的对象是同一类对象且属性内容相等(并不一定是相同对象)返回true,否则返回false 可以根据需要在用户自已定义的类中重写equals()方法,13,语言基础类库System类,System类 系统功能类,提供了标准输入输出、运行时的系统信息等工具 不能创建System类的对象 所有的属性和方法都是静态(static)的,引用时应以System为前缀 属性 获取系统标准输入/输出/错误输出 System.in(对应于键盘输入或用户指定输入源) System.out(对应于显示屏或用户指定的输出源) System.err(对应于显示屏或用户指定的输出源) 方法 获取系统信息、完成系统操作的

7、方法 public static long currentTimeMillis(); /获取自1970年1月1日零时至当前系统时刻的微秒数 public static void exit(int status); /强制Java虚拟机退出运行状态,System.exit(n); n非0描述非正常中断. public static void gc(); /强制调用Java虚拟机的垃圾回收功能。,14,示例: System类,System.in输入 char c=System.in.read(); System.out.println(c); Scanner in=new Scanner(Syst

8、em.in);,15,JAVA中的字符串,Java把字符串(常量或变量) 可以使用String类和StringBuffer类的对象来处理。 由于使用频繁,有时也被视为基本类型 遇到双引号自动创建String类的对象 提供字符串运算符,字符串的连接:+ 定长字符串:String类(效率较高) 不能更改,可用于比较、搜索之类的操作 可变字符串:StringBuffer类(使用灵活) 可追加、插入、修改,但内存管理复杂,String类,在Java中,字符串被当作对象来处理。分为两大类: String 字符串中每个字符是16位,2字节的unicode码 创建之后不会再做修改和变动 String类是fi

9、nal的,不可被继承 String类对象有个特殊的创建的方式,就是直接指定 ,比如String x = “abc“ String对象可以通过“+”串联。 StringBuffer 对字符串做大量修改时使用 创建之后允许再做更改和变化,17,字符串类-String,String Java语言将字符串作为对象来处理,每一个字符串常量是字符串类的一个实例。 构造方法 String()、String(String)、 String(char chars) 创建字符串 ,三种方式 使用new关键字创建字符串 比如String s1 = new String(“abc“); char a=X, M, J;

10、 String s=new String(a); char a=S, C, E, M, I, X, M, J; String s=new String(a,5,3); 直接指定。由于字符串经常使用,可以直接使用字符串常量生成一个String类的对象 比如String s2 = “abc“; 使用串联生成新的字符串 比如String s3 = “ab“ + “c“; Object 的方法 toString() 实现其他对象向字符串的转换,18,字符串类-String,方法 int length() / 返回字符串长度 例:“Java与面向对象程序设计”.length() 的值为13 char c

11、harAt(int index) /返回指定位置的字符 例: “Java与面向对象程序设计“.charAt(2) int compareTo(String s2) /按字母序进行字符串比较 boolean equals(Object obj)/判断字符串相等(区分大小写) boolean equalsIgnoreCase(String s2) /(不区分大小写) String toLowerCase()/将字符串所有大写字母转换为小写 String toUpperCase()/将字符串所有小写字母转换为大写 valueOf(Object obj) /将某个对象的实例转换成字符串,19,字符串类

12、-String,String substring(int beginIndex) /取子串 String substring(int beginIndex, int endIndex) int indexOf(String str) /返回str在当前串中开始位置 int indexOf(String str,int fromIndex) int lastIndexOf(String str,int fromIndex) / boolean startsWith(String prefix) /判断该字符串是 否以prefix为前缀。 boolean endsWith(String suffi

13、x) /判断该字符串是 否以suffix为后缀。 char toCharArray() /将字符串转为字符数组 String concat(String str); /连接字符串 replace(char oldChar,char newChar) /字符替换 ,20,字符串类StringBuffer,String类 是不可变的字符串,如果需要修改String对象所表示的内容,必须重新创建一个对象: String str=“Peter“; str=str+“ 当修改操作频繁,或字符串的值很大时,会额外分配大量内存 可变字符串 -StringBuffer类 用来表示内容可以扩充和修改字符串对象,

14、StringBuffer类,StringBuffer类 可变的字符串,有改变字符串内容和长度的若干方法, StringBuffer在多线程中使用是安全的 StringBuffer对象的构造 StringBuffer sb1=new StringBuffer();构造一个空的对象 StringBuffer sb2=new StringBuffer(10);构造一个没有字符,容量为length的对象 StringBuffer sb3=new StringBuffer(“string”);构造一个内容与参数相同的对象 注意,下面语句不能创建StringBuffer对象: StringBuffer m

15、s=“my Stringbuffer“;,22,字符串类StringBuffer方法,String toString() 将可变串变为不可变字符串 int length() 得到当前StringBuffer的长度(字符数) int capacity() 得到当前StringBuffer的容量 int indexOf(String str) 获取str在字串中的位置 StringBuffer append(String str) 将str添加到StringBuffer中 StringBuffer delete(int start,int end) 删除start和end间的字符 StringBu

16、ffer insert(String str,int index) 向StringBuffer插入字串 StringBuffer replace(int start,int end,String str) 用str代替start和end之间的字符 void setCharAt(int index,char ch) 设置位置index的字符为ch /这些方法一般都有重载,参数可以是单个字符(char),23,字符串的赋值和加法,Java的字符串连接运算符 +,例如: String str=“Hello,“; str=str+“Tom!“; 编译器自动将该语句解释为: String str=new

17、 StringBuffer().append(“Hello,“).toString(); str= str=new StringBuffer().append(“Tom!“).toString();,24,语言基础类库-Class类,Class类 封装了对一个对象的描述。 Class类的实例代表一个正在运行的Java应用程序的类或接口 Class类没有公共的构造器,用户无法自己生成Class类的对象,由JVM自动构造 Object是“万类之源”,Class是类的运行时表示,可以把每个Class类的对象当做众多类的代理,25,语言基础类库-Class类,Java运行时系统会对所有的对象进行类型识

18、别 public final Class extends Object 一般方法: String getName() 返回类名。 Field getFields() 返回类的域名。 Method getMethods() 返回类的public方法对象。 Package getPackage() 返回该类的包。,26,语言基础类库:Math类,Math类用来完成常用的数学运算 数学常量:E,PI 数学运算:(一般运算都以double进行) Math.abs(- 8.09); Math.exp( 5.7); Math.random(); Math.sqrt(9.08); Math.pow( 2,3

19、); /乘方 Math.round(99.6); 均为static,使用时无需创建实例 Math.method(variable);,27,数学运算的Math类,属性 public final static double E; / 数学常量e public final static double PI; / 圆周率常量 方法(均为静态方法 public static ),28,数学运算的Math类,29,示例: Math类,public class MathMethod public static void main(String args) System.out.println(“Math.

20、abs(-23.7)=“+Math.abs(-23.7); System.out.println(“Math.abs(-1059)=“+Math.abs(-1059); System.out.println(“Math.ceil(23.7)=“+Math.ceil(23.7); System.out.println(“Math.floor(23.7)=“+Math.floor(23.7); System.out.println(“Math.exp(2)=“+Math.exp(2); System.out.println(“Math.log(Math.E)=“+Math.log(Math.E);

21、 System.out.println(“Math.pow(2,15)=“+Math.pow(2,15); System.out.println(“Math.sqrt(625)=“+Math.sqrt(625); System.out.println(“Math.max(6.25,10.35)=“+Math.max(6.25,10.35); System.out.println(“Math.mix(6.25,10.35)=“+Math.min(6.25,10.35); ,30,语言基础类库:数据类型包装类,基本数据类型不是类,定义变量没有创建对象的过程,提高了性能。 基本数据类型 vs. 数据

22、类型包装类 boolean vs Boolean, char vs Character,int vs Integer等 数据类型包装类 规定了数据类型的最大值MAX_VALUE、最小值MIN_VALUE 构造函数:如new Integer(10); 完成不同数据类型间转换,注意不同的数据类使用的方法会有不同。 Double.toString(0.08)、Integer.parseInt(“123”)、 Double.ValueOf(“0.08”).intValue ()等,详细见JDK Doc,31,自动包装和自动解包,包装 把基本数据类型(如int)转换成基础类型封装类的对象(如new In

23、teger() Integer a=new Integer(3); /手工包装 Integer a=3; /自动包装 Java 1.5之后 解包 把基础类型封装类的对象转换为基础数据类型 a.intValue /获取int形式的值 a=a+3; /自动解包,a.intValue()+3,32,Wrapper(包装)类,33,Integer类,整数类中包含了对整形数据(int)的各种常用操作 属性 static int MAX_VALUE 返回int型数据的最大值 static int MIN_VALUE 返回int型数据的最小值 构造方法 Integer a=new Integer(); In

24、teger(int value) Integer(String s) 方法 int intValue() double doubleValue() long longValue() String toString() static String toString(int i) static int parseInt(String s) static int parseInt(String s,int radix) throws NumberFormatException static Integer valueOf(String s) valueOf(int i) valueOf(String

25、 s,int radix) static int parseInt(String s),34,Character类,在处理字符串时,用Character类中的一些方法进行字符分类 常用方法 Public static boolean isDigit(char ch) ch是否是数字字符 Public static boolean isLetter(char ch) ch是否是字母 Public static boolean isLetterofDigit(char ch) ch是否是数字或字母 Public static boolean isSpace(char ch) ch是否是空格 Pub

26、lic static boolean toLowerCase(char ch) 返回ch的小写形式,35,类型转换利用类/对象方法,利用类方法(静态方法) Integer.parseInt(“23”) Integer.parseInt(“23“,16) Integer.parseInt(“110“,2) Integer.parseInt(“110“,8) Integer.toString(23) Double.parseDouble(“12.3”) Double.toString(12.3) 利用对象方法 Double d ; String s; / 声明 d=new Double(12.3)

27、 ; /创建 s= d.toString(); Double.valueOf(“12.3”).doubleValue() ; /返回 double d1=3; Double d2=4; = Double d2=new Double(4);,思考:字符串和基本数据类型的转换,Company Logo,如何将字串 String 转换成整数 int? 有 两个方法: 1).使用Integer类的parseInt方法转换成int型 int i=Integer.parseInt(“123”); short s=Short.parseShore(“123”); float f=Float.parseFlo

28、at(“1.3”); 2). int i = Integer.valueOf(my_str).intValue(); boolean b1=Boolean.valueOf(s1).booleanValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 如何将整数 int 转换成字串 String ? A. 有叁种方法: 1.) String s = String.valueOf(i); 2.) String s = Integer.toString(i); 3.) String s = “ + i; 注: Double, Float, Long 转成字串的方法

29、大同小异.,思考:字符串“+”运算符,多个字符串通过连接运算(+)生成新字符串对象 “two string” + “ concatenate into one” 字符串可以和基本类型做连接运算。 String s = “0xF = ” + 0xF; / “0xF = 15” 字符串可以和任何对象做连接运算。 String s = “s = ” + anObject; / “s = ” 任何一个对象都有toString()方法,字符串对象的比较,基本数据类型比较,用“=”判断,可判断变量值是否相等 字符串中用“=” 比较两个是否是同一个对象 String s3=new String(“abc”)

30、; String s4=new String(“abc”); String s5=s3; boolean b2=(s3=s4); 结果为false boolean b3=(s3=s5); 结果为true String s1=“abc”; String s2=“abc”; boolean b1=(s1=s2); 结果为true,注意:“”比较的是两个对象是不是同一个对象,字符串内容的比较,方法一: boolean equals(String str) 当Str不为空并且是一个与原字符串有相同内容的String对象时,返回true,否则返回false。 String s1=“abc”; Strin

31、g s2=“abc”; boolean b1=s1.equals(s2); 结果为true String s3=new String(“abc”); String s4=new String(“abc”); boolean b2=s3.equals(s4); 结果为true boolean b3=s1.equals(s1); 结果为true,注意:equals比较的是字符串的内容是否相等,字符串的大小比较,方法二 int compareTo(String str) 将目标串与源串按字典序比较 ,如果相等,则返回0,若源串大于目标串,则返回正整数,若源串小于目标串,则返回负整数。 String

32、s1=“abc”; String s2=“abc”; String s3=“hello”; int c1=pareTo(s2); int c2=pareTo(s3); int c3=pareTo(s1);,字符串的大小比较,方法三: int compareToIngoreCase(String str) 忽略大小的比较方式,例: String s1=“abc”; String s2=“ABc”; int c1=pareTo(s2); 结果为32 int c2=pareToIngoreCase(s2); 结果为0,附加:StringTokenizer类,分解字符串成可被独立使用的单词 创建Str

33、ingTokenizer对象 StringTokenizer(String s) StringTokenizer(String s,String delim) StringTokenizer类常用方法 countTokens() 单词计数变量 hasMoreTokens() countTokens0 true nextToken() 逐个获取单词,Company Logo,43,练习,使用String类的方法 将两个字符串连接为一个新串,并得到新串的第一个和最后一个字符。 定义Person类,包括姓名、身高、体重属性,重写其equals()方法,用来判断两个人是否为同一个人,重写toStrin

34、g()方法,输出每个人的相关信息,任务学习,Company Logo,总结 数据包装器类 了解xxxValue(),parseXxx(),valueOf()和toString()的方法 要注意哪些是静态方法,哪些会跑出数据格式异常 Mah类,要了解方法名 字符串中长度和数组长度区别 String和StringBuffer区别 字符串比较 对象和内容 字符串”+”运算符 字符串和基本数据类型转换,任务学习,Company Logo,任务描述 任务二:会使用java.util中常用的类,任务学习,Company Logo,支撑知识介绍 Java.util包 (Date)类、日历(Calendar)

35、类 (Random)类 数组辅助类Arrays Java中的数据结构 (以后学) 线性表、堆栈(Stack)、向量(Vector)、位集合(Bitset)以及哈希表(Hashtable),47,实用工具类库java.util,java.util 包提供了一些实用的方法和数据结构 提供日期(Date)类、日历(Calendar)类来产生和获取日期及时间 提供随机数(Random)类产生各种类型的随机数 提供了数组辅助类Arrays 提供了处理数据结构的类和接口 堆栈(Stack)、向量(Vector)、位集合(Bitset)以及哈希表(Hashtable)等类,48,java.util包Rand

36、om类,Random类 能产生int、long、float或double类型的随机数 构造方法 Random() 和 Random(seed) 常用方法: nextInt() 返回一个int类型的随机数 nextInt(int limit) 返回一个大于等于0小于limit的int型的伪随机数 nextFloat() 返回一个float类型伪随机数 nextBytes(byte bytes) 使用伪随机值填充数组bytes setSeed(long seed) 重置随机数发生器,49,java.util包Date类,日期类Date 封装了有关日期和时间的信息,用户还可以通过调用相应的方法来获取

37、系统时间或设置日期和时间 Date类定义一个精确到毫秒的瞬间时刻,是从1970年1月1日的00:00:00 GMT开始计时的时刻值 构造方法 public Date() public Date(long date) /date以毫秒为单位,从1970.1.1 0:0开始 参数说明 year值:需设定的年份-1900 month(0-11) date(1-31) hrs(0-23) min,sec(0-59),50,java.util包-Date类,Date类的常用方法 boolean after(Date when) 测试此日期是否在指定日期之前 boolean before(Date whe

38、n) 测试此日期是否在指定日期之后 boolean equals(Object obj) 比较两个日期是否是同一个日期 int compareTo(Date another) 比较两个日期的大小,当前对象大于、等于或小于实参返回正整数、零或负整数 public long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。 string toString() 将

39、日期值转换为String: dow mon dd hh:mm:ss zzz yyyy 形式 SimpleDateFormat类,指定日期的格式 SimpleDateFormat sdf=new SimpleDateFormat(“yyyy年MM月dd日 北京时间”);,51,示例: Date类,import java.util.Date; public class DateTest public static void main(String args) Date curDate=new Date(); System.out.println(“Current Date=“+curDate);

40、Date newDate=new Date(10000); System.out.println(“New date=“+newDate); System.out.println(curDate.after(newDate); System.out.println(curDate.before(newDate); System.out.println(“MS since 1970-1-1:“+curDate.getTime(); ,52,java.util包Calendar类,Calendar描述一个特定日期内的某一特定的时刻,Calendar是抽象类,不能创建对象 Calendar的常用方法

41、 getInstance( ) 得到表示当前时间的实例 Calendar cal=Calendar.getInstance(); get(int) 获取相应信息,如get(Calendar.YEAR) set(int,int) 如 set(Calendar.YEAR,1999) set(year,month,date) set用来设置信息 Calendar.getTime() 得到当前时间的Date对象,53,java.util包-GregorianCalendar,GregorianCalendar是Calendar的子类 它实现了世界上普遍使用的公历系统(阳历),它就像是一本台历,只显示一

42、个日期,可以翻过几天、几个月或几年显示另一个日期 GregorianCalendar对象封装了时区信息及日期和时间数据 构造方法(共七个) GregorianCalendar() GregorianCalendar(int year,int month,int date) GregorianCalendar(int year,int month,int date,int hour,int minute) GregorianCalendar(int year,int month,int date,int hour,int minute,int second) 用给定的日期和时间创建一个Grego

43、rianCalendar对象 常用方法,见API文档 public boolean isLeapYear(int year) 确定给定的年份是否为闰年。,54,java.util包-GregorianCalendar,设置日期和时间 可以用Date对象设置 GregorianCalendar calendar=new GregorianCalendar(); calendar.setTime(Date); 用显式的值为设置日期或时间 Calendar.set(2008,9,30); Calendar.set(int field,int value); /对字段进行设置 获取日期和时间信息 使用

44、get()方法并指定所需信息为实参,可获取日、月和年的信息,返回值是整数。 int day=calendar.get(calendar.DAY_OF_WEEK); 修改日期和时间 使用add()方法可以修改日历中的当前实例 calendar.add(calendar.YEAR,14); /在当前的年份上加14 使用roll()方法可以对一个日历的某个字段增一或减一 Calendar.roll(calendar.MONTH,false); /月份减1,55,示例: Calendar, GregorianCalendar,import java.util.*; public class Calen

45、darTest public static void main(String args) String arrW=“日“,“一“,“二“,“三“,“四“,“五“,“六“; System.out.println(“当前时间:“+Calendar.getInstance().getTime(); Date d1=new GregorianCalendar(2005,8,1,1,1,00).getTime(); Date d2=new Date(); long diff=d2.getTime()-d1.getTime(); System.out.println(d1+“与“+d2+“差距天数=“+d

46、iff/(1000L*60*60*24); Calendar c=Calendar.getInstance(); System.out.println(“-当前时间- “); System.out.println(“年:月:日“+c.get(Calendar.YEAR)+“:“+(c.get(Calendar.MONTH)+1)+“:“+c.get(Calendar.DATE); System.out.println(“时:分:秒“+c.get(Calendar.HOUR)+“:“+c.get(Calendar.MINUTE)+“:“+c.get(Calendar.SECOND)+“ “+(c

47、.get(Calendar.AM_PM)=1?“PM“:“AM“); System.out.println(“星期 “+arrWc.get(Calendar.DAY_OF_WEEK)-1); ,DateFormat类,提供了将日期/时间信息进行格式化处理的功能 主要方法: public static final DateFormat getDateInstance() 获得日期 formatter,该 formatter 具有默认语言环境的默认格式化风格。 public static final DateFormat getDateTimeInstance() 获得日期/时间 formatte

48、r,该 formatter 具有默认语言环境的默认格式化风格。 public final String format(Date date) 将一个 Date 格式化为日期/时间字符串。,SimpleDateFormat类,void applyPattern(String pattern) 将给定模式字符串应用于此日期格式。 指定日期的格式 SimpleDateFormat sdf=new SimpleDateFormat(“yyyy年MM月dd日 北京时间”);,58,练习,以下图格式输出2008年10月的日历页,数组实用类:Arrays,操纵数组的实用类Arrays。它提供一系列静态方法 e

49、quals():比较两个数组是否相同。只有当两个数组元素数目相同,并且对应位置的元素也都相同时,才表明数组相同。 fill():向数组填充数据。 sort():把数组的元素按升序排列。 binarySearch():按照二叉查找算法,查找数组中值与给定数据相同的元素。 toString():返回包含数组中所有元素信息的字符串。,集合容器,后面学,Company Logo,任务学习,Company Logo,总结 日期 Date类 大多数方法都不赞成使用 存储为long,从1970年1月1日起的毫秒数 Date对象是Calendar类和Locale类之间的媒介 Calendar类 提供一组用于操作日期的强大方

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1