如何使数组指向已初始化的数据类型?Java/Android
对不起,我不知道如何表达这个问题。 我知道一个解决问题的方法,现在我想知道我是否能把它做得更好 是否可以将数组指向已初始化的数据类型如何使数组指向已初始化的数据类型?Java/Android,java,arrays,pointers,store,Java,Arrays,Pointers,Store,对不起,我不知道如何表达这个问题。 我知道一个解决问题的方法,现在我想知道我是否能把它做得更好 是否可以将数组指向已初始化的数据类型 String matt =""; String tom =""; String id =""; String[] ar = {"id", "matt", "tom"}; ar[0]="hi"; ////////////////////// 我怎样才能做到这一点: ar[0]=“你好” 等于: id="hi"; ///////////////////// 或者
String matt ="";
String tom ="";
String id ="";
String[] ar = {"id", "matt", "tom"};
ar[0]="hi";
//////////////////////
我怎样才能做到这一点:
ar[0]=“你好”代码>
等于:
id="hi";
/////////////////////
或者我可以这样做吗
String[] ar = {String id ="", String matt ="", String tom =""};
///////原始代码/////////
String matt ="";
String tom ="";
String id ="";
String[] ar = {"id", "matt", "tom"};
for (int i = 0; i < ar.length; i++) { // i indexes each element successively.
Pattern p = Pattern.compile(ar[i]+":(\\d+)");
Matcher m = p.matcher(data);
if (m.find()) {
data=data+"\nfound: "+ar[i]+" "+m.group(1).toString();
ar[i]= m.group(1).toString();
}
}
data=data+"\nvaribale: "+ id;
tv.setText(data);
String matt=”“;
字符串tom=“”;
字符串id=“”;
字符串[]ar={“id”,“matt”,“tom”};
对于(inti=0;i
要想做你想做的事,你只能尝试以下方法:
public class StringWrapper {
public String value;
public StringWrapper(String value)
{
this.value = value;
}
}
并像这样使用它:
StringWrapper id = new StringWrapper("id");
StringWrapper tom = new StringWrapper("tom");
StringWrapper matt = new StringWrapper("matt");
StringWrapper[] objs = new StringWrapper[] {id, tom, matt};
for(StringWrapper i : objs) {
System.out.println(i.value);
}
objs[1].value = "Doge";
System.out.println(tom.value); // Doge
为了使它更好,您还应该添加toString()
、hashcode()
和equals()
。而且可能比我用的名字要短。你不能做你想做的事,原因有很多。
不能按名称引用变量,除非有大量可怕的反射代码
字符串在Java中是不可变的,因此,如果可以按名称获取变量,则不能使用所需的间接方式更改字符串的值
或者您可以创建一个类似这样的方法来更新数组和元素。它的代码太基本了——它只是想让你知道实现这一点的可能方法
public class RandomStuff {
private static String matt = "";
private static String tom = "";
private static String id = "";
public static void main(final String[] args) {
final String[] ar = { "id", "matt", "tom" };
updateAr(0, "hi", ar);
System.out.println("matt:" + matt);
}
public static void updateAr(final int index, final String val, final String[] ar) {
ar[index] = val;
if (index == 0) {
matt = val;
}
if (index == 1) {
tom = val;
}
if (index == 2) {
id = val;
}
}
}
不可以。当我以ar[1]为目标时,我想更改存储在“matt”中的值。您不能更改,因为字符串是不可变的。你必须制作一些字符串包装器,并将值保存在其中。你能详细介绍一下字符串包装器吗?你不能;你到底想做什么?看起来您想要解析一些看起来(部分)像“tom:23”的文本,并将tom的值设置为23?在这种情况下,您需要的是一个(例如),而不是一个数组。如果我没有弄错您的问题,您希望将字段名存储在数组中,并让循环将结果分配给相应的字段吗?您可以使用Java反射(或者像BeanUtils这样的帮助程序库)来实现这一点,但我不会这么做。另一种选择是使用映射而不是字段<代码>map.put(ar[i],m.group(1.toString())代码>谢谢。我的朋友总是告诉我,我在寻找那些不存在的东西。