A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Hugoo 中级黑马   /  2014-7-1 08:46  /  831 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大神们 能不能帮忙看一下一个问题:
还是关于"this"的

public class Date
{       
private int month;       
private int day;       
private int year;       

public Date( int theMonth, int theDay, int theYear )       
{
month = checkMonth( theMonth );       
year = theYear;       
day = checkDay( theDay );
System.out.printf( "Date object constructor for date %s\n", this );       
}       

public String toString()
{
return String.format( "%d/%d/%d", month, day, year );       
}
}

这是一个不完整的程序,我对这部分不是很懂,中间我省略了checkDay() checkMonth()
我也省略了另外一个class里面main()
我就是想知道
1.为什么this知道是指向toString()那个方法的
2.我尝试改变 "toString"这个名字 程序就出错了,难道这个不是一个可以任意定义的方法名字吗?
3.我如果给这个程序里面再加一个类似toString的方法,也是返回String,我尝试了
public String apple()
{
return ......
}
结果this 还是指向的是toString 他怎么知道的?
4.我加入什么方法会改变this 的指向 谢谢!!!!

1 个回复

倒序浏览
1,this本来指的是当前对象,但是当你打印(或者与其他字符串相连)的时候,会自动调用this所指向对象的toString方法。
2,改名字不会出错啊。(详细说说你怎么改的)
3,再次说 this不是指向的toString方法,而是你正在调用的那个对象。你看到的效果是因为你打印this的时候,jdk自动默认调用了toString方法。
4,this在语义上已经规定:就是指的是当前被你调用的对象。不可改变。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马