动态创建变量,java变量的数据类型

时间:2014-10-24 04:58:41

标签: java variables

我们知道变量具有不同的数据类型,但哪种数据类型的名称是?
因为它们似乎是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++;

我该怎么做?

6 个答案:

答案 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提供了其他方法来实现此目的。 您可以将arraysMap<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,以满足这些场景。

之前的帖子类似:How to create new variable in java dynamically

答案 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可能包含一些消息/文本,例如来自标签/其他地方的每次点击