话不多说,直接说一下toString方法。
object类是所有对象的父类,在Object类中含有toString()方法,所以说所有对象也都包含toString()方法。
当对对象打印输出的时候,可以发现,直接输出对象与调用对象的toString()方法产生的效果是一致的。因为当输出对象的时候,调用的也是对象的toString()方法,只不过其不可见而已。
当使用toString()方法对象进行描述时,输出格式为:类名+@+哈希码。hashCode的值在JAVA中不同对象输出不同的值,hashCode是通过将对象的地址转换成一个整数来实现。
一般是方法希望获得一个对象的详细信息,可以对toSting方法进行重写。
public class main {
public static void main (String[] args){
ObjectToString s = new ObjectToString("hello","world");
System.out .println(s);
System.out .println(s.toString());
}
}
class ObjectToString {
String s1;
String s2;
public ObjectToString(String s1,String s2) {
this.s1=s1;
this.s2=s2;
}
}
代码中创建了ObjectToString类。今天的代码定义了顺序表(数据结构),并对ObjectToString方法进行了重写,对于toString的使用,和上述一样。
//顺序表定义
public class SequentialList {
public static final int MAX_LENGTH = 10;//定义顺序表长度
int length;
int[] data;
public SequentialList() {
length = 0;
data = new int[MAX_LENGTH];
}// Of the first constructor
public SequentialList(int[] paraArray) {
data = new int[MAX_LENGTH];
length = paraArray.length;
// Copy data.
for (int i = 0; i < paraArray.length; i++) {
data[i] = paraArray[i];
}
}
//重写方法
public String toString() {
String resultString = "";
if (length == 0) {
return "empty";
}
for (int i = 0; i < length - 1; i++) {
resultString += data[i] + ", ";
}
resultString += data[length - 1];
return resultString;
}
public void reset() {
length = 0;
}
public static void main(String args[]) {
int[] tempArray = {2,4,6,8};
SequentialList tempFirstList = new SequentialList(tempArray);
System.out.println("Initialized, the list is: " + tempFirstList.toString());
System.out.println("Again, the list is: " + tempFirstList);
tempFirstList.reset();//调用reset方法
System.out.println("After reset, the list is: " + tempFirstList);
}
}