java - 循环后变量被重置

标签 java variables for-loop

我正在学习 Java,并编写了一个带有 for 循环的程序。但打印出来后我的变量是0。为什么会被重置?这是我的代码:

Private static int number;

public static void main(String[] args)
{
    int number = 0;
    for (int i = 0; i < 10; i = i + 1)
    {
        number = number + 1;
    }
    System.out.println("Main: " + number);
    print();
}

public static void print()
{
    System.out.println("Print: " + number);
}

这是结果:

run:

Main: 10

Print: 0

BUILD SUCCESSFUL (total time: 0 seconds)

最佳答案

您的变量未重置。当您是新手时,这可能很难理解,但是通过说 int number; 您可以创建一个 int 类型的新变量 number。另请记住,变量将保留在创建它们的范围内,并且不能在该范围之外使用。这意味着,如果您在 while 循环中初始化变量,则该变量只能在该 while 循环中使用。这同样适用于方法。

您在第一行创建了一个变量number,该变量可供类中的每个方法使用,并且默认设置为零。但是,您在 main 方法中创建了另一个变量号。第二个变量仅存在于您的 main 方法中,因为这是创建它的范围。

让我给你一些解决这个问题的方法:

Private static int number;

public static void main(String[] args)
{
    //By removing `int`, we reference the variable that has already been initialized
    //instead of creating a new one
    number = 0;
    for (int i = 0; i < 10; i = i + 1)
    {
        number = number + 1;
    }
    System.out.println("Main: " + number);
    print();
}

public static void print()
{
    System.out.println("Print: " + number);
}

如果您的变量不需要进一步访问,则有可能出现这种情况:

public static void main(String[] args)
{
    int number = 0;
    for (int i = 0; i < 10; i = i + 1)
    {
        number = number + 1;
    }
    System.out.println("Main: " + number);
    print(number);
}

//We use the created variable as a parameter
public static void print(int number)
{
    System.out.println("Print: " + number);
}

关于java - 循环后变量被重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50269720/

相关文章:

java - 垃圾收集器Java应用程序无法释放POD Kubernetes中的内存。

java - Java 8 的 Lombok 问题

JavaScript 创建变量并使用循环为它们赋值

bash - Bash 命令中单引号内变量的扩展

java - 为什么变量显示0?

python - 如何有条件地转换 pandas 数据框列

javascript - 合并node.js中的对象

java - 是否有使用 Hibernate/Spring Data JPA 处理乐观锁定的通用方法?

java - Java中String CompareTo函数的时间复杂度是多少?

javascript - 如何避免在 javascript for 循环中重复代码?