美文网首页
Chapter 8 对象集合

Chapter 8 对象集合

作者: 糖果遇见猫 | 来源:发表于2016-10-31 16:46 被阅读0次

8.1 顺序容器

容器是现代程序设计非常基础而重要的手段。

所谓容器,就是“放东西的东西”。数组可以看作是一种容器,但是数组的元素个数一旦确定就无法改变,这在实际使用中是很大的不足。一般意义上的容器,是指具有自动增长容量能力的存放数据的一种数据结构。在面向对象语言中,这种数据结构本身表达为一个对象。所以才有“放东西的东西”的说法。

Java具有丰富的容器,Java的容器具有丰富的功能和良好的性能。熟悉并能充分有效地利用好容器,是现代程序设计的基本能力。

我们首先学习的是顺序容器,即放进容器中的对象是按照指定的顺序(放的顺序)排列起来的,而且允许具有相同值的多个对象存在。

泛型类 ArrayList<>

ArrayList<String> notes = new ArrayList<String>();

ArrayList是系统类库中的一个容器类。

  • 容器类有两个类型:
  • 容器的类型
  • 元素的类型

记事本源码如下:

package notebook;

import java.util.ArrayList;

/**
 * Created by WZZ on 10/31/2016.
 */
public class Notebook {
    private ArrayList<String> notes = new ArrayList<String>();

    public void add(String s){
        notes.add(s);
    }
    public void add(String s, int location){
        notes.add(location, s);
    }

    public int getSize(){
        return notes.size();
    }
    public String getNote(int index){
        return notes.get(index);
    }
    public void removeNote(int index){
        notes.remove(index);
    }
    public String[] list(){
        String[] a = new String[notes.size()];
        notes.toArray(a);
        return a;
    }

    public static void main(String[] args) {
        Notebook nb = new Notebook();
        nb.add("First");
        nb.add("Second");
        nb.add("Third", 1);
        System.out.println(nb.getSize());
        System.out.println(nb.getNote(0));
        System.out.println(nb.getNote(1));
        nb.removeNote(1);

        String[] a = nb.list();
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }
}

8.1 对象数组

当数组的元素的类型是类的时候,数组的每一个元素其实只是对象的管理者而不是对象本身。因此,仅仅创建数组并没有创建其中的每一个对象!

String[] a = new String[10];
  • 当我们创建了一个String数组后,String数组中的每一个元素都是指向String类对象的管理者而已。默认为"null".
  • 对象数组中的每个元素都是对象的管理者而非对象本身
Paste_Image.png

举例:

    public static void main(String[] args) {
        int[] ia = new int[10];
        String[] a = new String[10];
        for (int i = 0; i < a.length; i++) {
            a[i] = ""+i;
        }
//        System.out.println(ia[0]+2);
//        System.out.println(a[0]+"a");
        System.out.println(a[0].length());
        String s = null;
        System.out.println(s.length());
    }

输出结果;

1
Exception in thread "main" java.lang.NullPointerException
    at notebook.Notebook.main(Notebook.java:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

相关文章

网友评论

      本文标题:Chapter 8 对象集合

      本文链接:https://www.haomeiwen.com/subject/tpkputtx.html