public class Menu extends GameCanvas implements Runnable{
String[] m ;
public Menu(Display dIn){
m={"a123","c321","a123","b456","c321","b456"};
}
}抛出Array constants can only be used in initializers但是
public class Menu extends GameCanvas implements Runnable{
String[] m={"a123","c321","a123","b456","c321","b456"};
public Menu(Display dIn){
}
}
就可以为什么
以前建立对象、建立基本数据时第一种方法完全没为题,求解
String[] m ;
public Menu(Display dIn){
m={"a123","c321","a123","b456","c321","b456"};
}
}抛出Array constants can only be used in initializers但是
public class Menu extends GameCanvas implements Runnable{
String[] m={"a123","c321","a123","b456","c321","b456"};
public Menu(Display dIn){
}
}
就可以为什么
以前建立对象、建立基本数据时第一种方法完全没为题,求解
非要赋值创建应该可以m = new String[]{"a123","c321","a123","b456","c321","b456"};
public class NewClass {
public static void main(String args[]){
String s[]={"1","2","3"};//定义时赋初值,这是可以的
String b[];//定义并不初始化
//b={"1","2","3"}; 这是不可以的
b=new String[]{"1","2","3"};//这样是可以的
//原因分析:
//Java内存分为两种:栈内存和堆内存
//栈内存用于存放基本类型变量(如int i,double b)和引用类型变量(如String s,
//int[] i,A a(A是一个定义的类)),如s,i,a这此变量,它们只是一个引用,它们的
//引用的内容是存放在堆内存中的,如s指向堆中一串字符,i指向堆中一列数组的首地址
//而这此字符,首地址,创建的方式是用new运算符创建的new String("ABC"),new int[10]
//当然,还有一种创建方式,就是初始化的时候创建,如:String s[]={"1","2","3"};
//然而,如果你在定义引用变量如程序中的b时,不初始化,也就是以后再用它指向堆中的内容
//这当然也是可以的。不过,这时,b={"1","2","3"};就有问题了,{"1","2","3"}在哪儿呢?
//它可并不是用new创建的,所以这是不合法的。
//而且,你编译时的提示,也说明了这点:{"1","2","3"}这个实际上是常数组,它只能用在
//初始化中
}
}
//虽然你貌似写的是J2ME程序,不过,原理和J2SE程序是一样滴
public class NewClass {
public static void main(String args[]){
String s[]={"1","2","3"};//定义时赋初值,这是可以的
String b[];//定义并不初始化
//b={"1","2","3"}; //这是不可以的
b=new String[]{"1","2","3"};//这样是可以的
//原因分析:
//Java内存分为两种:栈内存和堆内存
//栈内存用于存放基本类型变量(如int i,double b)和引用类型变量(如String s,
//int[] i,A a(A是一个定义的类)),如s,i,a这此变量,它们只是一个引用,它们的
//引用的内容是存放在堆内存中的,如s指向堆中一串字符,i指向堆中一列数组的首地址
//而这此字符,整型数组,创建的方式是用new运算符创建的new String("ABC"),new int[10]
//当然,还有一种创建方式,就是初始化的时候创建,如:String s[]={"1","2","3"};
//然而,如果你在定义引用变量如程序中的b时,不初始化,也就是以后再用它指向堆中的内容
//这当然也是可以的。不过,这时,b={"1","2","3"};就有问题了,{"1","2","3"}在哪儿呢?
//它可并不是用new创建的,所以这是不合法的。
//而且,你编译时的提示,也说明了这点:{"1","2","3"}这个实际上是常数组,它只能用在
//初始化中
}
}