我在混淆什么时候创建了String对象? 我的意思是在编译器识别过程中编译器识别java类中的每个语句绑定 或由jvm执行时,其中jvm根据绑定执行java类中的每个语句。什么时候创建了String对象?
回答
没有对象在编译时被实例化。无论类型如何,这都是不可能的。
编译java类将其转换为字节码,该字节码在JVM中执行,这是在堆中创建对象的位置。
和字符串文字('“...”')作为UTF-8字节存储在.class文件的常量池中,并且类加载器将它们移动到共享位置(生成或接受字符串),所以“abc “在另一个类中==”abc“。 – 2014-11-14 13:26:47
@StuPointerException ..观察下面的简单代码:if(boolean Exp1){String someStr =“FirstStrObj”+ someVar1;} else {String someStr =“FirstStrObj”+ someVar2;}然后怀疑是字符串对象“FirstStrObj”创建? – 2014-11-14 15:38:35
@Ahmed Shareef - 简短的回答是一次。但是,编译器优化非常聪明,如果可以的话,它将合并字符串! – StuPointerException 2014-11-14 16:03:09
String s1 =“iByteCode”;
这是如何工作的?
■JVM首先检查字符串常量池,如果字符串不存在,它将创建一个新的String对象“iByteCode”,并在池中维护引用。变量's1'也指同一个对象。
■此语句创建一个String对象“iByteCode”。
- 1. 什么时候创建了Control.UniqueId?
- 2. 有什么方法可以知道什么时候创建了一个对象?
- 3. 什么时候创建了app.config,什么时候app.exe.config和有什么区别
- 4. 什么时候创建界面生成器IBOutlet对象
- 5. 什么时候应该在OOP中创建对象?
- 6. 什么时候.save()创建一个对象?
- 7. 什么时候创建第一个Python对象的“对象”和“类型”实例?
- 8. Integer.parseInt(String)创建对象吗?
- 9. 什么时候释放了一个自动释放的对象?
- 10. 什么时候证书对象失效?
- 11. 什么时候发布“autorelease”对象?
- 12. 什么时候进行对象池化?
- 13. GridView列创建 - 生成 - 什么时候?
- 14. 什么时候创建窗口句柄
- 15. 什么时候在DNN中创建sitemap.xml
- 16. 什么时候创建泛型类
- 17. 什么时候复制了C#值/对象,何时复制了其引用?
- 18. 在创建字符串对象时创建了多少对象
- 19. 什么时候去接口,什么时候去抽象类
- 20. 什么是需要一个String =新的String( “ABC”)的时候,我们可以创建一个String = “ABC”
- 21. 我们什么时候在C#中创建这种类型的对象...?
- 22. iOS&Swift:ViewController类是被定义的,但是什么时候被创建为对象?
- 23. 什么是JavaScript对象,它们什么时候有用?
- 24. 什么是谦虚对象模式,什么时候有用?
- 25. 什么时候创建自己的DLL应该在什么
- 26. 在下面的代码中创建了多少个String对象?
- 27. 为什么使用Singleton在Java中创建对象太慢了?
- 28. 的Java String对象的创建
- 29. 的Java String对象的创建
- 30. 如何从String创建HtmlUnit HTMLPage对象?
它在执行/运行时创建。在编译时,一切都转换为字节码并检查是否有编译错误。 – brso05 2014-11-14 13:11:04