![]() |
1
83
不行,如果你用
JLS说:
如果从对象调用方法,则该对象存在,或者
资源: |
![]() |
2
61
就像问自己“我还活着吗?”
|
![]() |
3
9
不,从不 ,关键字“this”本身表示该类范围内该类的当前活动实例(对象),通过该实例,可以访问该类的所有字段和成员(包括构造函数)及其父类的可见字段和成员。 更有趣的是,尝试设置:
想想看?这怎么可能呢,难道不是像剪断你坐着的树枝那样吗?因为关键字“this”在类的范围内是可用的,所以只要您说this=null;在类内的任何地方,那么您基本上都会要求jvm在某些操作的中间释放分配给该对象的内存,而jvm只是不允许这些操作发生,因为它需要返回。完成操作后安全。
此外,尝试
其他例子,你不能说:
|
![]() |
4
7
如果用
|
![]() |
5
3
否。若要调用类的实例的方法,该实例必须存在。实例作为参数隐式传递给方法,由引用
|
![]() |
6
3
语言强制它是不够的。虚拟机需要强制执行它。除非VM强制执行它,否则您可以编写一个编译器,它在调用Java编写的方法之前不执行NULL检查。 实例方法调用的操作码包括将此引用加载到堆栈上。请参见: http://java.sun.com/docs/books/jvms/second_edition/html/Compiling.doc.html#14787 . 将此项替换为空引用确实会导致测试为假。 |
![]() |
7
3
在静态类方法中,
|
![]() |
8
1
当对调用方法时
|
![]() |
9
1
正常的
合格的
当我们想要创建
输出为:
显示我们试图创建一个
事实上,如果你坚持“纯Java”的信封,你不能打破这个。
但是,每个
不管怎样,最终的结果是
简而言之,它
是可能的
对于一个合格的
1 -我打折技巧,如“写”字节码的手,并传递它们作为真正的Java,调整字节码使用BCEL或类似,或跳转到本机代码和欺骗与保存的寄存器。IMO,那不是Java。假设,这样的事情也可能是由于一个JVM错误…但我不记得所有看到的错误报告。 2-事实上,JLS没有说明行为将是什么,它可能依赖于实现…除此之外。 |
![]() |
10
0
tl;dr,“this”只能从非静态方法调用,我们都知道非静态方法是从某种不能为空的对象调用的。 |
|
user29759326 · 如何返回递归函数中的最后一个值? 6 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 6 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 6 月前 |
![]() |
rudraraj · java中未声明最终变量 6 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 6 月前 |