03-类与对象--课后作业

本文解析了Java中的特殊特性,包括构造方法的独特性、初始化顺序、静态方法使用实例成员的方法、自动装箱拆箱的过程以及Integer对象比较时的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.请总结一下,这个方法有哪些“与众不同之处”,你能列出几条?

(1).方法名字与类名相同

(2).该方法没有返回值

 2.以下代码为何无法通过编译?哪儿出错了?

 

该类自定义了一个有参数的构造方法,将不再自动调用系统默认构造方法,需要提供一个整型数据才能保证程序正常运行。

3.如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?

执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

具体取决于哪一个初始化方法,还是要看最后执行哪一步。

4.请依据代码的输出结果,自行总结Java字段初始化的规律。

 

Java进行初始化的地方有两个:初始化块和构造函数。Java字段初始化规律系统会按顺序对Java字段进行初始化,如果有好几个方法都对同一个变量进行了初始化,Java会将最后一次的初始化结果赋给该变量。 如果在主函数中创建对象时没有形参时,就会把初始化块值赋给主函数中的变量,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。

5.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

 

 在静态方法中访问类的实例变量需首先进行类的实例化,然后用类名.变量名进行调用。

6.Integer类的装箱和拆箱到底是怎样实现的?

装箱,就是把基本类型用他们相对应的引用类型包装起来,使他们可以具有对象的特质,如可以把int型包装成Integer类的对象,或者把double包装成Double等等。

拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。

在装箱的时候自动调用的是Integer的valueOf(int)方法。而在拆箱的时候自动调用的是Integer的intValue方法。以这两种方法实现拆箱装箱。

7.两对整数明明完全一样,为何一个输出true,一个输出false?

输出结果表明i1和j1指向的是同一个对象,而i2和j2指向的是不同的对象。

在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。上面的代码中i1和ij1的数值为100,因此会直接从cache中取已经存在的对象,所以i1和j1指向的是同一个对象,而i2和j2则是分别指向不同的对象。

 

 

转载于:https://www.cnblogs.com/mqlblog/p/7697685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值