java中关于this

来源:百度知道 编辑:UC知道 时间:2024/06/30 21:29:35
public class Threadtest2 extends Thread{
private int c=5;
private static int no;
public Threadtest2(){
start();
}
public void run(){
for(int i=0;i<10;i++){
System.out.println(this);
}
}

请问,这个this 指代什么呢?JAVA初学者。不甚了解!
如果我再重写toString方法
public String toString(){
return getName();
}
这个this会调用toString方法,不知道为什么

this表示当前对象,你使用System.out.println(this)就是表示打印当前对象,而输出的时候,因为this的类型并不是字符串,因此打印时会调用默认的toString方法。你重写了toString方法,自然打印出来的就是你重写的toString方法里面的语句:
return getName();
也就是说,最终调用了getName()方法,那么System.out.println(this)实际运行时等同于:System.out.println(getName());

除了楼上几位说的以外,toString是从Object类继承来的方法,Object是所有类的父类,所以所有的类都有该方法。你的那个类的this自然就有这个方法了,另外像hashCode() equals finalize clone 这些都是Object类的方法,任何的类都会有这么方法的。

toString
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())

1、this可以替换为[new Threadtest2()],指当前对象;
System.out.println(this);this当前对象调用无参构造方法里面的start()方法
2、这个方法(toString())是通过对象名点方法名调用的(this当前对象)

this就是当前对象的意思。
在这个程序里this就是指 正在执行run()方法的那个ThreadTest2对象。

this指代当前对象,重写后,调用this会调用你写的toString方法,
可以