在 Java 中的循环中创建对象


在 while 循环中创建字符串对象,在每次迭代中

分配不同的值,在循环外创建字符串对象并在每次迭代中赋值有什么区别?

编译后,如您所见,没有区别。您可以使用 javap -c 查看 Java 字节码。

C:Usersy7017Desktop>javac Test.java
C:Usersy7017Desktop>javac Test1.java
C:Usersy7017Desktop>javap -c Test
Compiled from "Test.java"
public class Test {
    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: iconst_0
            1: istore_1
            2: iload_1
            3: bipush        10
            5: if_icmpge     17
            8: ldc           #2                  // String Tester
            10: astore_2
            11: iinc          1, 1
            14: goto          2
            17: return
}
C:Usersy7017Desktop>javap -c Test1
Compiled from "Test1.java"
public class Test1 {
    public Test1();
        Code:
            0: aload_0
            1: invokespecial #1                  // Method java/lang/Object."<init>":()V
            4: return
    public static void main(java.lang.String[]);
        Code:
            0: iconst_0
            1: istore_1
            2: iload_1
            3: bipush        10
            5: if_icmpge     17
            8: ldc           #2                  // String Tester
            10: astore_2
            11: iinc          1, 1
            14: goto          2
            17: return
}

编辑:添加了从问题中删除的示例代码块。

测试.java

public class Test {
    public static void main(String args[]) {
        int iterator = 0;
        String name; 
        while( iterator < 10 ) {
            name = "Tester";
            iterator++;
        }
    }
}

测试1.java

public class Test1 {
    public static void main(String args[]) {
        int iterator = 0;
        while( iterator < 10 ) {
            String name = "Tester";
            iterator++;
        }
    }
}

两个代码之间的区别在于 name 变量的作用域。name 只能在第一个代码的 while 循环主体中使用,而在第二个代码的整个主体中使用。

相关内容

  • 没有找到相关文章

最新更新