调用的info方法不知道是怎么运行的,stus[i].state,stus[i].score是怎么被调出来的


public class ExerTest {
      public static void main(String[] args) {
          //声明student类型的数组
          Student[] stus = new Student[20];
          for(int i = 0;i < stus.length;i++) {
              //给数组元素赋值
              stus[i] = new Student();
              //给Student对象的属性赋值
              stus[i].number = (i + 1);
              //年级[1-6];
              stus[i].state = (int)(Math.random()*(6-1+1)+1);
              //成绩[0-100];
              stus[i].score = (int)(Math.random()*(100-0+1));
          }
          //遍历学生数组
      for(int i = 0;i < stus.length;i++) {
//              System.out.println(stus[i].number + "\t"
//                       + stus[i].state + "\t" + stus[i].score + "\t");
          System.out.println(stus[i].info());
          }
          System.out.println("*******************");
          //问题一:打印三年级(state值为3)的学生信息。
          for(int i = 0;i < stus.length;i++) {
              if(stus[i].state == 3) {
                  System.out.println(stus[i].info());
              }
          }
class Student{
    int number;
    int state;
    int score;
    //显示学生信息的方法
    public String info() {
        return"学号" + number +",年级"+ state + ",成绩" + score;
    } 
}

1、 String info()方法是Student类中的有返回值的方法,返回相关学生信息,调用info的地方就能获取到返回的字符串,通过System.out.println输出。
2、stus[i] = new Student();stus[i]表示每一个学生对象,Student类中包含number、status、score属性,通过对象可以直接获取当前类Student中的属性。

就是stus数组里每个都是student对象,循环调用自己的info方法,输出自己的信息

数组stus里面的每个元素(即stus[i])都是一个Student类的对象,对象里面有info方法,类似于下面这样调用:

Student stud = new Student();
stud.info();

1.首先for循环每次new Student会产生一个新对象,循环20次会产生20个不同的对象。
2.当stus.[i]会取出每一个对象,而每一个对象的info方法就是拼接学号、成绩等信息,其实“学号”+number+“,年级”+state就等于,this.state,this.number,this就是stus[i]这个对象,所以自然能取到。

-

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632