`
bearjava
  • 浏览: 82235 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

String str = new String("ABC")

    博客分类:
  • Java
阅读更多
public class Test{
    public static void main(String[] args) {
        String str=new String("ABC");
    }
}

它的虚拟机指令集:
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
  Code:
   0:    aload_0
   1:    invokespecial    #1; //Method java/lang/Object."<init>":()V
   4:    return

public static void main(java.lang.String[]);
  Code:
   0:    new    #2; //class java/lang/String
   3:    dup
   4:    ldc    #3; //String ABC
   6:    invokespecial    #4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:    astore_1
   10:    return
}
看看main方法里的操作,
new String()//这是 你要创建的对象
ldc #3;//String ABC 这是池中的对象

java里面的对象都是放在heap中,引用是可以放到stack中的,String  str=new  String("ABC");在编绎时会把"ABC"作为常量放到类的常量池中,运行时调用new指令时会再在堆中产生一个String类型的对象,把常量池中的"ABC"的值复制过来,然后让str指向堆中的String对象,所以应该是两个对象,一个是String类的Class对象中的常量字符串对象,一个是new出来的堆中的字符串…

分享到:
评论

相关推荐

    String型的不可变性

    但是,如果我们使用 new 操作符来创建 String 对象,例如,String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1 == str2); // false,这里 str1 和 str2 指向不同的对象。 ...

    C#中String类常用方法汇总

    string str = "AbC"; string lowerStr = str.ToLower(); // "abc" string upperStr = str.ToUpper(); // "ABC" ``` 2. `.Trim()` `.Trim()` 方法用于移除字符串两端的空白字符,如空格、制表符等。 ```csharp...

    java语言程序设计课后习题答案.doc

    String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1==str2);//false String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1==str2);//false ...

    java语言程序设计课后习题标准答案.doc

    String str = new String("abc"); ``` **1.2 字符串比较** - **使用`==`操作符**: - 当两个字符串通过字面量创建时,它们共享同一内存区域(字符串常量池),因此使用`==`比较时结果为`true`。 - 如果至少有...

    Java API资源,html版本(官网资源下载入口不太好找,分享给大家)

    本材料为Java API文档,适用于所有Java开发者,尤其是刚开始学习Java的同学,手边有一份API文档,开发效率大有帮助。... String str = new String(data); 既有常用方法,又有其他方法的详细说明,用处巨大。

    Java String对象的经典问题

    2. **使用new关键字**:如`String str = new String("abc");` 这两种方式创建的对象虽然看起来相似,但在内部机制上有所不同。具体来说: - **直接赋值**:这种方式会在**字符串常量池**(String Pool)中查找或...

    String类创建对象问题

    - **使用 new 关键字**:如 `String str = new String("abc");` 这种方式创建的字符串对象则不在字符串池中,而是在堆内存中。每次使用 `new` 关键字都会创建一个新的对象,即使字符串的内容相同。 #### 三、实例...

    C#字符串处理的相关操作

    string str = "abc"; char r = str[0]; // r的值是'a' ``` 可以使用foreach循环来遍历字符串中的每个字符。例如: ```csharp string str = "abc"; foreach (char item in str) { Console.WriteLine($"输出的字符:{...

    通过查询数据库里的方法名称,来调用方法

    利用影射,通过查询数据库里的方法名称,来调用方法 SqlConnection conn = new ... asac.abc c = new asac.abc(); TextBox1.Text = c.abcd(dr); conn.Close(); // str1 = str1.Substring(0, str1.Length - 1);

    c++ stl之string常用函数

    string str1 = "abc"; string str2 = "abd"; if (str1 &lt; str2) { cout &lt;&lt; "str1 is less than str2" ; } ``` 3. **显式比较** - `int compare(const string &s) const:` 显式比较两个字符串,返回值为正表示...

    JAVA_String

    2. 使用`new`关键字和构造函数,如`String str = new String("Hello, World!");` 3. 字符数组转换,如`char[] chars = {'H', 'e', 'l', 'l', 'o'}; String str = new String(chars);` `String`类提供了丰富的操作...

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

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

    StringUtils api 中文 英文 对照

    boolean noneDigits = StringUtils.containsNone(str, "abc"); // true ``` ##### 7. Substring/Left/Right/Mid - **功能**:提取字符串的子串。 - **用途**:在处理较长文本时提取关键信息。 - **示例**: ```...

    StringUtils 中文API

    String s = "abc"; char[] chars = {'a', 'b'}; System.out.println(StringUtils.containsOnly(s, chars)); // false ``` #### 7. **Substring/Left/Right/Mid** - **描述**:从字符串中提取子串。 - **用法*...

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

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

    String类的方法

    String str = "abc"; int len = str.length(); // len 的值为 3 ``` #### 2. `charAt(int index)` - **功能**:返回指定索引处的字符。 - **示例**: ```java String str = "abc"; char myChar = str.charAt...

    java语言程序设计课后习题答案解析.doc

    2. 使用`new`关键字创建新对象:`String str = new String("abc");` 当使用"=="来比较字符串时,它实际上是在检查两个字符串是否指向内存中的同一个引用,而不是比较它们的内容。这意味着,如果两个字符串变量都...

    string 的创建

    - 如 `String str = new String("abc");` - 这种方式下,一个新的字符串对象会在堆内存中创建。 - 同时,`"abc"` 也会被放入字符串常量池中(如果之前没有出现过的话),但 `str` 指向的是新创建的对象而非字符串...

    JAVA面试题解惑系列(二)——到底创建了几个String对象-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    Java 代码:String str = new String("abc"); 这行代码创建了一个 String 对象,并将其引用赋值给 str 变量。 2. 使用引号包含的文本创建 String 对象 Java 代码:String str = "abc"; 这行代码创建了一个 ...

Global site tag (gtag.js) - Google Analytics