关于3-7课程中返回数组的方法的问题

关于3-7课程中返回数组的方法的问题

public class Animal {
 
   public int[] feng() {
    int[] i=new int[10];
    return i;
   }
   public static void main(String[] args) {
 
    Animal a=new Animal();
    a.feng()=new int[20];
    a.feng()[0]=20;
   }
}

我想知道a.feng()=new int[20];为什么会显示左边不是变量,但是a.feng()[0]=20;就正常

正在回答

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

1回答

因为a.feng()方法中已经通过new int[10]初始化了一个数组,并且作为返回值传出去了,那么这个时候就不能再new int[20]赋值给它了。而a.feng()[0]表示数组下标为0的元素,a.feng()[0]=20;是为下标是0的数组元素赋值,这是可以完成的。祝学习愉快~

  • 暖阳洋 提问者 #1
    但是老师,如果不是调用方法a.feng()=new int[20];这种形式,而是一般的比如: int[] a=new int[20]; a=new int[30];这种是不会报错的啊
    2018-07-18 16:02:02
  • imoocLovers 回复 提问者 暖阳洋 #2
    赋值云算法的执行顺序是从右到左,等号右边执行完进行赋值的时候,发现等号左边不是一个变量或者一个引用,所以直接就报错了。你这样写就不会有问题了,int b[] = a.feng(); b = new int[20]; 祝学习愉快~
    2018-07-18 16:39:44
  • 暖阳洋 提问者 回复 imoocLovers #3
    老师,a.feng()返回的不是一个数组的引用么?他表述一个值?
    2018-07-18 19:06:42
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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