作者回复: 多谢建议!
原本是英文的,录音的时候觉得老要切换,就给换了。。
作者回复: 谢谢建议!
作者回复: 哈,我以前也认为无法编译,直到有一次我看到一个俄语的方法名。。
另外,如果你用javap -v查看常量池的话,你会发现类名方法名以及方法描述符都是用UTF8来存的。
作者回复: 通过super关键字来调用父类方法,本意就是想要调用父类的特定方法,而不是根据具体类型决定目标方法。
作者回复: HotSpot里有String.indexOf intrinsic,用了很多向量化指令,所以性能会快很多的。
关于intrinsic的概念,你可以理解为HotSpot识别指定方法后,将其替代为语意等价的高效实现。
作者回复: 合法性检测是根据编译器能找到的class文件来判定的。你可以在编译后,移除掉相应的class文件或者库文件,就会出现你所说的不存在的方法的情况了。
第二个问题,在各自的编译器中已经作出区分了。在Java字节码中就只是根据类名,方法名和方法描述符来定位方法的。
作者回复: 哈,多谢支持。不过汉语编程有个问题,没办法区分大小写,因此变量名和类名容易混淆
作者回复: 可以被子类覆盖的方法。例如,某段程序调用父类的方法A.foo(),由于调用者(receiver)是子类B的实例,实际执行的是子类的同名同参数方法B.foo()。那么A.foo就是一个虚方法,因为你不知道会调到哪里去
这是面向对象编程的一个重要概念,用来实现多态的
作者回复: 哈,这个对于VM实现者来说可是feature,毕竟要存储UTF8。不过以后的代码会换到英文的。