关于Java实例化的一些疑问

这里有两个类

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了一个对象,这又应该怎么解释呢?还是我对实例化的理解本身就出了问题?新手,请指点,谢谢!!

千万里不及你
浏览 689回答 8
8回答

当年话下

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。

侃侃尔雅

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

DIEA

score是对象类型的成员变量

慕田峪9158850

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

慕盖茨4494581

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

汪汪一只猫

defender.score = new Score(5); 等同于 Score tempScore= new Score(5); defender.score=tempScore 构造函数也是函数,允许传值进去。 在这里理解为初始化

慕妹3146593

这是关联类吧。初始化都靠构造函数构造
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java