Tag: 局部变量

为什么我会收到“重复的局部变量”错误?

我有一个循环,我在其中计算一个值并将其添加到列表中。 所以,我做了类似的事情: x = getValue() values.add(x) while (true) { x = getValue(); values.add(x) } 我发现这种方法不起作用,因为我将相同的实例添加到列表中。 更详细地说,在循环的每个循环中,我为x重新分配一个新值,这样做我更改了已经添加到列表中的所有元素的值(所以最后我得到了相同元素的列表)。 为了解决这个问题,我做了以下几点: x = getValue(); Integer[] valueToAdd = new Integer[n]; for (int i=0; i<n; i++) { valueToAdd[i] = x[i]; } while (true) { x = getValue(); y = new Integer[n]; for (int i=0; i<n; i++) { valueToAdd[i] = x[i]; } […]

参数范围与局部变量范围?

我正在阅读我的AP cs书,它谈到了三种类型的变量: •实例变量 •局部变量 •参数 实例变量在整个类等中都是可见的…参数仅在方法中可用,因此是局部变量。 。 。 因此,我的问题是,如果它们包含相同的范围,它们为什么会将参数和局部变量分类为不同的变量类别。 。 。 尽管它们的用途不同。

内部类非最终变量java

我需要更改内部类中的变量,并且我得到了臭名昭着的“不能引用在不同方法中定义的内部类中的非final变量”错误。 void onStart(){ bt.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int q = i; } }); } 我很快创建了一个类,它包含了我想要改变的所有内容,并在内部类之外创建了类的最终版本 class temp{ int q; } void onStart(){ final temp x = new temp(); bt.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { xq = i; } }); } 这似乎是我需要的,它的工作原理,但我想知道这是如何正确解决问题。 另外,我真的很讨厌用temp这个词命名我的class级。 对于我所做的事情,是否有一个实际的编程术语,以便为我的课程创建一个更具描述性的名称?

我可以在Java中的静态成员函数中声明一个静态变量吗?

private static int Fibonoci(int n) { static int first=0; static int second=1; static int sum; if(n>0) 我收到错误“非法修饰符”,如果我删除静态关键字没有错误,我需要这些变量是静态的

Java如何打印所有局部变量?

我有一个方法,想要检查其中的变量而无需调试 – 在Java中是否可能? 我不想写大量的代码,如: System.out.println(“a: ” + a); 我想要的是: System.out.printLocals(); 也应该很高兴有类似的东西: System.out.printMembersOf(someObjectInstance);

“数组初始化程序需要一个明确的目标类型” – 为什么?

遵循JEP 286:局部变量类型推断描述 我想知道,引入这种限制的原因是什么,如: Main.java:199: error: cannot infer type for local variable k var k = { 1 , 2 }; ^ (array initializer needs an explicit target-type) 所以对我来说逻辑上它应该是: var k = {1, 2}; // Infers int[] var l = {1, 2L, 3}; // Infers long[] 因为Java编译器已经可以正确地推断出数组的类型: void decide() { arr(1, 2, 3); // call void […]

Java最终局部变量存储在哪里?

采用以下示例: public void init() { final Environment env = new Environment(); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { env.close(); } }); } 首先, env存储在哪里? 是吗: 由编译器复制到引用它的内部类的隐藏成员变量中 复制到堆上并在其上引用 留在堆栈上并以某种方式在那里引用 别的 我的猜测是第一个选择。 其次,执行这样做会产生任何性能问题(而不是简单地创建env作为类的成员变量并引用它),特别是如果要创建大量引用最终局部变量的内部类构造。

声明一个无用的局部变量

所以这是一个奇怪的,我知道代码本身是相当无用的,但我想知道为什么我得到错误: 我写了一些代码,我写了这个: if(scan.hasNextInt()) int row = scan.nextInt(); 当时没有考虑变量范围,显然这是没用的,因为我无论如何也不能使用row 。 我没有得到的是为什么我得到了错误: > javac hw.java hw.java:25: ‘.class’ expected int row = scan.nextInt(); ^ hw.java:25: not a statement int row = scan.nextInt(); ^ hw.java:25: illegal start of expression int row = scan.nextInt(); ^ hw.java:25: ‘;’ expected int row = scan.nextInt(); ^ 现在,如果我只是修改它,如果检查: if(scan.hasNextInt()) { int row = scan.nextInt(); […]