在Java中创建循环中的对象

在Java中创建循环中的对象,java,while-loop,global-variables,Java,While Loop,Global Variables,在while循环中创建字符串对象、在每次迭代中指定不同的值和在循环外创建字符串对象以及在每次迭代中指定值有什么区别?这两种代码的区别在于name变量的范围。 名称只能在第一个代码的while循环体中使用,而在第二个代码的整个主体中可以使用。编译后,正如您所看到的,没有任何区别。您可以使用javap-c查看Java字节码 C:\Users\y7017\Desktop>javac Test.java C:\Users\y7017\Desktop>javac Test1.java C:

在while循环中创建字符串对象、在每次迭代中指定不同的值和在循环外创建字符串对象以及在每次迭代中指定值有什么区别?

这两种代码的区别在于name变量的范围。
名称只能在第一个代码的while循环体中使用,而在第二个代码的整个主体中可以使用。

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

C:\Users\y7017\Desktop>javac Test.java

C:\Users\y7017\Desktop>javac Test1.java

C:\Users\y7017\Desktop>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:\Users\y7017\Desktop>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
}
C:\Users\y7017\Desktop>javac Test.java
C:\Users\y7017\Desktop>javac Test1.java
C:\Users\y7017\Desktop>javap-C测试
从“Test.java”编译而来
公开课考试{
公开考试();
代码:
0:aload_0
1:invokespecial#1//方法java/lang/Object。“:()V
4:返回
公共静态void main(java.lang.String[]);
代码:
0:iconst_0
1:istore_1
2:iload_1
3:bipush 10
5:if_icmpge 17
8:ldc#2//字符串测试器
10:astore_2
11:iinc 1,1
14:goto 2
17:返回
}
C:\Users\y7017\Desktop>javap-C Test1
从“Test1.java”编译而来
公共类Test1{
公共测试1();
代码:
0:aload_0
1:invokespecial#1//方法java/lang/Object。“:()V
4:返回
公共静态void main(java.lang.String[]);
代码:
0:iconst_0
1:istore_1
2:iload_1
3:bipush 10
5:if_icmpge 17
8:ldc#2//字符串测试器
10:astore_2
11:iinc 1,1
14:goto 2
17:返回
}
编辑:添加从问题中删除的示例代码块。

Test.java
公共类测试{
公共静态void main(字符串参数[]){
int迭代器=0;
字符串名;
while(迭代器<10){
name=“测试人员”;
迭代器++;
}
}
}
Test1.java
公共类Test1{
公共静态void main(字符串参数[]){
int迭代器=0;
while(迭代器<10){
String name=“Tester”;
迭代器++;
}
}
}

您是否尝试亲自尝试并在调试器中逐步执行此操作?您需要先进行自己的研究。此代码创建一个无限循环。你试过了吗?一般来说,在提问之前你应该先尝试一下。有什么不同吗?第二个不会compile@AniketSahrawat第一个也不会编译。@Guy True。
public class Test {
    public static void main(String args[]) {
        int iterator = 0;
        String name; 
        while( iterator < 10 ) {
            name = "Tester";
            iterator++;
        }
    }
}
public class Test1 {
    public static void main(String args[]) {
        int iterator = 0;
        while( iterator < 10 ) {
            String name = "Tester";
            iterator++;
        }
    }
}