当前位置:课程学习>>第五章 常用类>>文本学习>>知识点三
一、 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所示。
图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所示,由于程序中生成随机数,每次运行的结果可能都不相同。
图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所示,注意随机数的比较。
图5.9 程序运行结果
提示:使用这些常用的类需要注意使用import语句引入该类或该类所在的软件包。