常用的Java基本类.ppt_第1页
常用的Java基本类.ppt_第2页
常用的Java基本类.ppt_第3页
常用的Java基本类.ppt_第4页
常用的Java基本类.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章 常用的Java基本类,主要任务: 学会创建与使用字符串类对象、系统类对象、数学函数类对象、日期类对象的方法,本章主要内容,1.字符串类String与StringBuffer 2.几个主要的Java基础类 3.总结提高 4.知识扩展,9.1字符串类String与StringBuffer,字符串是程序设计中经常用到的数据结构,很多编程语言将字符串定义为基本数据类型。但在Java语言中,字符串被定义为一个类,无论是字符串常量还是变量,都必须先生成String类的实例对象然后才能使用。,9.1.1 字符串类的特点,在Java中,字符串分为两种类型: 一种是用双引号括起来字符串常量,例如“This is a test string”,其字符串长度与内容不可改变,创建字符串常量时需要指定字符串的具体内容。字符串常量可以赋给任何一个String对象引用。 一种是字符串变量,在创建字符串对象后字符串的内容可以改变。,Java将字符串定义为类有哪些好处呢?,首先,在任何系统平台上都能保证字符串本身以及对字符串的操作是一致的。 其次,String和StringBuffer经过了精心设计,其功能是可以预见的。为此,二者都被说明为最终类,不能派生子类,以防用户修改其功能。 最后,String和StringBuffer类在运行时要经历严格的边界条件检验,它们可以自动捕获异常,提高了程序的健壮性。,9.1.2 字符串类的构造方法,例9.1 字符串的构造方法,如图所示。,import java.io.*; import java.Applet.Applet; import java.awt.Graphics; public class StringDemo extends Applet byte b=A, , b, y, t, e, , a, r, r, a, y; char c=A, , c, h, a, r, , a, r, r, a, y; String s1, s2, s3, s4, s5, s6, s7, s8, s9; StringBuffer b1, b2, b3;,public void init() b1=new StringBuffer(); / 创建一个空StringBuffer对象 b2=new StringBuffer(10); / 创建长度为10的空StringBuffer对象 b3=new StringBuffer(“A string buffer“); / 以字符串为参数创建StringBuffer对象 s1=new String(); / 创建一个空String对象 s2=new String(“A string“); / 以字符串为参数创建String对象 s3=new String(b3); / 以StringBuffer对象为参数创建String对象 s4=new String(b); / 以b为参数创建String对象,8位字节自动转为16位字符,s5=new String(b,2,4); / 从b的第3位,取4个元素为参数创建String对象 try / 如果下面的字符集编码不存在将抛出异常 s6=new String(b,2,10,“GBK“); / 同s5,最后的字符串参数为字符集编码 s7=new String(b,“GBK“); / 同s4,最后的字符串参数为字符集编码 catch (UnsupportedEncodingException e) / 捕获异常 s8=new String(c); / 以字符数组c为参数创建String对象 s9=new String(c,2,4); / 从c的第3位,取4个元素为参数创建String对象 ,public void paint(Graphics g) g.drawString(“s1 = “+s1, 20, 20); g.drawString(“s2 = “+s2, 20, 35); g.drawString(“s3 = “+s3, 20, 50); g.drawString(“s4 = “+s4, 20, 65); g.drawString(“s5 = “+s5, 20, 80); g.drawString(“s6 = “+s6, 20, 95); g.drawString(“s7 = “+s7, 150, 20); g.drawString(“s8 = “+s8, 150, 35); g.drawString(“s9 = “+s9, 150, 50); g.drawString(“b1 = “+b1.toString(), 150, 65); g.drawString(“b2 = “+b2.toString(), 150, 80); g.drawString(“b3 = “+b3.toString(), 150, 95); ,9.1.3 String类的方法,1求字符串长度 public int length() 可返回字符串长度。例如: String s=“欢迎使用Java语言“; int len=s.length(); len的值为10。注意:Java采用Unicode编码,每个字符为16位长,因此汉字和其它符号一样只占用一个字符。另外,字符串的length方法和表示一个数组长度的length是不一样的,后者是一个实例变量。,2字符串连接,public String concat(String str) 可返回一个字符串,它将把参数str添加在原字符串的后边。例如:“to“.concat(“get“).concat(“her“) 的返回值为“together”。 但在Java中,更多地是用“+”来连接字符串。例如: String str=“hello“; str=str+“ world!“;,3字符串截取,字符串截取有两个途径:一次截取一个字符或一次截取一个子串。前者可通过charAt方法(参见例7.4),后者使用substring方法。它有两种形式: String substring(int start) String substring(int start, int end) 其中start代表起始位置,end代表结束位置。例如: String str=“a short string“; String s1=str.substring(2); String s2=substring(8, 14);,4字符串比较,有两组方法用于字符串比较,一组是equals,用于比较两个字符串是否相等,返回值为布尔值。一组是compareTo,用于按字符顺序比较两个字符串,返回值为整型数。共有5个方法: boolean equals(Object object) boolean equalsIgnoreCase(String str) / 忽略字符大小写 int compareTo(Object object) int compareTo(String str) int compareToIgnoreCase(String str) / 忽略字符大小写,5复制到字符串,一个字符数组的内容可以全部或部分地拷贝到一个字符串中。有两个静态方法用于这种拷贝: static String copyValueOf(char data) static String copyValueOf(char data, int offset, int count) 例如: char c=A, , c, h, a, r, , a, r, r, a, y; String s1=new String(), s2=new String(); s1=s1.copyValueOf(c); s2=s2.copyValueOf(c, 2, 4);,6字符串大小写转换,一个字符串可以整体转换为大写或小写字符,例如: String s1=“all is lowercase“; String s2=“Some Is Uppercase“; s1=s1.toUpperCase(); s2=s2.toLowerCase(); 结果是s1的字符全部为大写,s2的字符全部为小写。,7字符串检索,你可以在一个字符串中检索指定字符或子串的位置,如果检索到将返回一个代表位置的整数,否则返回值为-1。有两组方法实现这种操作,indexOf方法返回字符或子串首次出现的位置,lastIndexOf方法返回字符或子串最后一次出现的位置。我们各选择两个典型的方法来说明这种检索操作: int indexOf(int ch) int indexOf(String str) int lastIndexOf(int ch) int lastIndexOf(String str),8字符串转换为数组,字符串可以转换为字节数组或字符数组,这种转换在Java流处理中十分有用。字符串转为字节数组将进行特别处理,因为字符是16位长,而字节为8位长,所以要将字符的高8位去掉,只保留低8位成为一个字节。有3个方法: byte getBytes() / 按系统缺省字符集编码转换为字节数组 byte getBytes(String enc) / 其中enc为字符集编码,参见例7.5 char toCharArray() / 转换为字符数组,9转换为字符串,String类提供了一组valueOf方法用来将其它数据类型转换成字符串,其参数可以是任何数据类型(byte类型除外)。它们都是是静态的,也就是说不必创建实例化对象即可直接调用这些方法,其基本用法为:valueOf(数据类型)。例如: char data=a, b, c, d, e; System.Out.println(String.valueOf(12D); System.Out.println(String.valueOf(32); System.Out.println(String.valueOf(data,1,3);,9.1.4 StringBuffer类的方法,StringBuffer提供的方法有一些与String相同,有一些不同。最主要的方法有两组,一组是append,另一组是insert,每组各有10个方法。,1append方法,append的10个方法主要在参数上有所不同,它可以把各种数据类型转换成字符串后添加进来(byte类型除外),其基本用法为:append(数据类型)。,2insert方法,insert方法和append方法在使用上非常类似,唯一的不同是多了一个位置参数,该参数必须大于等于0。其基本用法为:insert(插入位置,数据类型)。例如: char data=a, b, c, d, e; StringBuffer buffer=new StringBuffer(); buffer.insert(0, 100); buffer.insert(0, 2.5F); buffer.insert(3, *); buffer.insert(0, 250.0D); buffer.insert(5, “ is equal to “); 最后,buffer的内容为“250.0 is equal to 2.5*100”。,3其它方法,下面几个方法对程序员来说是经常用到的: public StringBuffer delete(int start, int end) / 删除子串 public StringBuffer deleteCharAt(int index) / 删除指定位置上的字符 public StringBuffer replace(int start, int end, String str) / 替换子串 StringBuffer reverse() / 翻转字符串,9.2 几个主要的Java基础类,9.2.1 根类Object Java的类的根类是Object。Java的每个类都默认为Object的子类,它是所有类的超类。所有的对象实例(包括数组)都可以实现Object类的方法。,总结:,(1)Object类的clone()方法 在Clone.java源程序中创建了两个类,一个是实现Cloneable 接口的DrawOval 画圆的类,同时实现了Cloneable 接口的clone()方法。 (2)Object类的主要方法 public Object() public int hashCode() public boolean equals(Object obj) protected Object clone() public String toString() public final void notify() public final void notifyAll() public final void wait(long timeout) protected void finalize(),9.2.2 系统类System,Java的标准输入输出方式 数据输入的起点为键盘,数据输出的终点是屏幕。 标准输入变量System.in System可以调用InputStream类的read方法来读取键盘数据达到通过键盘给程序输入数据的任务,这种输入数据的方式称为标准输入方式。 标准输出变量System.out System.out可以调用PrintStream的print、println或write方法实现标准输出,在屏幕上显示各种类型的数据。 回车符“r”,9.2.3 数学函数类Math,Math是一个最终类,含有基本数学运算函数,如指数运算、对数运算、求平方根和三角函数等,可以直接在程序中加Math前缀调用。下面是其成员变量和常用成员方法(举例说明): static double E / 数学常量e static double PI / 圆周率 static double sin(double a) / 正弦函数 static double cos(double a) / 余弦函数 static double tan(double a) / 正切函数 static double exp(double a) / 常数e的a次幂,9.2.4 Class类与Runtime类,通过Class类与Runtime类中的方法可以获得运行时的信息,如当前类每、超类名、包名以及内存空间,操作系统名称等。看下例。,public class Run1 public static void main (String args) String str = new String(“); System.out.println(“本类名 =“+str.getClass().getName(); System.out.println(“超类名 =“+str.getClass().getSuperclass().getName(); System.out.println(“包 名 =“+str.getClass().getPackage().getName(); System.out.println(“操作系统=“+System.getProperty(““);,System.out.println(“Java版本=“+System.getProperty(“java.vm.version“); System.out.println(“内存总量=“+Runtime.getRuntime().totalMemory(); System.out.println(“剩余空间=“+Runtime.getRuntime().freeMemory(); ,小结:,(1)Class类的方法 public Class getClasses() public String getName() public Package getPackage() (2)Runtime类的方法 public static Runtime getRuntime() public long totalMemory() public long maxMemory() public long freeMemory() 程序中,使用的getClass()方法是Object类的方法。,9.3 总结提高,Java.lang软件包中还定义了Java的8种基本数据类型对应的包装类: (1)Boolean 类将基本类型为 boolean 的值包装在一个对象中。 (2)Byte 类将基本类型 byte 的值包装在一个对象中。 (3)Character 类在对象中包装一个基本类型 char 的值。 (4)Double 类在对象中包装了一个基本类型 double 的值。 (5)Float 类在对象中包装了一个 float 基本类型的值。 (6)Integer 类在对象中包装了一个基本类型 int 的值。 (7)Long 类在对象中封装了基本类型 long 的值。 (8)Short 类在对象中包装基本类型 short 的值。,9.4 知识扩展,9.4.1 日期类 Java提供了3个日期类Date、Calendar和DateFormat来处理日期在程序中的显示方式 。,小结,引入java.util包 Java提供了3个日期类:Date、Calendar和DateFormat。 日期和时间的格式化处理 通过DateFormat的getInstance方法可以创建一个默认的格式化器,它可以同时对日期和时间进行格式化,返回值为字符串类型。 Calendar类的特点,9.4.2 随机数类Random,Random有两个构造方法:Random()、Random(long seed)。前者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论