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){
}
}
就可以为什么
以前建立对象、建立基本数据时第一种方法完全没为题,求解

解决方案 »

  1.   

    错误信息不是说的很清楚了吗。
    非要赋值创建应该可以m = new String[]{"a123","c321","a123","b456","c321","b456"};
      

  2.   

    //虽然你貌似写的是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"}这个实际上是常数组,它只能用在
            //初始化中
        }
    }
      

  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"}这个实际上是常数组,它只能用在
      //初始化中
      }
    }