黑马程序员技术交流社区

标题: 类数组的问题 [打印本页]

作者: 王琪    时间: 2014-6-7 21:28
标题: 类数组的问题
本帖最后由 王琪 于 2014-6-8 08:43 编辑
  1. package org.demo.java;
  2. import java.util.*;
  3. class Person{
  4.         private String name;
  5.         private int age;
  6.         public Person(){};
  7.         public Person(String name,int age){
  8.                 this.name=name;
  9.                 this.age=age;
  10.         }
  11.         public void setname(String name){
  12.                 this.name=name;
  13.         }
  14.         public void setage(int age){
  15.                 this.age=age;
  16.         }
  17.         public String getname(){
  18.                 return this.name;
  19.         }
  20.         public int getage(){
  21.                 return this.age;
  22.         }
  23.         public boolean compare(Person per){
  24.                 if(this==per)return true;
  25.                 else if(this.name.equals(per.name) && this.age==per.age)return true;
  26.                 else return false;
  27.         }
  28.         public String toString(){
  29.                 return"姓名"+name+"年龄"+age;
  30.         }
  31. }
复制代码
public class text {
        public static void main(String[]args){
                Person person[]=null;
                person=new Person[3];
                int i=0;
                for(Person x : person){
                        x=new Person(new String("wangqi"+i++),(30+i));
                }
                for(Person a:person){
                        System.out.println(a);               
                }
               
  1. for(i=0;i<person.length;i++){
  2.                         person[i]=new Person(new String("wangqi"+i),(30+i));
  3.                 }               
  4.                 for(Person a:person){
  5.                         System.out.println(a);               
  6.                 }        
复制代码


        }
}

结果为什么不用?


null
null
null
姓名wangqi0年龄31
姓名wangqi1年龄32
姓名wangqi2年龄33

























作者: 王琪    时间: 2014-6-8 21:09
是我写错了吗?
作者: 谭荣强    时间: 2014-6-8 22:07
person=new Person[3];没有初始化,默认的初始化里面的三个元素为null
x=new Person(new String("wangqi"+i++),(30+i));这是取出元素
相当于null= new Person(new String("wangqi"+i++),(30+i));
两个for不一样,第一for表示将三个null取出,并赋值(没用)。第二个for,表示多数组的元素进行动态初始化。
仔细看看
作者: java木    时间: 2014-6-8 22:15
哥们高级for循环只能获取不能改变数组或集合的,至少像你那样写是没用的。 x=new Person(new String("wangqi"+i++),(30+i));
和数组没有关系,数组中的元素仍为初始值。x并不是代表数组中的元素。
作者: 四顾行者    时间: 2014-6-8 23:39
高级for还是用来遍历输出吧,普通for控制角标,操作更改值比较好
作者: 王琪    时间: 2014-6-9 16:16
谭荣强 发表于 2014-6-8 22:07
person=new Person[3];没有初始化,默认的初始化里面的三个元素为null
x=new Person(new String("wangqi"+ ...

哦我明白了谢谢您。昨天寝室断网了,没来的回复大家,谢谢
作者: 王琪    时间: 2014-6-9 16:17
java木 发表于 2014-6-8 22:15
哥们高级for循环只能获取不能改变数组或集合的,至少像你那样写是没用的。 x=new Person(new String("wangq ...

哦我明白了的确高级for只能取值不能改变值。昨天寝室断网了,没来的回复大家,谢谢
作者: 王琪    时间: 2014-6-9 16:18
四顾行者 发表于 2014-6-8 23:39
高级for还是用来遍历输出吧,普通for控制角标,操作更改值比较好

嗯谢谢你,怪我了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2