`

面试题--String s=new String("xyz"); 创建了几个对象

阅读更多
答案:两个对象一个指针(一个编译期创建内建对象xyz ,一个运行期new的对象new String 一个指针 s)

以下部分内容来源于网上

String s=new String("xyz");
String类有一个特殊的创建方法,就是使用""双引号来创建.例如new String("i am")实际创建了2个
String对象,一个是"i am"通过""双引号创建的,另一个是通过new创建的.只不过他们创建的时期不同,
一个是编译期,一个是运行期!

s不能叫对象,它是指向对象的一个指针,在栈区占4字节

"xyz"是一个内建对象。说"xyz"不是对象的可以试试"xyz".xxxx,所有String的方法都可以用。

new String(...)创建了第二个对象,用的是构造String(String)

String s1 = "sss111";
    //此语句同上
String s2 = "sss111";
    /*
* 由于String Pool是对应于在Constant Pool中存储String常量的区域.习惯称为String Poo
* 只会维护一个值相同的String对象
* 上面2句得到的引用是String Pool中同一个对象,所以
* 他们引用相等
*/
System.out.println(s1 == s2); //结果为true

例1:
String s1 = "sss111";
String s2 = new String("sss111");
/*
* 当调用intern方法时,如果String Pool中已经包含一个等于此String对象
* 的字符串(用 equals(Object)方法确定),则返回池中的字符串.否则,将此
* String对象添加到池中,并返回此String对象在String Pool中的引用.
*/
System.out.println(s1 == s2);//false

s2 = s2.intern();

System.out.println(s1 == s2);//true


例2:
String s1 = new String("s1") ;
String s2 = new String("s1") ;
上面创建了几个String对象?
答案:3个 ,编译期Constant Pool中创建1个,运行期heap中创建2个
分享到:
评论

相关推荐

    JAVA面试题String产生了几个对象

    JAVA面试题String产生了几个对象 JAVA面试题String产生了几个对象?这个问题是很多Java开发者面试中常见的问题,本文将通过示例代码详细介绍String s = new String("xyz");产生了几个对象。 首先,需要了解Java中...

    java面试题-解密版

    String s = new String("xyz"); ``` 创建了一个`String`对象。 #### 37. error与exception - `error`:表示程序无法处理的情况,通常是JVM级别的问题。 - `exception`:表示程序可以处理的情况,可以通过捕获异常来...

    java程序员面试题——863面试集

    - `String s = new String("xyz");` 创建了两个对象: 一个字符串常量和一个`String`对象。 8. **Math.round 方法** - `Math.round(11.5)` 返回 12。 - `Math.round(-11.5)` 返回 -11。 - `Math.round` 方法...

    面试宝典-Java面试题汇总

    - `String s = new String("xyz");` 创建了两个对象,一个在常量池,一个在堆。 - 字符串是不可变的,所以对字符串的操作会产生新的对象。 10. **Math.round()** - `Math.round(11.5)` 返回12,`Math.round(-...

    2022年Java面试题100题.pdf

    - `String s = "xyz"` 与 `String s = new String("xyz")` 的区别在于,前者如果常量池中已有"xyz",则直接引用,否则在池中创建;后者除了在池中创建,还会在堆中额外创建一个对象。 2. **接口与抽象类**: - ...

    java面试题大全.pdf

    ` 这行代码实际上创建了两个字符串对象:一个在字符串常量池中,另一个是通过 `new` 关键字创建的 String 对象。 #### 八、Math 类的 round 方法 - `Math.round(11.5)` 返回 12。 - `Math.round(-11.5)` 返回 -11...

    Java 面试题 Java 面试题

    - **Strings=newString("xyz")** 创建了两个String对象,一个在字符串常量池中,另一个在堆内存中。 #### 10. Math.round(11.5)等于多少? Math.round(-11.5)等于多少? - **Math.round(11.5)** 等于 12,四舍五入。 ...

    JAVA面试题总汇JAVA面试题总汇.doc

    - 字面量字符串"xyz"在常量池中,`new String("xyz")`在堆内存中创建了一个新的对象。 10. **Math.round() 方法** - `Math.round(11.5)` 返回12,`Math.round(-11.5)` 返回-11。`round()`方法对浮点数进行四舍五...

    2022年IBM、SUN等公司的Java面试题集-中国求职指南网.docx

    - `String s = new String("xyz");` 创建了两个String对象,一个在常量池,一个在堆内存。 - `String s = "xyz";` 只创建一个String对象,位于常量池。 10. **Math.round()的计算**: - `Math.round(11.5)` 返回...

    JAVA面试题150

    7. **String对象创建**:`String s = new String("xyz");`会创建两个对象,一个是常量池中的"xyz",另一个是堆上的新String对象。`new String("xyz")`基于常量池中的"xyz"创建副本。 8. **Math.round()**:`Math....

    Java 应届生面试题

    如果 String 常理池中已经创建了该对象,则不会继续创建,只创建了一个对象 new String("xyz");否则,将创建两个对象。 六、String、StringBuffer 和 StringBuilder 之间的区别 * 执行速度方面的比较:...

    java面试题大全-基础方面.doc

    ` 创建了两个对象:一个字符常量池中的"xyz"字符串对象,另一个是堆中的`s`引用的对象。 8. **Math.round方法**: - `Math.round(11.5)`等于12,因为`round`方法会四舍五入到最接近的整数。 - `Math.round(-11.5)...

    用Microsoft Word 文档写的 一些关于java的JAVA面试题

    - 创建`String s = new String("xyz");`时,会创建两个对象:一个是在常量池中的"xyz",另一个是在堆上的新String对象。 - `String(String original)`构造器创建了一个与传入字符串相同的副本。 8、Math.round方法 ...

    2009年java最新面试题

    ` 创建了两个对象:一个是在字符串常量池中的"xyz",另一个是s指向的新创建的"xyz"对象。 11. **Math.round()方法** - `Math.round(11.5)` 返回12(long类型),`Math.round(-11.5)` 返回-11(long类型)。 12. *...

Global site tag (gtag.js) - Google Analytics