数组之对象

数组可以放对象数据 (类是引用型数据)
看代码如何实现:首先要创建类

package com.qf.demo2;

public class Person {

    private String name;
    private int age;
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public Person() {
        super();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
    
    
}

main中要明白如何将对象存进数组中,其实也不复杂,就是像基本数据类型那样存放就行了.另外,修改数据要学会调用set方法

package com.qf.demo2;
public class Test6 {
    public static void main(String[] args) {
        Person[] persons = new Person[3];
        persons[0] = new Person("小二狗", 2);
        persons[1] = new Person("三毛", 5);
        persons[2] = new Person("四没毛病", 9);
        int sum= 0;
        for (Person person : persons) {
            sum+= person.getAge();
        }
        System.out.println("年龄和"+sum);
    // 查看 数组中是否 有叫三毛的 如果有叫三毛的  改名成 四毛
        for (Person person : persons) {
            if(person.getName().equals("三毛")){
                person.setName("四毛");
            }
        }
        for (Person person : persons) {
//在这里,如果person为null  直接输出person对象就是为null  但是输出person.属性  或者方法的话  就会报空指针异常.
            System.out.println(person);
        }
    }
}

疑惑:一直在想,如果person对象时null,在直接输出system.out.print(person)时,就会自动调用person.toString()方法,方法中有返回属性什么的,也就会用到person当前对象,为什么不报空指针异常,而是会输出null.

这是因为:
1.一个对象使用. 来显示的调用他的tostring之前会先判断是不是null 如果是就不会执行tostring‘方法里面的东西了 而是报空指针异常.

2.但是如果直接输出对象的话 ,即是system.out.print(person)(即会先判断是否为null,非null才会调用toString()方法) 要考虑到System.out.println()源码.

3.Person person = null;
null是存在栈里的 存在person所命名的那个地址里 和基本数据类型的存放相似
详情看http://www.cnblogs.com/wuyun-blog/p/5768876.html

你可能感兴趣的:(数组之对象)