1.Java中for-each循环为何能放入对象Computer com,不都是放 数据类型 变量(int x) 的吗?
2.打印结果不应该是(一句我打印了,一句cpu吗)呈现四对,8行。为何是我打印了,4行,然后才是CPU4行?求解
package com.newknowledge.object;
public class Computer {
//成员变量
private String cpu = "Intel";//处理器
private String memory;//内存
private String keyBoard;//键盘
private String mainBoard;//主板
//构造方法
public Computer(){
System.out.println("------Computer()-----");
cpu = "AMD";
}
public Computer(String cpu,String memory,String keyBoard,String mainBoard){
System.out.println("我打印了");
this.cpu = cpu;
this.mainBoard = mainBoard;
this.keyBoard = keyBoard;
this.memory = memory;
}
public void show(){
System.out.println("cpu="+cpu+",memory="+memory+
",mainBoard="+mainBoard+",keyBoard"+keyBoard);
}
public static void main(String[] args) {
}
}
package com.newknowledge.object;
import java.util.Arrays;
public class TestArray {
public static void main(String[] args){
Computer[] arr = new Computer[4];
arr[0] = new Computer("AM","2G","达尔优","七彩虹");
arr[1] = new Computer("AM","2G","达尔优","七彩虹");
arr[2] = new Computer("AM","2G","达尔优","七彩虹");
arr[3] = new Computer("AM","2G","达尔优","七彩虹");
for(Computer com:arr){
com.show();
}
}
}
1.for-each帮JAVA用户直接忽略下标的声明,用户可以直接遍历数组或者列表中的对象,也就是Computer,不需要考虑下标去声明int i
2.“我打印了”是在构造函数中,每次创建对象也就是new的时候就会打印。先创建了四个对象所以会先打印四次“我打印了”,然后在foreach中每个对象访问自己的show方法,打印四次cpu
首先,怎么可能会这么大方专门为int搞一个循环。所有实现了java.lang.Iterable接口的对象都可以使用 for 语句进行迭代。
for-each的语句格式:for(元素类型type 元素变量value :遍历对象obj){执行内容}
然后,”我打印了“这句话是定义在构造方法里的,也就是你在构造它的时候就会输出,你是先构造了四个Computer在对所有Computer执行show方法
第二个问题,先打印出来“我打印了”,是在你 new Computer 对象的时候就已经打印了,而不是调用 show 方法时打印的
1、你可以把"System.out.println("我打印了");"这行代码改成"System.out.print("我打印了");"
2、然后把show()放入Computer()中
3、最后把主方法中的com.show()去掉就没问题了