当前位置:课程学习>>第五章 常用类>>文本学习>>知识点三


知识点三  其它常用类




一、 Object类

Java.lang.Object类是个比较特殊的类,它是Java中的超级类,是一切类的父类。它只有一个默认的构造方法,其他方法也不多,不过很实用,而且所有类都继承了这些方法。

1. protected Object clone()//创建并返回此对象的一个副本,即克隆。调用该方法要求此对象的类必须实现了接口 Cloneable,而Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出CloneNotSupportedException异常。对于 Object x,x.clone() != x、x.clone().getClass() == x.getClass()、x.clone().equals(x)、x.clone().getClass() == x.getClass()这些表达式的值都为true。

2. boolean equals(Object obj)//比较两个对象是否相同,相同(同一个类的对象且内容相同)返回true,不同返回false。如:

String str1=new String("hello");

String str2=new String("hello");

if(str1.equals(str2))

  System.out.println("two strings are equal");

else

  System.out.println("two strings are not equal");

  if(str1==str2)

    System.out.println("str1 == str2");

  else

    System.out.println("str1 != str2 ");

程序的输出结果为:

two strings are equal

str1!=str2  

3. getClass()//返回对象所在的类名、接口名

4. int hashCode()//返回对象的哈希码值

5. String toString()//返回该对象的字符串表示。该字符串由类名、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,它的值等于: getClass().getName() + '@' + Integer.toHexString(hashCode())

二、向量类Vector

Vector类是java.util包中的类,称为向量类,它实现可增长的对象数组,可以随意向Vector类对象中增加、删除或替换元素,该对象的大小随之增大或减小。该类比较适合处理这样的元素序列:序列中的元素数目可变,所有元素都是对象或可以表示为对象,频繁进行元素的查找定位以及插入删除等操作。但是Vector类中的元素不能是基本数据类型,若要处理这样的数,需要利用数据类型的封装类转换为对象才可以。

Vector有四个构造函数:

Vector():构造一个空向量,其大小为10,其标准容量增量为零。

Vector (Collection<? extends E> c) :构造一个包含指定集合中的元素的向量,这些元素按其集合的迭代器返回元素的顺序排列。

Vector(int initialCapacity):使用指定的初始容量和等于零的容量增量构造一个空向量。

Vector(int initialCapacity, int capacityIncrement) :使用指定的初始容量和容量增量构造一个空的向量。

Vector类提供的访问方法支持类似数组运算和与Vector大小相关的运算。类似数组的运算允许向量中增加、删除和插入元素。它们也允许测试矢量的内容和检索指定的元素,与大小相关的运算允许判定字节大小和矢量中元素的数目。这里列举几个常用的方法:

add(E o) :将指定元素追加到此向量的末尾。

addElement(Object obj) :把obj加到向量尾部,同时大小加1,向量容量比以前大1

insertElementAt(Object obj, int index) :把obj对象加到指定位置处,此后的内容向后移动1个单位

setElementAt(Object obj, int index) :用obj替换指定位置处的元素。

removeElement(Object obj):把向量中obj对象删除掉。

removeAllElements():把向量中所有对象移走,向量大小变为0

size():返回向量的长度

【例5.6】 Vector类的方法的使用。

1 //VectorTest.java

2 import java.util.Vector;

3 public class VectorTest

4 {

5    public static void main(String args[])

6    {

7       Vector v=new Vector();

8       System.out.println(v.size());

9       System.out.println(v.toString());

10       v.addElement("one");

11       System.out.println(v.toString());

12       v.addElement("two");

13       System.out.println(v.toString());

14       v.addElement("three");

15       System.out.println(v.toString());

16       v.insertElementAt("zero",0);

17       System.out.println(v.toString());

18       v.insertElementAt("java",3);

19       System.out.println(v.toString());

20       v.setElementAt("three",3);

21       System.out.println(v.toString());

22       v.setElementAt("four",4);

23       System.out.println(v.toString());

24       System.out.println(v.size());

25       v.removeAllElements();

26       System.out.println(v.toString());

27    }

28 };

程序的运行结果如图5.7所示。

7
图5.7 Vector方法调用程序的输出结果

三、数学类Math

Math 类在java.lang包内,因此可以直接使用,Math类中包含基本的数学运算函数,如指数、对数、平方根和三角函数,Math类中成员与方法均为static的,因此使用Math中的成员与方法时不需要创建对象,使用Math类名即可。

Math类有两个静态成员:E和PI。E代表数学中的e ,值为2.718281828459045,而PI代表派pi ,值为3.141592653589793。

常用的方法有:三角函数以及abs方法(求绝对值)、max方法(求两个数中的最大值)、min方法(求两个数中的最小值)、pow(double a,double b)方法(求a的b次幂)、random()方法(返回一个0.0~1.0之间的随机小数)。

【例5.7】Math类的使用。

1 //MathTest.java

2 public class MathTest

3 {

4    public static void main(String[] args)

5    {  

6       System.out.println(Math.E);

7       System.out.println(Math.PI);

8       int a=10;

9       int b=3;

10       int c;

11       System.out.println(Math.min(a,b));

12       System.out.println(Math.max(a,b));

13       System.out.println(Math.pow(a,b));

14       for(int i=0;i<10;i++)

15       {

16          c=(int)(Math.random()*10+1);

17          System.out.print(" "+c);

18       }

19    }

20 }

程序的运行结果如图5.8所示,由于程序中生成随机数,每次运行的结果可能都不相同。

8
图5.8 程序运行结果

四、Random类

Random类用于生成伪随机数,它在java.util包中。提供了两个构造方法:Random()方法:创建一个新的随机数生成器,Random(long seed): 使用单个 long 种子创建一个新随机数生成器。

常见的方法主要有:

   int next(int bits):生成一个2的bits次方内的随机整数,若bits为32,实际上就和int nextInt()方法相同。

   boolean nextBoolean():生成一个boolean类型的随机数

   double nextDouble():生成一个double类型(0.0~1.0)的随机数

   float nextFloat():生成一个float类型(0.0~1.0)的随机数

   int nextInt():生成一个int类型的随机整数

   int nextInt(int n):生成一个0~n之间的随机整数

   long nextLong():生成一个long类型的随机整数

   void setSeed(long seed):使用单个 long 种子设置此随机数生成器的种子

由于Random类生成的是伪随机数,因此在使用的时候需要注意的是对于新创建的Random对象,每次生成的数都是一样的。

【5.8】Random类的使用。

1 //RandomTest.java

2 import java.util.Random;

3 public class RandomTest

4 {

5    public static void main(String[] args)

6    {

7       for(int i=0;i<5;i++)

8       {

9          Random r1=new Random(10);

10          System.out.print(r1.nextInt(10000)+" ");

11       }

12       System.out.println();

13       Random r2=new Random(10);

14       Random r3=new Random(10);

15       Random r4=new Random();

16       Random r5=new Random();

17       for(int i=0;i<5;i++)

18          System.out.print(r2.nextInt(10000)+" ");

19       System.out.println();

20       for(int i=0;i<5;i++)

21          System.out.print(r3.nextInt(10000)+" ");

22       System.out.println();

23       for(int i=0;i<5;i++)

24          System.out.print(r4.nextInt(10000)+" ");

25       System.out.println();

26       for(int i=0;i<5;i++)

27          System.out.print(r5.nextInt(10000)+" ");

28    }

29 }

程序的运行结果如图5.9所示,注意随机数的比较。

9
图5.9 程序运行结果

提示:使用这些常用的类需要注意使用import语句引入该类或该类所在的软件包。

 

进入知识归纳学习