我们知道变量具有不同的数据类型,但哪种数据类型的名称是?
因为它们似乎是String
,但如果它们是String
则应允许这样做:
int i=6;
String [] arr+i;
...我们可以在int
添加String
所以如果这些不是String
那么它们是什么?
如果我们想要动态创建变量名称,我们如何创建它?
动态地我的意思是每当用户点击特定JComponent
时,就会创建一个新变量,如:
int i=0;
//on first click
String str+i; ///str0
i++;
///on 2nd click
String str+i; ////str1
///i++;
我该怎么做?
答案 0 :(得分:2)
Java标识符不属于任何类型,绝对不是String
。您不能在java中执行此操作,而是使用数据结构来使用ArrayList<String>
这些值,并将nth String
存储在数据结构的nth
索引中,如下所示:< / p>
ArrayList<String> strings= new ArrayList<String>(); // Create a new empty List
strings.add(index, string); //add string at index position of the List; can be replaced with strings.add(string) if the strings are being sequentially added
答案 1 :(得分:1)
您无法在Java中创建动态变量,因为Java不是脚本语言。你需要在源代码中创建变量。但Java提供了其他方法来实现此目的。
您可以将arrays
或Map<String, String>
等用于此目的。
Map<String, String> map= new HashMap<>();
int i=0;
while(true) {
// you can use whatever condition you need
details.put("key" + i, "val: "+i);
i++
// some condition to break the loop
}
答案 2 :(得分:1)
CONSIDER THIS:
公共课测试{
public Test() {
}
public static void main(String[] args) {
// GenericType<Integer> intObj;//creates a generic type for integers
//String type
GenericType<String> strObj=new GenericType<String>("My data");
System.out.println("Value is " +strObj.getValue());
}
}
class GenericType<GT>{
GT obT;
GenericType(GT o){
obT=o;
}
GT getValue(){
return obT;
}
void showType(){
System.out.println("Type of GT is " +obT.getClass().getName());
}
}
GT是类型参数的名称。此名称用作创建对象时将传递给GenericType的实际类型的占位符。因此,只要需要类型参数,就在GenericType中使用GT。请注意,GT包含在其中 &LT;取代。这种语法可以推广。每当声明一个类型参数时,它都在尖括号内指定。因为Gen使用类型参数,Gen是一个泛型类,也称为参数化类型。
如上所述,JAVA为您提供了高级通用类,如ArrayList,Vectors,Hashmaps,以满足这些场景。
答案 3 :(得分:0)
Java无法以这种方式工作。其他语言确实如此,但Java并不是其中之一。您无法动态操作变量名称,因为它们在编译时是固定的。但是,在某些解释的脚本语言中,这样的事情是可能的。
为了更准确,如果将它们固定为任何东西,它们将在编译时修复。如果java未在调试模式下编译,则变量的名称根本不再存在。它们只是成为内存位置的地址。
详情请见:Can I get information about the local variables using Java reflection?
答案 4 :(得分:0)
变量名称没有数据类型。它们仅仅是参考。它们不是String
,它们不是int
,它们只是名称。您无法动态声明一个名称派生自另一个变量名称的变量,Java不会以这种方式工作。
答案 5 :(得分:0)
首先,变量可以分为两类。基元(标准)类型,如int,float,double,char,boolean,byte ...和非基元(用户定义)类型,如String,Integer,Float,Double。字符串类型属于非原语,它是由java.lang提供的类Api,这样当你创建一个字符串变量时,你确实创建了一个对象EX String str; str是一个对象,它也可以声明为String str = new String();
因此字符串类包含可能有助于实现目标的辅助方法,您也可以按如下方式使用字符串的连接/连接:
class Demo{
String str;
static int i;
JButton but=new JButton("click me!");
.....
public static void actionPeaformed(ActionEvent e){
Object source=e.getSource();
str="msg";
if(source==but){
String newStr;
newStr=str+i;
System.out.println(newStr);
}
}
}
其中str可能包含一些消息/文本,例如来自标签/其他地方的每次点击