test()中的char a[]={'1','2'};是局部变量, 全局变量未初始化

解决方案 »

  1.   

    自己又定义了一个同名局部变量把前面那个变量的作用域覆盖了char  a[];
    test(){
        a={'1','2'};
    }
    这样不会有问题...
      

  2.   

    sorry弄错了
    a = new char[]{'1','2'};
    应该这样
    不过你要想得到你要的结果还要:
    System.out.println(new String(new test1().a) +new String("3333"));
      

  3.   

    如果想显示一个字符串,那么就把你脑子里c语言的字符数组给扔掉吧,记住String即可,
    它把C里面人工对char[]的操作都封装起来了
      

  4.   

    to regiester:
    char  a[];
    test(){
        a={'1','2'};
    }
    我觉得这样挺合语法的呀,给字符数组分配数据书上不就是这样写的吗?
    你第二次说这样写:
    a = new char[]{'1','2'};为什么要这样写?
      

  5.   

    a={'1','2'};
    a = new char[]{'1','2'};效果相同,我的意思是如果想显示12的话,直接用String s = "12", 不要用char[]
      

  6.   

    char a = {'1','2'};
    这个只能这样用
    char a;
    a = new char[]{'1','2'};
    这个需要这样
    看明白了吧:D
      

  7.   

    toshine333:
    你说得对,但有时候我却只能用字符数组,比如做IO流相关的程序时,你要接收字节或字符时,你需要用bye[],char[],来储蓄,用String还行吗?
    你说a={'1','2'}与a=new char[]{'1','2'}是一样?
    我使用test(){
        a={'1','2'};
    }
    时,并且编译后,编译器报错如下:C:\Documents and Settings\Administrator\桌面\test1.java:5: illegal start of expression
     a={'1','2'};
               ^
    1 errorTool completed with exit code 1
    看来,关于字符数组的使用还是有些疑问?
      

  8.   

    to register:
    你的写法a=new char[]{'1','2'},这样写很对!只有这样才能给字符数组赋值,为什么要这样做呢?
    给字符数组赋值还有哪些办法呢?谢谢你!
      

  9.   

    char a = {'1','2'}; 只能在声明变量的同时使用
    a=new char[]{'1','2'}; 可以在任何时候使用
      

  10.   

    public class Test3 {
    char  a[];
    Test3(){   a=new char[]{'1','2'};
    }
    public static void main(String args[]){System.out.println(new Test3().a +new String("3333"));
    }}结果如下:[C@18586103333
    看来输出的仍旧是a字符数组的地址
      

  11.   

    大概有两个问题:
    一、char[]是对象,所以a指向的是对象实例,new Test3().a +new String("3333")也就等价于new Test3().a.toString() +new String("3333"),打出乱码不足为奇;
    二、退回来说,new Test3().a不是一个静态变量,按理说不能在main里面使用,至于为什么不报错,我就不清楚了!