String[] s = {"aa","bb","cc",};
System.out.println(s.length);为什么打印出的结果是3?我还以为是4,并且s[3]是NULL。
请指教!

解决方案 »

  1.   

    s.length返回的是数组中字符串的个数。
    而s[]是对字符串的引用;与普通数组一样,下标从0开始;
    所以该数组的下标值最大为2。因此s[3]是空的
      

  2.   

    根本就没有s[3],它也不是null,如果是null,你是可以输出s[3]的.不信你可以试着输出s[3],保证出现数组越界异常
      

  3.   

    s[0]-->aa
    s[1]-->bb
    s[2]-->cc
    s[3]-->null
      

  4.   

    String[] s = {"aa","bb","cc",}; 
    System.out.println(s.length); 为什么打印出的结果是3?我还以为是4,并且s[3]是NULL。 红色部分与下面是一样的
    String[] s = {"aa","bb","cc"}; 所以结果是3,也不存在s[3],最大到s[2]
      

  5.   


    String[] s = {"aa","bb","cc",};
    System.out.println(s.length);
    for (String t : s) {
    System.out.println(t);
    }结果
    3
    aa
    bb
    cc
                                                                                              String[] s = {"aa","bb","cc",null}; 
    System.out.println(s.length);
    for (String t : s) {
    System.out.println(t);
    }结果
    4
    aa
    bb
    cc
    null
      

  6.   

    不能访问s[3],否则:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at A.main(A.java:6)
      

  7.   


    同意.String[] s = {"aa","bb","cc",}; 长度就是3个啊.怎么会是四个呢.数字下标是从0开始的.Java中都是从0开始的,int 的初始值也是0.
      

  8.   

    空就是Null,也就是声明并初始化了一个容量为四的数组,只不过最后一个元素初始化为空而已
      

  9.   

    我就是不太理解在数组定义中一个逗号后面什么都不加,不知道JAVA编译器是怎么去理解的。如果写两个逗号又会报错。
    String[] s = {"aa","bb","cc",,};以逗号开头也会报错。
    String[] s = {,"aa","bb","cc"};
      

  10.   

    哈哈,看得真仔细啊
    s[0]-->aa 
    s[1]-->bb 
    s[2]-->cc 
    s[3]-->null 
    长度是4
      

  11.   

    //确实是这个样子啊 :
    public class A {
     public static void main(String[] args) {
     String[] s1 = {,};
     String[] s2={};
     
     System.out.println(s1.length);
     for (String t : s1)
     { System.out.println(t); } 
     
     System.out.println(s2.length);
     for (String t : s2)
     { System.out.println(t); } 
     
     }
    }-------输出-----------------------
    0
    0