Top Banner
第第第 Java 第第第第第 Java 第第第第第第
50

第八讲 Java 常用类简介

Jan 25, 2016

Download

Documents

BERTHA GUZMAN

Java 程序设计基础. 第八讲 Java 常用类简介. 主要内容:. Object Math String 和 StringBuffer Vector Random StringTokenizer 与各基本数据类型相对应的类. Object 类是 Java 中所有类的超类,在 java 类的继承关系图上处于根部 (root) ,所有 class 的对象 ( 包括数组对象 ) 都继承了 Object 的方法 Object 有一个构造方法和 11 个成员方法 ( 见下页 ) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 第八讲   Java 常用类简介

第八讲 Java 常用类简介

Java 程序设计基础

Page 2: 第八讲   Java 常用类简介

主要内容: Object Math String 和 StringBuffer Vector Random StringTokenizer 与各基本数据类型相对应的类

Page 3: 第八讲   Java 常用类简介

类的介绍 /Object

Object 类是 Java 中所有类的超类,在 java 类的继承关系图上处于根部 (root) ,所有 class 的对象 ( 包括数组对象 ) 都继承了 Object 的方法

Object 有一个构造方法和 11 个成员方法 ( 见下页 )其中最常用的是 public boolean equals(Object obj)和 public String toString()

第一个方法用来比较两个对象是不是相等,第二个方法常常被重写以输出一个有意义的字符串

Page 4: 第八讲   Java 常用类简介

类的介绍 /ObjectObject() 构造方法clone() 克隆一个对象equals(Object obj) 判断本对象与 obj 是否相等finalize() 被垃圾收集器调用getClass() 返回对象的 classhashCode() 返回对象的 hash code 值notify() 叫醒一个正在等待的线程notifyAll() 叫醒所有正在等待的线程toString() 返回代表这个对象的字符串wait() 让本线程进入等待wait(long timeout) 让本线程进入等待wait(long timeout, int nanos) 让本线程进入等待

Page 5: 第八讲   Java 常用类简介

class A{public String toString(){

return "A is for ObjectTest class";}

}public class ObjectTest { public static void main(String[] s){ A a1 = new A(); A a2 = new A(); A a3 = a1;

System.out.println("a1.equals(a1) is " + a1.equals(a1));

System.out.println("a1.equals(a2) is " + a1.equals(a2));

System.out.println("a1.equals(a3) is " + a1.equals(a3));

System.out.println(a1.toString());System.out.println("a1 is a instance of class "

+ a1.getClass().getName());}

}

类的介绍 /Object重写了 toString() 方法

继承了 equals() 等方法

a1.equals(a1) is truea1.equals(a2) is falsea1.equals(a3) is trueA is for ObjectTest classa1 is a instance of class A

Page 6: 第八讲   Java 常用类简介

类的介绍 /MathMath 类里给出了数学计算所需要的函数,包括:

这些都是静态 (static) 的方法,用 Math.XXX() 直接调用

另外它还提供了两个常数 e 和 π

Math.E, Math.PI

绝对值 abs(a) 这里 a 可以是 int,long,float 和 double

三角函数 sin(a) 、 cos(a) 、 tan(a) 等乘方 pow(a,b) a 的 b 次方自然对数 log(a) 以 e 为底的对数开方 sqrt(a) 求 a 的平方根随机数 random() [0.0, 1.0) 不小于 0.0 小于 1.0 的数

Page 7: 第八讲   Java 常用类简介

public class MathTest{ public static void main(String[] s){ System.out.println("sin(π/4) is " + Math.sin(Math.PI/4.0)); System.out.println("2 的 4 次方是 " + Math.pow(2,4)); System.out.println(" 以 e 为底的 e 的对数是 " + Math.log(Math.E)); System.out.println("81 的平方根是 " + Math.sqrt(81)); }}

类的介绍 /Math(1)

sin(π/4) is 0.70710678118654752 的 4 次方是 16.0以 e 为底的 e 的对数是 1.081 的平方根是 9.0

Page 8: 第八讲   Java 常用类简介

import java.awt.*;import java.awt.event.*;

class RandomFrame extends Frame implements ActionListener{ RandomFrame(){

this("RandomFrame"); } RandomFrame(String title){

super(title);add(pane = new Panel());setPane();pack();Dimension dm = getSize();Dimension ss = getToolkit().getScreenSize();setCenter(ss, dm); 转下页

类的介绍 /Math(2)random() 方法的演示程序

Page 9: 第八讲   Java 常用类简介

接上页addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) {

dispose();System.exit(0);

}});

} // 构造方法结束

private void setCenter(Dimension screen, Dimension frame){ int x = screen.width/2 - frame.width/2;

int y = screen.height/2 - frame.height/2; setLocation(x,y);} 转下页

类的介绍 /Math(2*)random() 方法的演示程序

Page 10: 第八讲   Java 常用类简介

接上页 private void setPane(){

tfd = new TextField(20);tfd.setFont(new Font("Tahoma", Font.BOLD, 16));pane.add(tfd);btn = new Button("RandomNumber Generator");btn.addActionListener(this);pane.add(btn);

} public void actionPerformed(ActionEvent ae){

Button b = (Button)ae.getSource();if(b == btn){

String s = Double.toString(Math.random());tfd.setText(s);

} } 转下页

类的介绍 /Math(2**)random() 方法的演示程序

Page 11: 第八讲   Java 常用类简介

接上页

private Button btn;private TextField tfd;private Panel pane;

} //RandomFrame class 结束

public class MathTest2{public static void main(String[] s){

RandomFrame rf = new RandomFrame();rf.show();

}}

类的介绍 /Math(2***)random() 方法的演示程序

Page 12: 第八讲   Java 常用类简介

12

字符串在 Java 中是一个特殊的类 String, 它是一个 final class. 因此不能被继承

String 被 Java 的开发者构造得非常接近基本数据类型,换句话说,在很多时候可以象使用基本数据类型一样来使用 String 类

类的介绍 /String

Page 13: 第八讲   Java 常用类简介

13

Constructor 说明

String() 生成一个空字符串

String(char[] chars) 从一个字符数组生成一个字符串

String(char[] chars, int offset, int count)

从一个字符数组的第 offset个位置开始取 count 个字符生成一个字符串

类的介绍 /String

Page 14: 第八讲   Java 常用类简介

14

声明了一个空字符串 s的方式String s;String s = new String();

创建一个字符串的方式String ss = “创建了一个字符串” ;String ss =

new String(“创建了一个字符串” );

类的介绍 /String类的声明

Page 15: 第八讲   Java 常用类简介

15

声明一个字符串数组String[] sa = new String[]{“创建了一个字符串” , “数组” };

String[] sa2;Sa2 = new String[3];Sa2[0] = “第一个元素” ;Sa2[1] = “第二个元素” ;Sa2[2] = “第三个元素” ;

类的介绍 /String

Page 16: 第八讲   Java 常用类简介

16

String 的主要方法 说明int length() 字符串中字符的个数char charAt(int index) 返回位于 index 处的字

符void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

拷贝字符数 = srcEnd-srcBegin从 dst 的 dstBegin 位置开始放

类的介绍 /StringString 的成员方法:

Page 17: 第八讲   Java 常用类简介

17

String 的主要方法 说明int indexOf(int ch) 返回第一个 ch字符的位置int indexOf(String s) 返回第一个子串 s的位置boolean equals(Object str) 将当前字符串与 str 比较boolean equalsIgnoreCase(String s)

当前字符串与 s进行比较 ,忽略大小写

类的介绍 /StringString 的成员方法:

Page 18: 第八讲   Java 常用类简介

18

String 的主要方法 说明int compareTo(String s) 当前字符串大 /长时返

回大于 0的值String subString(int beginIndex) 取从 beginIndex 到尾的

子串String subString(int bIdx, int eIdx)

取从 bIdx 到 eIdx 的子串

String 的成员方法:

类的介绍 /String

Page 19: 第八讲   Java 常用类简介

19

String 的主要方法 说明String concat(String s) 将 s接在当前字符串的尾部 ,

等于运算符 +String toLowerCase() 获得小写字母版本 *String toUpperCase() 获得大写字母版本 *String replace(char oldCh, char newCh)

用 newCh 替换 oldCh

String 的成员方法:

类的介绍 /String

Page 20: 第八讲   Java 常用类简介

20

String 的主要方法 说明String trim() 去掉两端的空格String valueOf(…) **boolean startWith(String s) 查当前字符串是否以字

串 s开始boolean endtWith(String s) 查当前字符串是否以字

串 s结束

String 的成员方法:

类的介绍 /String

Page 21: 第八讲   Java 常用类简介

21

StringBuffer 类的构造函数StringBuffer();

返回一个空串 ,长度为 16个字节

StringBuffer(int length);返回一个空串 ,长度为 length 个字节

StringBuffer(String s);返回一个字符串 ,初始化为 s,长度为 s.length() + 16 个

字节

类的介绍 /StringBuffer

Page 22: 第八讲   Java 常用类简介

22

StringBuffer 类中常用的方法StringBuffer append(…);

// 共有 11 个 append 方法StringBuffer insert(…);

// 共有 10 个 insert 方法int length(); // 长度int capacity(); // 容量

类的介绍 /StringBuffer

Page 23: 第八讲   Java 常用类简介

23

StringBuffer 类中常用的方法String toString();StringBuffer reverse(); //反转字符串StringBuffer replace(int start,int end,String s);String substring(int start);String substring(int start,int end);

类的介绍 /StringBuffer

Page 24: 第八讲   Java 常用类简介

StringBuffer /append, replace, reverse

/*public StringBuffer append(…); */public class StringBufferDemo { public static void main(String[] args) { String s = new String(“This is A String”); StringBuffer sb = new StringBuffer(s); sb.replace(8,16,”a StringBuffer”); //>=s.length() sb.append(“Demo.”); System.out.println(sb.toString()); //more append int len = sb.length(); sb.reverse().append(‘\n’).append(“the length of sb = ”) .append(len).append(‘,’).append(true).append(‘!’); System.out.println(sb.toString()); }}

This is a StringBufferDemo..omeDreffuBgnirtS a si sihTthe length of sb = 27,true!

Page 25: 第八讲   Java 常用类简介

StringBuffer / insert, delete

/*public StringBuffer insert(…); */public class StringBufferDemo2 { public static void main(String[] args) { String s = new String(“This is A String”); StringBuffer sb = new StringBuffer(s); sb.deleteCharAt(8); //删除字母 A sb.insert(8, ‘a’); //插入一个字符 int ver = 2; sb.insert(sb.length(),“BufferDemo”) //插入一个字符串 .insert(sb.length(),ver); //插入一个整型数 System.out.println(sb.toString()); }}

This is a

StringBufferDemo2

Page 26: 第八讲   Java 常用类简介

StringBuffer /capacity

/*public int capacity(); 的应用 */public class StringBufferDemo3 { public static void main(String[] args) { StringBuffer sb = new StringBuffer(“StringBufferDemo3”); System.out.println(“字符串长” + sb.length()); System.out.println(“Buffer 容量” + sb.capacity());//+16 }}

字符串长 17Buffer 容量 33

Page 27: 第八讲   Java 常用类简介

StringBuffer

/* public String substring(int start);

public String substring(int start,int end); */public class StringBufferDemo4 { public static void main(String[] args) { StringBuffer sb = new StringBuffer("This is a String"); String s1 = sb.substring(8); String s2 = sb.substring(5, 11); System.out.println(s1 + ‘ ‘ + s2); }}

Page 28: 第八讲   Java 常用类简介

为什么要有两个字符串类1. 如果创建一个字符串,不打算修改它,用 String2. 如果创建一个字符串,计划修改它,用 StringBuffer3. String 比 StringBuffer 执行效率高4. StringBuffer 比 String 方便

类的介绍 /StringBuffer

Page 29: 第八讲   Java 常用类简介

index, offset, 字符在字符串中的位置

0 1 2 3 4 5 6 7 8 9 10

11

12

13

14

15

16

17

18

19

T h i s a S t r i n g B u f f e r .

substring(7,13

)startindex = 7

offset = 8

endindex = 13

类的介绍 /StringBuffer

Page 30: 第八讲   Java 常用类简介

向量 (Vector) 是 java.util 包提供的一个工具类。它以类似数组的方式顺序地存储数据,但是具有比数组更强大的功能

Vector 类允许不同类型元素共存

Vector 对象中元素的个数是可变的 (变长数组 )Vector 类封装了许多有用的方法来操作和处理这些数据

类的介绍 /Vector

Page 31: 第八讲   Java 常用类简介

向量 (Vector) 数组Java 的类 是 不是内存申请 可动态申请 一次性申请有序结构 是 是元素个数 可变 不可变元素类型 只能是对象、不能

是简单数据类型可以是对象、也可以是简单数据类型

元素类型限制 无 类型必须相同

类的介绍 /Vector

Page 32: 第八讲   Java 常用类简介

向量 (Vector) 的构造函数:public Vector();public Vector(Collection c);public Vector(int capacity);public Vector(int capacity, int increment);

类的介绍 /Vector

这最后一个构造方法有两个形式参数: capacity表示刚创建时 Vector 序列能包含的元素个数 ,increment表示如果需要向 Vector 序列中追加元素 ,那么一次追加多少个 .

下面的语句利用第四个构造函数创建了一个向量序列:Vector MyVector =

new Vector( 100, 50 );

Page 33: 第八讲   Java 常用类简介

现版本 Java 的 Vector 类共有 42 个方法 ,常用方法如下:void addElement(Object o); 在 Vector 的尾部加一个元

素Object firstElement(); 返回第一个元素 (index =

0)Object lastElement(); 返回最后一个元素Object get(int index); 返回 index 处的元素

类的介绍 /Vector

Page 34: 第八讲   Java 常用类简介

int indexOf(Object o); 查找元素 o,返回第一个 o的位置

void insertElementAt(Object o, int idx); 在 idx 处插入元素o

void removeAllElements(); 删除对象中的所有元素boolean removeElement(Object o); 删除第一个遇到的 o

void removeElementAt(int index); 删除 index 处的元素int size(); 返回 Vector 对象中元素的个数boolean isEmpty(); 检查这个 Vector 是否为空void setElementAt(Object o, int idx); 用 o置换 idx 处

的元素

类的介绍 /Vector

Page 35: 第八讲   Java 常用类简介

import java.util.*;public class VectorDemo extends Vector{

public VectorDemo(){ super(1,1); }public void addInt(int i){

addElement(new Integer(i)); }public void addFloat(float f){

addElement(new Float(f));}public void addString(String s){

addElement(s);}public void addCharArray(char a[]){

addElement(a);}

类的介绍 /Vector

Page 36: 第八讲   Java 常用类简介

public void printVector(){Object o;int length = size();System.out.println("Number of vector elemen

ts is "+length+" and they are:");for (int i = 0; i < length; i++){

o = elementAt(i);if (o instanceof char[]){ System.o

ut.println(String.copyValueOf((char[])o));}else

System.out.println(o.toString());}

}

类的介绍 /Vector

Page 37: 第八讲   Java 常用类简介

public static void main (String args[]){VectorDemo v = new VectorDemo();int digit = 5;float real = 3.14f;char letters[] = {'a','b','c','d'};String s = new String ("Hi there!");v.addInt(digit);v.addFloat(real);v.addString(s);v.addCharArray(letters);v.printVector();

}}

Number of vector elements is 4 and they are:

5

3.14

Hi there!

abcd

类的介绍 /Vector

Page 38: 第八讲   Java 常用类简介

类的介绍 /Random该类继承自 Object ,在 java.util 包中。构造方法:

public Random();

Page 39: 第八讲   Java 常用类简介

类的介绍 /Random成员方法:

public void nextBytes(byte[] bytes)

生成随即字节数据的字节数组

public int nextInt() 生成 int 类型所表示的范围中的随机数

public int nextInt(int n) 生成 0-n( 不含 n) 的随机数public long nextLont() 生成在 long 类型所表示的范

围中的随机数public float nextFloat() 生成 0.0f-1.0f( 不含 )之间

的随机 float 数public double nextDouble() 生成 0.0-1.0( 不含 )之间的

随机 double 数

例: RandomNumber.java

Page 40: 第八讲   Java 常用类简介

类的介绍 /StringTokenizerStringTokenizer 类继承自 Object 类,用来为字符串构造一个分析器,该类在 java.util 包中。

构造方法:

public StringTokenizer(String str)

说明:为字符串 str 构造一个分析器,使用默认的分隔符集合

public StringTokenizer(String str, String delim)

说明:为字符串 str 构造一个分析器,字符串参数 delim 中的所有字符都作为分隔符

Page 41: 第八讲   Java 常用类简介

类的介绍 /StringTokenizer构造方法:

public StringTokenizer(String str, String delim, boolean returnTokens)

说明:为字符串 str 构造一个分析器,字符串参数 delim 中的所有字符都作为分隔符;

如果 returnTokens 为真,则把分隔符也作为子串返回;

如果 returnTokens 为假,只返回被分隔符隔开的子串。

Page 42: 第八讲   Java 常用类简介

类的介绍 /StringTokenizer常用方法:

public boolean hasMoreTokens()——测试一个字符串分析器中是否有被分隔符隔开的子串可得到,如果有返回 true ,否则返回 false。

public boolean hasMoreElements()—— 与上面方法相同

public String nextTokens()—— 返回一个字符串分析器中被分隔符隔开的子串(非分隔符)。

public Object nextElement()——同 nextTokens() 方法。

public int countTokens()—— 返回一个字符串分析器中方法 nextTokens() 能被调用的次数,即有多少个不是分隔符的子串。

例: TestStringToken.java

Page 43: 第八讲   Java 常用类简介

Java 的基本数据类型 ,如 int,double,char,long 等。利用这些基本数据类型来定义简单的变量和属性十分方便 ,但是如果需要完成一些基本数据类型量的变换和操作 , 比如要把一个字符串转化为整数或浮点数 ,或者反过来要将一个数字转换成字符串 ,就需要使用数据类型类的相应方法

类的介绍 / 数据类型类

数据类型类与基本数据类型密切相关 ,每一个数据类型类都对应了一个基本数据类型 ,它的名字也与这个基本数据类型的名字相似 . 不同的是数据类型类是一个类 ,有自己的方法 ,这些方法主要用来操作和处理它所对应的基本数据类型量

Page 44: 第八讲   Java 常用类简介

数据类型类与它所对应的基本数据类型

数据类型类 基本数据类型Boolean boolean

Byte byte

Character char

Double double

Float float

Integer intLong long

Short short

类的介绍 / 数据类型类

Page 45: 第八讲   Java 常用类简介

下面就以 Integer 类为例,介绍该类方法的使用,其它数据类型类中的方法与 Integer 类中的方法相近

类的介绍 / 数据类型类

Integer 类定义了 MAX-VALUE 和 MIN-VALUE 两个属性这两个静态属性返回 int,规定了 int 的最大值 231 –1 和 int 的最小值 -231

Page 46: 第八讲   Java 常用类简介

Integer 类有两个构造函数

public Integer(int value)用基本数据类型 int 生成一个 Integer 对象

public Integer(String s)用一个字符串来生成一个 Integer 对象

类的介绍 / 数据类型类

Page 47: 第八讲   Java 常用类简介

Integer 类有 24方法,其中使用较多的有:

public byte byteValue();public double doubleValue();public int intValue();public long longValue();

这些方法把 Integer 类的对象所对应的 int 值转换成其它基本数据类型的值

类的介绍 / 数据类型类

Page 48: 第八讲   Java 常用类简介

public String toString();将当前 Integer 对象的 int 量转化成字符串

public static int parseInt(String s);public static Integer valueOf(String s);

静态方法 ,无须创建 Integer 对象 ,就可以方便地将字符串转化成一个基本数据类型 int 的量或者一个 Integer 类的对象

类的介绍 / 数据类型类

Page 49: 第八讲   Java 常用类简介

如 Double、 Float、 Byte、 Short、 Long 等也都具有这些方法,public byte byteValue();public double doubleValue();public int intValue();public long longValue();可以把这些类的对象所对应的值转换成其它基本数据类型的值

类的介绍 / 数据类型类

Page 50: 第八讲   Java 常用类简介

public String toString();将当前对象对应的量转化成字符串

public static xxxx parseXXXX(String s);public static XXXX valueOf(String s);静态方法,无须创建对象,就可以方便地将字符串转化成一个相应的基本数据类型的量或者一个相应的数据类型类的对象

其中 :xxxx表示一个基本数据类型XXXX 表示一个与基本数据类相应的类

类的介绍 / 数据类型类