【发布时间】:2023-03-19 07:18:02
【问题描述】:
这段代码在 Java 中安全吗?
public class HelloWorld {
public static void main (String args[]) {
HelloWorld h = new HelloWorld();
int y = h.getNumber(5);
int z = h.getNumber (6);
if (y == 10)
System.out.println("true");
}
public int getNumber(int x) {
int number = 5;
number = number + x;
return number;
}
}
我的同事说 int number 将被放置在堆栈中,当 getNumber 返回时,它将被弹出并可能被覆盖。
相同的代码在 C 中是否可能不安全?
【问题讨论】:
-
是的,没关系。请您的同事解释为什么这不安全,也许您可以与我们分享。
-
不要把 scope 与运行时发生的任何事情混为一谈。 Scope 是一个编译时概念,它定义了在源代码中可以使用标识符的位置。
-
你的同事错了。
-
您的同事可能更愿意在 getNumber 方法中返回 x+5
-
你的同事似乎完全不知道 Java 是如何工作的。