是2个不假。
一个是编译时决定的,最后放在常量池中。一个是运行时放在堆里面的。两个都是"xyz",我只能这么说了。还有的,s确实只是一个引用,本身不是对象。java不是纯粹的面向对象,也就是说并不是所有的都是对象,如基本类型等,没清楚的再问我吧
追问
哈 我认同这位大侠的。。。。。。若果编译期间常量池已经有“xyz”对象的话,那么这个就可能创建一个对象吧。。。是不是?
回答
常量池中只可能只有一个“xyz”,但是堆中可能有多个,因为你这里用了new String来强制在堆中再创建了一个对象,所以是两个哈;如果是String s= "xyz"这样的,s这个引用就会直接指向常量池的"xyz",而不会是指向你在堆中创建的“xyz”。
追问
呵呵 说的好!!!上面3位都有都有研究。。呵呵我看了好多都是说s是对象的,无语。。。。今天就把这个疑问给结了
回答
最后再说加一句吧,对于String 这种不可变对象,有几个对象真正的不会对程序有影响,你们都太认真了,太纠结了。要了解java中的对象等东西,建议看一下java虚拟机的教材,这个不是说你工作多久就清楚的,我敢说现在没多少人清楚自己在用些什么!
分享到:
相关推荐
创建了几个String Object? 二者之间有什么区别? 25 34、String 和StringBuffer的区别 25 35、如何把一段逗号分割的字符串转换成一个数组? 26 36、数组有没有length()这个方法? String有没有length()这个方法? 26 ...
第一,谈谈final, finally, finalize的区别。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends...创建了几个String Object? 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的区别 23 35、如何把一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 ...
第九,String s = new String("xyz") 创建了几个String Object? 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 第十一,short s1 = 1 s1 = s1 + 1 有什么错? short s1 = 1 s1 += 1 有什么...
- `String()`:创建一个空字符串。 - `String(char[] value)`:根据字符数组创建字符串。 - `String(String original)`:复制一个已存在的字符串。 2. **字符串拼接** - `concat(String str)`:将指定字符串...
创建了几个String Object? 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 面试题都是很变态的,要做好...
一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto?...创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的区别
创建了几个 String Object? 两个对象。一个是 xyz,一个是指向 xyz 引用的 s。 22. GC 是什么?为什么要有 GC? GC 是垃圾回收器。因为有了 GC 就省去了程序员手工编码释放内存。 23. 能用 foreach 遍历访问的...
创建了几个 String Object? String s = new String("xyz"); 创建了两个 String Object,一个是字符串常量池中的对象,另一个是堆中的对象。 10. Math.round(11.5) 等於多少? Math.round(-11.5) 等於多少? ...
- `String s = "xyz"` 与 `String s = new String("xyz")` 的区别在于,前者如果常量池中已有"xyz",则直接引用,否则在池中创建;后者除了在池中创建,还会在堆中额外创建一个对象。 2. **接口与抽象类**: - ...
JAVA 面试题及答案.doc 该资源提供了一份 JAVA 面试题集,涵盖了 JAVA 语言的多个...* 该语句创建了两个 String 对象:一个是 String 常量池中的“xyz”,另一个是new String("xyz") 创建的对象。 ...(以下省略)
创建了几个String Object? 分析:这道题考察了String对象的创建机制。在Java中,String对象可以通过new关键字创建,也可以通过字面值的方式创建。当我们使用new关键字创建String对象时,JVM会在堆中创建一个新的...
创建了几个String Object? 二者之间有什么区别? 34、String 和StringBuffer的区别 35、如何把一段逗号分割的字符串转换成一个数组? 36、数组有没有length()这个方法? String有没有length()这个方法? 37、下面这...
创建了几个String Object? 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 第十二,sleep() ...
g.DrawImage(bm, new Rectangle(0, 0, Picsize, Picsize), (Rectangle)arrrect[inta[i]], GraphicsUnit.Pixel); pb[i].Image = bmp; pb[i].Click += new EventHandler(Picture_Click); if (a[i] == gzs * gzs - ...
创建了几个String Object? 12 40、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 12 41、Java 的接口和C++的虚类的相同和不同处。 12 42、一个“.java”源文件中...
Map<String, Object> map = mapper.readValue(jsonObject, new TypeReference<Map<String, Object>>() {}); ``` 二、Java类对象到JSON转换 1. 将Java对象转换为JSON字符串,同样使用`ObjectMapper`: ```java ...
public string[] CP3Name = new string[12];//CPIII自由测站学习点数一般不会超过12个,此处也可用动态数组存储 public double[,] LVS = new double[12, 3]; }; ArrayList StaList = new ArrayList(); public ...
创建了几个 String Object? * 两个对象,一个是“xyz”,一个是指向“xyz”的引用对象 s。 12. Math.round(11.5) 等於多少?Math.round(-11.5) 等於多少? * Math.round(11.5) 返回 12,Math.round(-11.5) 返回...