不明白一下代码的 for (car car : carForRent) 为什么是 car car : carForRent

来源:12-1 综合练习

慕丝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()+"吨");

                }

            }


写回答 关注

2回答

  • 黯然丶稻草人
    2016-10-25 23:40:51
    已采纳

     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()+"人"); 

                    }

    }实现的效果是一样的。

    慕丝7101...

    非常感谢!

    2016-10-26 10:48:43

    共 1 条回复 >

  • 黑马4230376
    2016-10-25 23:50:57

    楼上正解

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530653 学习 · 6091 问题

查看课程

相似问题