这里有两个类
1 class Driver
2 {
3 //构造方法
4 public Driver(){}
5
6 //成员变量
7 Score score;
8 }
和
1 class Score
2 {
3 int score;
4
5 public Score(int score)
6 {
7 this.score=score;
8 }
9 }
对于实例化对象Driver defender =new Driver();等号左边是一个对象,等号右边new了一个对象,整句就是new了一个叫做defender的对象。这是我的理解。
但是对于defender.score = new Score(5);这一句代码,等号左边是一个变量,等号右边new了一个对象,这又应该怎么解释呢?还是我对实例化的理解本身就出了问题?新手,请指点,谢谢!!
8 回答
当年话下
TA贡献1890条经验 获得超9个赞
Driver defender =new Driver();
等号左边 Driver defender 是告诉jvm,我现在需要一个driver类型的变量,该变量的名字叫defender。(jvm会在栈中创建一个变量,此变量是指向Driver 类型的实例的引用)
等号右边 new Driver(),告诉jvm帮我创建一个Driver类型的变量,此变量实际会在堆内存中新增,
整句代码的意思就是 让jvm在堆内存中初始化一个Driver的实例并将此实例的引用传给栈内存中的defender 变量。
defender.score = new Score(5)
这句和上边一样,jvm会先初始化一个Source类型的实例,并将此实例的引用赋值给defender的属性score。
侃侃尔雅
TA贡献1801条经验 获得超16个赞
这算啥问题,不都是这样用的吗,那个变量的类型就是Score,defender.score不就是Score score吗,Score score = new Score(5);没问题呀
汪汪一只猫
TA贡献1898条经验 获得超8个赞
defender.score = new Score(5); 等同于 Score tempScore= new Score(5); defender.score=tempScore
构造函数也是函数,允许传值进去。
在这里理解为初始化
添加回答
举报
0/150
提交
取消