数组可以放对象数据 (类是引用型数据)
看代码如何实现:首先要创建类
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