toString() 和 强制类型转换 (String)
Method Summary
Modifier and Type | Method and Description |
---|---|
protected Object | clone()
Creates and returns a copy of this object.(创建并返回此对象的一个副本)
|
boolean | equals(Object obj)
Indicates whether some other object is "equal to" this one.
(显示一些其他对象是否“等于”这一个)
|
protected void | finalize()
Called by the garbage collector on an object when garbage collection determines
that there are no more references to the object.
(由垃圾收集器对一个对象调用当垃圾收集决定)
|
Class<?> | getClass()
Returns the runtime class of this Object .(返回该对象的运行时类)
|
int | hashCode()
Returns a hash code value for the object.(返回一个对象的哈希码值)
|
void | notify()
Wakes up a single thread that is waiting on this object's monitor.
(唤醒一个线程正在等待这个对象的监视器。)
|
void | notifyAll()
Wakes up all threads that are waiting on this object's monitor.
(唤醒在这个对象监视器上等待的所有线程。)
|
String | toString()
Returns a string representation of the object.
(返回一个对象的字符串表示。)
|
void | wait()
Causes the current thread to wait until another thread invokes the
notify()
method or the
notifyAll() method for this object.
(导致当前线程等待另一个线程调用通知())
|
void | wait(long timeout)
Causes the current thread to wait until either another thread invokes the
notify() method
or the notifyAll() method for this object, or a specified amount of time has elapsed.
|
void | wait(long timeout, int nanos)
Causes the current thread to wait until another thread invokes the
notify() method or the
notifyAll() method for this object, or some other thread interrupts the current thread, or a
certain amount of real time has elapsed
|
toString()
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回该对象的字符串表示。通常,toString
方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object
类的 toString
方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@
”和此对象哈希码的无符号十六进制表示组成
toString()方法返回的是这个对象的字符串表示,就像是这个对象的名字一样,任何对象都可以有自己的名字,你可以重写其toString()方法,给其赋予任意的名字。
但是调用toString()方法的对象不能为 null,否则会抛出异常:java.lang.NullPointerException。
看一下例子:
public static void main(String[] args) {
Object a = null;
Assert.assertTrue(null == a);//true
Assert.assertTrue(a.toString()==null);//false
}
所以为了避免这样的错误发生.
String.valueOf()
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
这个方法就是在调用 toString() 之前判断一下这个对象是不是null,如果不是null,则正常调用其toString()方法,如果是null 的话,则返回字符串形式的null。
String.valueOf() 比起直接用 toString() 来说虽然可能会避免意外的情况减少报错的机会,但是如果在对比对象值的时候可要小心,要注意如果用if(String.valueOf(object)==null) 就肯定不行的了,因为valueOf方法是返回的一个字符串,并不是返回的一个对象,如果要比较也得用 "null".equals(object)。
强制转换(String):
情况一、如下图,其实每个对象的类型在对象创建的时候已经确定并且不能更改,所谓强制转换也只是使其表面上满足当前转换的类型,可以使用其方法对这个对象进行处理,但是下图的强制转换编译时都没有通过,更不用说运行时了,在创建时就是Integer类型,不能转换成String类型的:
当然,如果要把 Integer 型转换成 String,可以调用其 toString()方法:Integer.toString((Integer)obj2) 或者 String.valueOf(obj2); 对应于其他自定义类型,则调用自己重写的 toString() 方法。