500 likes | 724 Views
Java 程序设计基础. 第八讲 Java 常用类简介. 主要内容:. Object Math String 和 StringBuffer Vector Random StringTokenizer 与各基本数据类型相对应的类. Object 类是 Java 中所有类的超类,在 java 类的继承关系图上处于根部 (root) ,所有 class 的对象 ( 包括数组对象 ) 都继承了 Object 的方法 Object 有一个构造方法和 11 个成员方法 ( 见下页 )
E N D
Java程序设计基础 第八讲 Java常用类简介
主要内容: • Object • Math • String和StringBuffer • Vector • Random • StringTokenizer • 与各基本数据类型相对应的类
Object类是Java中所有类的超类,在java类的继承关系图上处于根部(root),所有class的对象(包括数组对象)都继承了Object的方法Object类是Java中所有类的超类,在java类的继承关系图上处于根部(root),所有class的对象(包括数组对象)都继承了Object的方法 Object有一个构造方法和11个成员方法(见下页) 其中最常用的是 public boolean equals(Object obj) 和 public String toString() 第一个方法用来比较两个对象是不是相等,第二个方法常常被重写以输出一个有意义的字符串 类的介绍/Object
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()); } } 重写了toString()方法 继承了equals()等方法 类的介绍/Object a1.equals(a1) is true a1.equals(a2) is false a1.equals(a3) is true A is for ObjectTest class a1 is a instance of class A
Math类里给出了数学计算所需要的函数,包括:Math类里给出了数学计算所需要的函数,包括: 这些都是静态(static)的方法,用Math.XXX()直接调用 另外它还提供了两个常数e和π Math.E, Math.PI 类的介绍/Math
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.7071067811865475 2的4次方是 16.0 以e为底的e的对数是 1.0 81的平方根是 9.0
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); 转下页 random()方法的演示程序 类的介绍/Math(2)
接上页 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); } 转下页 random()方法的演示程序 类的介绍/Math(2*)
接上页 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); } } 转下页 random()方法的演示程序 类的介绍/Math(2**)
接上页 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(); } } random()方法的演示程序 类的介绍/Math(2***)
类的介绍/String 字符串在Java中是一个特殊的类String,它是一个final class.因此不能被继承 String被Java的开发者构造得非常接近基本数据类型,换句话说,在很多时候可以象使用基本数据类型一样来使用String类
类的介绍/String 类的声明 声明了一个空字符串s的方式 String s; String s = new String(); 创建一个字符串的方式 String ss = “创建了一个字符串”; String ss = new String(“创建了一个字符串”);
类的介绍/String 声明一个字符串数组 String[] sa = new String[]{“创建了一个字符串”, “数组”}; String[] sa2; Sa2 = new String[3]; Sa2[0] = “第一个元素”; Sa2[1] = “第二个元素”; Sa2[2] = “第三个元素”;
类的介绍/String String的成员方法:
类的介绍/String String的成员方法:
类的介绍/String String的成员方法:
类的介绍/String String的成员方法:
类的介绍/String String的成员方法:
类的介绍/StringBuffer StringBuffer类的构造函数 StringBuffer(); 返回一个空串,长度为16个字节 StringBuffer(int length); 返回一个空串,长度为length个字节 StringBuffer(String s); 返回一个字符串,初始化为s,长度为s.length() + 16个字 节
类的介绍/StringBuffer StringBuffer类中常用的方法 StringBuffer append(…); //共有11个append方法 StringBuffer insert(…); //共有10个insert方法 int length(); //长度 int capacity(); //容量
类的介绍/StringBuffer StringBuffer类中常用的方法 String toString(); StringBuffer reverse(); //反转字符串 StringBuffer replace(int start,int end,String s); String substring(int start); String substring(int start,int end);
StringBuffer /append, replace, reverse This is a StringBufferDemo. .omeDreffuBgnirtS a si sihT the length of sb = 27,true! /*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()); } }
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
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 } } 字符串长17 Buffer 容量33
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); } }
类的介绍/StringBuffer 为什么要有两个字符串类 如果创建一个字符串,不打算修改它,用String 如果创建一个字符串,计划修改它,用StringBuffer String 比 StringBuffer 执行效率高 StringBuffer 比 String 方便
类的介绍/StringBuffer index, offset, 字符在字符串中的位置 substring(7,13) startindex = 7 endindex = 13 offset = 8
类的介绍/Vector 向量(Vector)是java.util包提供的一个工具类。它以类似数组的方式顺序地存储数据,但是具有比数组更强大的功能 Vector类允许不同类型元素共存 Vector对象中元素的个数是可变的(变长数组) Vector类封装了许多有用的方法来操作和处理这些数据
类的介绍/Vector 向量(Vector)的构造函数: public Vector(); public Vector(Collection c); public Vector(int capacity); public Vector(int capacity, int increment); 这最后一个构造方法有两个形式参数:capacity表示刚创建时Vector序列能包含的元素个数,increment表示如果需要向Vector序列中追加元素,那么一次追加多少个. 下面的语句利用第四个构造函数创建了一个向量序列: Vector MyVector = new Vector( 100, 50 );
类的介绍/Vector 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 public void printVector(){ Object o; int length = size(); System.out.println("Number of vector elements is "+length+" and they are:"); for (int i = 0; i < length; i++){ o = elementAt(i); if (o instanceof char[]){ System.out.println(String.copyValueOf((char[])o)); } else System.out.println(o.toString()); } }
类的介绍/Vector 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
类的介绍/Random 该类继承自Object,在java.util包中。 构造方法: public Random();
类的介绍/Random 例:RandomNumber.java 成员方法:
类的介绍/StringTokenizer StringTokenizer类继承自Object类,用来为字符串构造一个分析器,该类在java.util包中。 构造方法: public StringTokenizer(String str) 说明:为字符串str构造一个分析器,使用默认的分隔符集合 public StringTokenizer(String str, String delim) 说明:为字符串str构造一个分析器,字符串参数delim中的所有字符都作为分隔符
类的介绍/StringTokenizer 构造方法: public StringTokenizer(String str, String delim, boolean returnTokens) 说明:为字符串str构造一个分析器,字符串参数delim中的所有字符都作为分隔符; 如果returnTokens为真,则把分隔符也作为子串返回; 如果returnTokens为假,只返回被分隔符隔开的子串。
类的介绍/StringTokenizer 常用方法: public boolean hasMoreTokens()——测试一个字符串分析器中是否有被分隔符隔开的子串可得到,如果有返回true,否则返回false。 public boolean hasMoreElements()——与上面方法相同 public String nextTokens()——返回一个字符串分析器中被分隔符隔开的子串(非分隔符)。 public Object nextElement()——同nextTokens()方法。 public int countTokens()——返回一个字符串分析器中方法nextTokens()能被调用的次数,即有多少个不是分隔符的子串。 例:TestStringToken.java
类的介绍/数据类型类 Java的基本数据类型,如int,double,char,long等。利用这些基本数据类型来定义简单的变量和属性十分方便,但是如果需要完成一些基本数据类型量的变换和操作,比如要把一个字符串转化为整数或浮点数,或者反过来要将一个数字转换成字符串,就需要使用数据类型类的相应方法 数据类型类与基本数据类型密切相关,每一个数据类型类都对应了一个基本数据类型,它的名字也与这个基本数据类型的名字相似.不同的是数据类型类是一个类,有自己的方法,这些方法主要用来操作和处理它所对应的基本数据类型量
类的介绍/数据类型类 数据类型类与它所对应的基本数据类型
类的介绍/数据类型类 下面就以Integer类为例,介绍该类方法的使用,其它数据类型类中的方法与Integer类中的方法相近 Integer类定义了MAX-VALUE和MIN-VALUE两个属性 这两个静态属性返回int,规定了int的最大值231 –1和int的最小值-231
类的介绍/数据类型类 Integer类有两个构造函数 public Integer(int value) 用基本数据类型int生成一个Integer对象 public Integer(String s) 用一个字符串来生成一个Integer对象
类的介绍/数据类型类 Integer类有24方法,其中使用较多的有: public byte byteValue(); public double doubleValue(); public int intValue(); public long longValue(); 这些方法把Integer类的对象所对应的int值转换成其它基本数据类型的值
类的介绍/数据类型类 public String toString(); 将当前Integer对象的int量转化成字符串 public static int parseInt(String s); public static Integer valueOf(String s); 静态方法,无须创建Integer对象,就可以方便地将字符串转化成一个基本数据类型int的量或者一个Integer类的对象
类的介绍/数据类型类 如Double、Float、Byte、Short、Long等也都具有这些方法, public byte byteValue(); public double doubleValue(); public int intValue(); public long longValue(); 可以把这些类的对象所对应的值转换成其它基本数据类型的值
类的介绍/数据类型类 public String toString(); 将当前对象对应的量转化成字符串 public static xxxx parseXXXX(String s); public static XXXX valueOf(String s); 静态方法,无须创建对象,就可以方便地将字符串转化成一个相应的基本数据类型的量或者一个相应的数据类型类的对象 其中:xxxx表示一个基本数据类型 XXXX表示一个与基本数据类相应的类