private List<String>[] playersCards = new List[PLAY_NUM];
List接口的实例化不是又其子类来实现的吗
比如
private List<String> playersCards =new ArrayList<String>();
private List<String> playersCards =new LinkedList<String>();List<String>[] 这个是List的数组吗?
api 上怎么没有呢JavaAPI实例

解决方案 »

  1.   

    这个意思就是说你创建了一个数List组,然后数组的每一个元素里放的是String
      

  2.   

    创建数组的意思并不是说和创建普通对象一样,
    假如你List list = new List();这一定是不允许的,因为接口是不允许创建对象的对吧?
    但是你private List<String>[] playersCards = new List[PLAY_NUM];这个的意思只是说我声明了一个List的数组,期间不涉及到创建List的对象所以是可以的。不知道你明白了没有。你可以自己写一个接口测试一下
      

  3.   

    你弄混了我想,private List<String>[] playersCards = new List[PLAY_NUM];
    这句话是在创建一个数组,一个装List的数组,那个PLAY_NUM是个常量值吧。这和创建List没有关系,你上面创建了一个空的数组,用来装LIST(或者说LIST的引用),但是你其实什么LIST都没创建。不知道说清楚没有。这个是java基础,建议你再选本基础书好好看看,推荐head firs java,thinkin in java,前者生动有趣很容易懂,后者……经典,但是有点难度。
      

  4.   

    嗯好像有点明白了 呵呵 谢谢你啊
    还想我你一个问题啊 不好意思我基础比较差  呵呵
      if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    players[i]!=null 为什么或者!players[i].equals("")
    players[i]!=null是判断地址不为空
    !players[i].equals("") 是判断内容不为空
    地址和内容没有包含的关系吗  是2个独立的吗?
      

  5.   

    嗯  有点明白了  还想问一个问题啊?
     if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();            }
    为什么要判断players[i] != null 或者!players[i].equals("")呢
    players[i] != null是判断地址
    !players[i].equals("")是判断内容
    2个是独立的关系 不是包含的关系吗?
      

  6.   

    嗯  有点明白了  还想问一个问题啊?
     if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();            }
    为什么要判断players[i] != null 或者!players[i].equals("")呢
    players[i] != null是判断地址
    !players[i].equals("")是判断内容
    2个是独立的关系 不是包含的关系吗?
      

  7.   

    嗯好像有点明白了 呵呵 谢谢你啊
    还想我你一个问题啊 不好意思我基础比较差  呵呵
      if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    players[i]!=null 为什么或者!players[i].equals("")
    players[i]!=null是判断地址不为空
    !players[i].equals("") 是判断内容不为空
    地址和内容没有包含的关系吗  是2个独立的吗?

    不不,if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    这个是java内存的问题了,比如你new创建一个对象他在内存中就有唯一一个地址,唯一一个hashcode码
    String str1 = new String("123");
    String str2 = new String("123");
    如果==判断就是false因为比较的是地址也就是hashcode是否相同,new两个对象hashcode必然不同,而equals比较 的是他们的值所以是true。
    这个你要找找资料了解一个java内存,不用太深了解,大概就可以了。
    地址是地址,内容是内容。
      

  8.   

    嗯好像有点明白了 呵呵 谢谢你啊
    还想我你一个问题啊 不好意思我基础比较差  呵呵
      if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    players[i]!=null 为什么或者!players[i].equals("")
    players[i]!=null是判断地址不为空
    !players[i].equals("") 是判断内容不为空
    地址和内容没有包含的关系吗  是2个独立的吗?

    不不,if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    这个是java内存的问题了,比如你new创建一个对象他在内存中就有唯一一个地址,唯一一个hashcode码
    String str1 = new String("123");
    String str2 = new String("123");
    如果==判断就是false因为比较的是地址也就是hashcode是否相同,new两个对象hashcode必然不同,而equals比较 的是他们的值所以是true。
    这个你要找找资料了解一个java内存,不用太深了解,大概就可以了。
    地址是地址,内容是内容。呵呵  谢谢解答 再问下这2个有什么区别呢
     public void initPlayer(String... names) {}
     public void initPlayer(String[] names) {}
      

  9.   

    嗯好像有点明白了 呵呵 谢谢你啊
    还想我你一个问题啊 不好意思我基础比较差  呵呵
      if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    players[i]!=null 为什么或者!players[i].equals("")
    players[i]!=null是判断地址不为空
    !players[i].equals("") 是判断内容不为空
    地址和内容没有包含的关系吗  是2个独立的吗?

    不不,if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    这个是java内存的问题了,比如你new创建一个对象他在内存中就有唯一一个地址,唯一一个hashcode码
    String str1 = new String("123");
    String str2 = new String("123");
    如果==判断就是false因为比较的是地址也就是hashcode是否相同,new两个对象hashcode必然不同,而equals比较 的是他们的值所以是true。
    这个你要找找资料了解一个java内存,不用太深了解,大概就可以了。
    地址是地址,内容是内容。呵呵  谢谢解答 再问下这2个有什么区别呢
     public void initPlayer(String... names) {}
     public void initPlayer(String[] names) {}

    这不就是方法重载么?。
    这不是很基础么?
      

  10.   

    这个是jdk1.5新增的内容,叫变参
      

  11.   

    嗯好像有点明白了 呵呵 谢谢你啊
    还想我你一个问题啊 不好意思我基础比较差  呵呵
      if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    players[i]!=null 为什么或者!players[i].equals("")
    players[i]!=null是判断地址不为空
    !players[i].equals("") 是判断内容不为空
    地址和内容没有包含的关系吗  是2个独立的吗?

    不不,if (players[i] != null || !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
    这个是java内存的问题了,比如你new创建一个对象他在内存中就有唯一一个地址,唯一一个hashcode码
    String str1 = new String("123");
    String str2 = new String("123");
    如果==判断就是false因为比较的是地址也就是hashcode是否相同,new两个对象hashcode必然不同,而equals比较 的是他们的值所以是true。
    这个你要找找资料了解一个java内存,不用太深了解,大概就可以了。
    地址是地址,内容是内容。
    这位前面说的都不错,不过后面的equals说的就有点不对了,其实equals和==都是比较的的是地址,只是String 类型重写了equals所有指向的是值,如果比较的是对象的话,equals和==都是比较的是地址
      

  12.   

    菜鸟说一句:  if (players[i] != null && !players[i].equals("")) {
                    playersCards[i] = new LinkedList<String>();   }
      

  13.   

    这个是java内存的问题了,比如你new创建一个对象他在内存中就有唯一一个地址,唯一一个hashcode码
     String str1 = new String("123");
     String str2 = new String("123");
     如果==判断就是false因为比较的是地址也就是hashcode是否相同,new两个对象hashcode必然不同,而equals比较 的是他们的值所以是true。
      

  14.   

    首先你要明白palyers[i]代表的是一个String类型的指针,它可以为null,也可以存储一个指向String对象的地址,为什么要进行!=null的判断是因为如果palyers[i]是null的话,你调用equals方法会报一个空指针的错误。而equals("")就很好理解了,就是判断当前String对象的内容是否是空字符串了。