关于数组初始化的问题

关于数组初始化的问题

老师你好,我们是通过构造方法参数列表中设置Studen数组参数来获取学生信息的是吧,然后通过this.setMyStudents(myStudents);对set方法中的Student [ ] myStudents参数进行赋值操作对吧,那么问题1

假设我们的Student[] myStudents并未进行相应的初始化,那么他是如何能被赋值的呢?

问题2

get方法获取数组的值来自于set方法,如果问题一set无法被赋值,那么get方法是不是也就没有办法完成取值数组了呢

问题三

通过我的反推,以及老师的视频显然,即使数组没有被初始化,把初始化语句放在get方法中依然可以正常完成set方法中数组的赋值,那么程序的运行顺序显然也是先经过set数组被赋值,然后才可以被get取值把,那么是不是就意味着我的问题1是错误的,那么我的思考问题出在了哪里呢请老师解决,谢谢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕阿莹 2019-06-23 12:04:10

1、同学你好,关于:

假设我们的Student[] myStudents数组没有被初始化,那么构造方法怎么给在set方法中的此数组进行传值呢?

首先:给这个数组赋值时,这个myStudents可以没有被初始化的。只是,假如我们需要用到该数组进行调用方法,输出,等等时,需要这个myStudents初始化完成。

因为本题中,没有用到构造函数以及set方法给这个数组赋值,而是在addStudent方法中需要获取数组,并给数组中的元素赋值,所以,这里老师在get方法中给数组初始化了,意味着,只要你想要用这个myStudents数组,我肯定给你初始化好了。

2、初始化和赋值有些区别。

一般,我们说初始化是指,给它new了一个对象。比如new Student[200]。

这里是给它声明了一个可以存放200个Student的一个空间,但是里边并没有放学生呢。也就是这个数组中是没有元素的。

而set中的赋值,是指吧传尽量的数组赋值给myStudents。当然,传进来的有肯能是一个和新new的数组,也有可能是已经存放好学生的数组。

而get中的初始化this.myStudents = new Student[200]; 是为了防止调用数组时,这个myStudent是null,而造成空指针异常。

如果我的回答解决了你的问题,请采纳,祝学习愉快


吃吃吃鱼的猫 2019-06-22 18:18:18

同学你好,

1.在调用setMyStudents方法时,为myStudents数组完成了赋值操作哦~

如下图所示:

this.myStudents=myStudents;即是对数组myStudents进行赋值。

http://img1.sycdn.imooc.com//climg/5d0dfcbb00015aa411220150.jpg

2.当调用get方法时,先判断是否使用了set方法为成员变量myStudents赋值,如果没有的话,那么在get方法中初始化myStudents数组。

http://img1.sycdn.imooc.com//climg/5d0dff4c0001514309940226.jpg

3.首先理解

this.myStudents=要赋的值;

就是为成员变量myStudents赋值。

set方法中直接使用此语句为myStudents赋值。

get方法中先进行数组是否为空的判断,如果数组为空的话,再初始化成员变量myStudents。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 n_nmingzibuhaoqi #1
    this mystudents=new Students[200]这步不也就是创建了吗,初始化不是赋值吗
    2019-06-22 20:33:23
  • 提问者 n_nmingzibuhaoqi #2
    this mystudents=new Students[200]这步不也就是创建了吗,初始化不是赋值吗
    2019-06-22 20:33:24
提问者 n_nmingzibuhaoqi 2019-06-22 17:42:14

问题一修整为:

假设我们的Student[] myStudents数组没有被初始化,那么构造方法怎么给在set方法中的此数组进行传值呢?


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师