Java 使同名的新ArrayList行为不同
所以我试着用ArrayList做实验,我遇到了这个问题: 当我这样做时,为什么Java会说“ArrayList已声明”:Java 使同名的新ArrayList行为不同,java,arraylist,Java,Arraylist,所以我试着用ArrayList做实验,我遇到了这个问题: 当我这样做时,为什么Java会说“ArrayList已声明”: ArrayList<Integer> myList = new ArrayList<>(); ArrayList<Integer> myList = new ArrayList<>(); ArrayList myList=new ArrayList(); ArrayList myList=新的ArrayList(); 但Ja
ArrayList<Integer> myList = new ArrayList<>();
ArrayList<Integer> myList = new ArrayList<>();
ArrayList myList=new ArrayList();
ArrayList myList=新的ArrayList();
但Java不会在我这样做时说列表已经声明(编译时没有错误):
for(int i=0;i在第一种情况下,在同一范围内定义两个同名变量
在循环中,myList变量的作用域仅在循环内。这意味着每次进入循环时,变量都会被启动,然后在循环结束时被销毁
看看:1。但是,您不能在java中的同一范围内创建相同名称的变量
2.关于在循环中声明相同的变量。这称为:
当在特定范围内声明的变量(决策块、方法或内部类)与在外部范围内声明的变量具有相同的名称时,会发生变量隐藏。在标识符级别(名称,而不是变量)
Java中变量的范围
public class Test
{
// All variables defined directly inside a class
// are member variables
int a;
private String b;
void method1() {
// Local variable (Method level scope)
int x;
}
int method2() {....}
char c;
}
就你而言
在每个循环之后,作用域被销毁,变量消失。在下一个循环中,将创建一个新的作用域,并且可以在该作用域中再次声明变量
为此:
for(int i=0; i<5; i++){
ArrayList<Integer> myList = new ArrayList<>();
}
for(int i=0;i因为您有两个同名的变量。在第二个变量中,您始终只有一个变量,即使循环是无穷大的。大括号描述变量的范围。在循环中,变量myList
在循环的每一圈结束时都超出范围。此外,您还有不需要的()
在变量声明中。
for(int i=0; i<5; i++){
ArrayList<Integer> myList = new ArrayList<>();
}