`
woshixushigang
  • 浏览: 578511 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

String s1="a",String s2 =s1+"b"创建了几个对象?

    博客分类:
  • j2ee
 
阅读更多
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2);
System.out.println(s3);
System.out.println(s2 == "ab");
System.out.println(s2.equals( "ab"));
System.out.println(s3 == "ab");
System.out.println(s3.equals("ab"));

s1,s2,s3各自有一个对象所以是三个对象,但是s2在数值上等于s3,s2==s3为假而 s2.equals( s3)为真。

String s1,String s2又是一个对象,但是String类中有equals方法,equal比较的是两个对象中的值而不是对象和值,=比较的是对象和值。看似s3=s2但是s3和s2是两个不同的对象。

分享到:
评论

相关推荐

    String对象创建问题

    在上述代码中,`s1`和`s2`引用的是常量池中的同一个`String`对象,因为它们的值相同。这种优化被称为字面量共享,可以节省内存。 然后,我们来看执行期的`String`对象创建,这通常涉及`new`关键字。当使用`new ...

    创建string对象过程的内存分配:

    在Java中,创建 `String` 对象时,主要涉及以下几种内存区域: 1. **常量池** (Constant Pool): 每个类或接口都有自己的常量池,它包含了编译期间确定的所有字面量和符号引用。 2. **堆** (Heap): 动态分配的内存...

    正确使用String类的几点注意

    为了更好地理解和使用String类,本文将从几个关键方面入手,探讨如何更加高效、合理地使用String对象。 #### 一、初始化String对象 **1.1 直接赋值** 最常见的初始化方式是通过直接赋值的方式创建String对象: ``...

    javascript的测试题两份

    14、分析下面的JavaScrip代码段,输出的结果是(B) var s1=15; var s2=”string”; if (isNaN (s1)) document.writeln (s1); if (isNaN (s2)) document.writeln(s2); A) 15 B) string C)15 string D)...

    java String 使用详解

    实际上创建了两个 String 对象,一个是”abc”对象,存储在常量空间中,一个是使用 new 关键字为对象 s 申请的空间。 二、字符串的常见操作 字符串的常见操作包括 charAt 方法、compareTo 方法、concat 方法等。 ...

    Java String 字符串创建理解 equels和\"==\" 差异

    使用new关键字创建的字符串会在堆内存中创建一个新的对象,即使常量池中已有相同的字符串,也会生成新的实例。 3. **StringBuilder/StringBuffer**:`StringBuilder sb = new StringBuilder().append("Hello")....

    java中equals和==的区别

    在第一个程序中,s1 先被放到了池中,所以在 s2 被创建的时候,程序找到了具有相同值的 s1,将 s2 引用 s1 所引用的对象。 在第二个程序中,我们使用了 new 操作符,它明白的告诉程序:"我要一个新的!不要旧的!...

    String类详解!

    ` 这种方式显式地使用了`new`关键字来创建对象。 2. **内存分配差异**:简化语法实际上利用了Java的字符串常量池机制,使得相同的字符串仅被创建一次并存储于常量池中,从而节省了内存资源。相比之下,使用`new ...

    java中equals和==的区别.docx

    在这个例子中,s1 和 s2 都是字符串 "Monday",但是 s1 引用的是字符串缓冲池中的对象,而 s2 引用的是一个新的字符串对象。 intern() 方法 Java 中的 intern() 方法用于将字符串对象添加到字符串缓冲池中。intern...

    Java_String_的方法

    - **利用已存在的字符串常量创建一个新的对象**: ```java String original = "hello"; String str = new String(original); ``` - **利用一个字符数组创建一个字符串**: ```java char[] chars = {'h', 'e'...

    关于string的比较

    ### 关于String的比较 在Java编程语言中,`String`类是用于处理文本字符串的基本类型之一。由于字符串经常被用来存储和操作文本数据,在实际应用中,对字符串进行比较是非常常见的需求。本文将深入探讨如何在Java中...

    String字符串比较1

    这里,`s`和`s2`都是在堆中创建的新对象,它们各自独立,与常量池中的"abc"对象不同。而`s1`直接引用了常量池中的"abc"对象。因此,`s == s1`和`s == s2`都会返回`false`,因为`==`比较的是对象的引用,而非内容。 ...

    深入理解JVM实战篇-String类1

    在上述例子中,s1直接从常量池获取引用,而s2则在堆上创建了一个新的String对象。这里的关键点是,即使字符串内容相同,s1和s2也是不同的对象,因此`s1 == s2`的结果为false。 接下来,我们来看String的intern()...

    String和StringBuffer详细用法总结

    使用`+=`时,每次操作都会创建新的字符串对象,而`StringBuffer`则是在原对象上进行修改,从而避免了不必要的对象创建。 ### 总结 - 在单线程环境中,简单字符串操作使用`String`即可。 - 对于需要频繁修改的字符串...

    java中equals和的比较.doc

    编译并运行程序,输出结果是 "s1 == s2",这说明 s1 和 s2 引用同一个 String 对象 "Monday"。 让我们继续修改程序: public class TestString { public static void main(String[] args) { String s1 = "Monday...

    12基础篇之第十二(String的基本用法).docx

    2. 使用 `new String()` 关键字创建 `String` 对象时,会在堆中创建一个新对象,并且如果是通过字符串常量初始化,还会在常量池中创建一个相同的字符串对象。 3. 当比较两个由 `new String()` 创建的对象时,即使...

    java中的比较运算符== 与 equals()方法 ..doc

    ### Java中的比较运算符==与equals()方法 在Java编程语言中,经常需要对变量进行...- 使用`new`关键字创建对象时,即使内容相同,也可能得到不同的对象引用。 了解这些概念对于编写高效、可靠的Java程序至关重要。

    c++常用头文件,函数

    string s3 = s1 + s2; ``` 这样,s3的值将被串联为“abc123”。 比较运算符 比较运算符用来比较字符串,例如: ```cpp string s1 = "abc"; string s2 = "123"; if (s1 == s2) { // codes } ``` 这样,如果s1和s2...

    String对象的内存分析

    当创建`a`和`b`时,它们都指向常量池中的同一个"abc"对象,因此不会创建额外的`String`实例。 2. `String c = new String("xyz"); String d = new String("xyz");` 这里,"xyz"首先被读入常量池。对于`c`,`new ...

Global site tag (gtag.js) - Google Analytics