慕丝7101010
2016-10-25 23:12
不明白一下代码的 for (car car : carForRent) 为什么是 car car : carForRent
car [ ] carForRent={new passengerCar(1,"奥迪A4",500,4),new passengerCar(2,"马自达6",400,4),
new pickUp(3,"皮卡雪6",450,4,2),new passengerCar(4," 金龙 ",800,20),
new trunk(5,"松花江",400,4),new trunk(6,"依维柯",1000,20)};
System.out.println("序号"+"\t"+"汽车名称"+"\t"+"租金"+"\t"+"\t"+"容量");
//打印输出可供租的汽车清单
for (car car : carForRent) {
//用instanceOf来测试左边类型的对象是否是右边类型的实例,返回值为Boolean
if(car instanceof passengerCar){
//若它是客车类型的实例,则打印出客车应该有的属性值,这里注意强转,否则不会出现
//passengerCar类的CarCapacity属性
System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
+"/天"+"\t"+"载人:"+((passengerCar)car).getCarCapacity()+"人");
}
if(car instanceof pickUp){
System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
+"/天"+"\t"+"载人:"+((pickUp)car).getCarCapacity()+"人"+"\t"
+"载货:"+((pickUp)car).getCarCarryCargo()+"吨");
}
if(car instanceof trunk){
System.out.println(car.getCarNumber()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
+"/天"+"\t"+"载货:"+((trunk)car).getCarCarryCargo()+"吨");
}
}
for (Car car : carForRent)这是另一种形式的for循环,叫foreach,也叫遍历式循环
语法是for(类型 变量名 : 数组名),就是每次按顺序循环的从数组中取值,以你自己定义的变量名car保存,也就是上面写到的第二个car,第一个Car代表的是这个变量是车这个类型的,在car这个变量中实际上保存的是一个车类型的对象,这个对象就有载货量、载客量、名字、租金这些属性,你就可以在这个循环的过程中每次取出一个对象来操作,打印或者取得你想要的属性值,它实际上和一般的for循环
for(int i=0;i=carForRent.length;i++){
if(carForRent[i] instanceof passengerCar){
//若它是客车类型的实例,则打印出客车应该有的属性值,这里注意强转,否则不会出现
//passengerCar类的CarCapacity属性
System.out.println(carForRent[i].getCarNumber()+"\t"+carForRent[i].getCarName()+"\t"+
carForRent[i].getCarRentMoney()
+"/天"+"\t"+"载人:"+((passengerCar)carForRent[i]).getCarCapacity()+"人");
}
}实现的效果是一样的。
楼上正解
Java入门第二季 升级版
530653 学习 · 6091 问题
相似问题