我想知道String[]的含义,我在网上搜过了,找不到满意的答案。先说说我的看法,不对之处请大家指出:在main中:
String str[] = null;
str[0]="123456";
System.out.println(str[0]);
会报错:Exception in thread "main" java.lang.NullPointerException
at RandomResult.main(RandomResult.java:24)
如果代码改为:
String str[] = new String[5];
str[0]="123456";
System.out.println(str[0]);
就正确了。
应该是第一次的代码中没有给str数组分配内存空间,所以就报错了。String str[] = null;
str="1,2,3,4,5,6".split(",");
for(int i=0;i<str.length;i++){
    System.out.println(str[i]);
}
这个是正确的,API中:public String[] split(String regex)
split方法的返回类型就是数组。
不知道我的理解正确不?

解决方案 »

  1.   

    差不多吧,但是一般不是在那里用的。这个数组一般是在编译执行的时候带参数使用的。一般没有人在main中使用,除非是为了得到在命令行输入的参数。
      

  2.   

    API是这么说的啊 str="1,2,3,4,5,6".split(",");
    str 是"1,2,3,4,5,6".split(",") 返回的字符串数组的引用 ;
      

  3.   


    数组我不常用,这个是我为了理解,在main函数中写的测试
      

  4.   


    我写java程序快一年了,数组这一块不经常用,我只是想弄明白,不希望糊里糊涂的,有许多东西都是,只是会用,就是不知道它的原理,感觉很难受
      

  5.   


    是的,我就是查的API,数组名即使这个数组空间的首地址
    谢谢你了,不过还是不太明白举个例子:
    int a[]={1,2,3},b[];
    b=a;
    这是一个引用赋值,那个和这个例子是不是很像啊
      

  6.   


    我说的是实话,我上学期学的是java SE 写的程序不多,下学期学的java web,一直在写程序,主要是用的Struts2 + hibernate,就不怎么接触数组,hibernate查询出来的都在list中,直接拿来作为对象就用了
      

  7.   

    你的理解是正确的
    通常所用的数组变量其实是一个指向数组的引用,所以它可以被赋值给其它引用,但数组数据是没变的
    数组可以为null,没被初始化或赋值就无法使用。
    另外,我建议你把如
    String str[] = new String[5];
    这样的写法改成等价的
    String[] str = new String[5];
    既提高可读性,也有助于你的理解。