A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王琪 中级黑马   /  2014-6-7 21:28  /  1362 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王琪 于 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
























7 个回复

倒序浏览
是我写错了吗?
回复 使用道具 举报
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,表示多数组的元素进行动态初始化。
仔细看看
回复 使用道具 举报
哥们高级for循环只能获取不能改变数组或集合的,至少像你那样写是没用的。 x=new Person(new String("wangqi"+i++),(30+i));
和数组没有关系,数组中的元素仍为初始值。x并不是代表数组中的元素。
回复 使用道具 举报
高级for还是用来遍历输出吧,普通for控制角标,操作更改值比较好
回复 使用道具 举报
谭荣强 发表于 2014-6-8 22:07
person=new Person[3];没有初始化,默认的初始化里面的三个元素为null
x=new Person(new String("wangqi"+ ...

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

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

嗯谢谢你,怪我了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马