为了账号安全,请及时绑定邮箱和手机立即绑定

关于Java实例化的一些疑问

关于Java实例化的一些疑问

千万里不及你 2018-12-07 05:49:06
这里有两个类 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。

查看完整回答
反对 回复 2018-12-16
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

这算啥问题,不都是这样用的吗,那个变量的类型就是Score,defender.score不就是Score score吗,Score score = new Score(5);没问题呀

查看完整回答
反对 回复 2018-12-16
?
DIEA

TA贡献1820条经验 获得超2个赞

score是对象类型的成员变量

查看完整回答
反对 回复 2018-12-16
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

本身就是一个对象,只是作为Driver的一个成员而已

查看完整回答
反对 回复 2018-12-16
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

第二句的意思是new了一个Score(5)的对象赋值给defender.score这个变量。

查看完整回答
反对 回复 2018-12-16
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

defender.score = new Score(5);
等同于
Score tempScore= new Score(5);
defender.score=tempScore

构造函数也是函数,允许传值进去。

在这里理解为初始化

查看完整回答
反对 回复 2018-12-16
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

这是关联类吧。初始化都靠构造函数构造

查看完整回答
反对 回复 2018-12-16
  • 8 回答
  • 0 关注
  • 687 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信