char[] idata=new char[512];
idata[0]='1';
idata[1]='2';
System.out.println("the data length is :"+idata.length);
结果显示的512.我想获取有效数据的长度,比如c语言中的strlen函数获取到结果为2 了?
新手刚学java 谢谢路过指点啊!

解决方案 »

  1.   

    learning~~
    可以自己写函数返回它的实际长度,因为在初始化数组前,数组中每个元素已经被自动初始为
    (char)0。
      

  2.   

    由于你初始化的是512,所以LENGTH是512了char[] idata=new char[512];
    idata[0]='1';
    idata[1]='2';
    int j = 0;
    for(int i=0;i<idata.length;i++){
     if(idata[i]!=null){j++;}
    }
    System.out.println("the data length is :"+j);
      

  3.   

    char[] idata=new char[512];//你开避了512个"char"的空间
    idata[0]='1';
    idata[1]='2';//前两个空间被你赋值了,其他的空间为空。但仍占地方的
    System.out.println("the data length is :"+idata.length);//总长度还是你一开始定义的512
      

  4.   

    正如 zsh168(zsh168)所说的,你初始化的是512,所以LENGTH是512了。要么像zsh168(zsh168) 那样用for循环判断,要么你自己写个类,里面多个计数器。或者干脆来省事的用ArrayList.
      

  5.   

    由于你初始化的是512,所以LENGTH是512了char[] idata=new char[512];
    idata[0]='1';
    idata[1]='2';
    int j = 0;
    for(int i=0;i<idata.length;i++){
     if(idata[i]!=null){j++;}
    }
    System.out.println("the data length is :"+j);
      

  6.   

    不好意思,刚才写的有问题,写成下面这样:
    char[] idata = new char[512];
            idata[0] = '1';
            idata[1] = '2';
            int j = 0;
            for (int i = 0; i < idata.length; i++) {
                if (idata[i] != '') {
                    j++;
                }
            }
    idata[i] != ''单引号中的字符是个方框,不好意思这里粘贴不上
            System.out.println("the data length is :" + j);
      

  7.   

    一定要用String[]吗,可以考虑Vector
      

  8.   

    要不这样
    String x ="123456789";
    char[] c = x.toCharArray();