如何在 java 变量本身中创建变量名称

How to make the name of a variable in java variable itself

例如,如果我有很多变量 var1、var2、var3,....我如何使用索引 i

轻松地操作它们
for(int i=1,i<n;++i)
    System.out.print(vari);

我知道这是不正确的,但我想知道是否有可能以这种方式操纵变量

您有不使用集合的原因吗?例如数组、列表甚至地图。

我的答案是使用其中一种结构,否则我认为没有更简单的方法。

我能想到的最接近的是:

Map<String, Object> map = new HashMap<>();
for(int i=1; i<map.size(); i++) {
    System.out.println(map.get("var"+i));
}

如果vari是局部变量,则不行。 如果 vari 都是 class 的成员,那么你可以使用 Reflection API 来完成(参见方法 Class.getField() 和 Class.getDeclaredField()),但是它效率会很低。使用集合并找到替代选项要好得多。

将它们添加到列表或数组 YourClass[] 并像这样遍历它们:

List<Cat> catsList = new ArrayList<>();
Cat[] catsArray = new Cat[3]; //alternatively
public CatHouse(){
    Cat bob = new Cat();
    Cat fluffy = new Cat();
    Cat tom = new Cat();
    catsList.add(bob);
    catsList.add(fluffy);
    catsList.add(tom);
    //alternatively
    catsArray[0] = bob;
    catsArray[1] = fluffy;
    catsArray[2] = tom;
}

然后遍历 list\array 做一些事情:

public void groomAll(){
    for (Cat cat : catList){
       cat.groom();
    }
    //alternatively
    for (Cat cat : catArray){
       cat.groom();
    }
}