Re: [问题] this用法

楼主: PsMonkey (痞子军团团长)   2014-03-25 14:38:03
※ 引述《broodstare (交给C4就对了)》之铭言:
: 但第三种,"只写了 this 就可以印出时间??(即呼叫toString这个method)"
: 我不能理解为什么,this可以呼叫toString,我也有试着去写toString1,看会如何
: 但this都只印toString
: 如果将toString给注解掉,this就会印出:SimpleTime@642b6fc7 (我自己理解这是
: 内存位置)
: 这我想了好久都想不透为什么this可以指到toString...也有爬文跟google,但查到的
: 大部份this用法都是在说:
: this.member = local_member 这种用法
: 谢谢各位前辈orz
我觉得你的囧点不在 this
在你的 case 中“this”可以简化视为 instance 的变量名称
你在 class 外头 new 一个 instance,意思也一样
请看下面这两个 class
public class Empty { }
public class Foo() {
public String toString() {
return "foo.toString()";
}
}
执行的 code 长这样:
int i = 10;
System.out.println(i);
Empty empty = new Empty();
System.out.println(empty);
Foo foo = new Foo();
System.out.println(foo);
为什么 System.out.println(foo) 会印出“foo.toString()”
那是因为
http://docs.oracle.com/javase/6/docs/api/
java/io/PrintStream.html#println(java.lang.Object)
然后
http://docs.oracle.com/javase/6/docs/api/
java/lang/String.html#valueOf(java.lang.Object)
(到这边 Empty 跟 Foo 都一样)
接着 Foo 又 override 掉 toString()
所以就会印出“foo.toString()”
Java 中的加号另外有哏,例如:
int i = 1, j = 2;
String empty = "";
System.out.println(i + j + empty);
System.out.println(i + empty + j);
结局会不一样
JSL 我懒得翻,但是基本上加号作用在一个 instance 上
应该就是视为呼叫他的 toString()
这样干有比较了?
作者: broodstare (交给C4就对了)   2014-03-25 15:42:00
谢谢! 我想我应该是有懂了 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com