当前位置: 首页 > news >正文

10.13课后作业 - GENGAR

public class Test {
public static void main(String[] args) {
Foo obj1=new Foo();
Foo obj2=new Foo();
System.out.println(obj1obj2);//?
}
}
class Foo{
int value=100;
}
在 Java 中,
用于比较对象的引用地址。这里obj1和obj2是通过两次new Foo()创建的对象,它们在内存中是两个独立的实例,具有不同的引用地址。因此,obj1==obj2的结果为false。
2.

class MyTestClass {
public int Value;
public boolean equals(MyTestClass obj) {
return obj.Value == this.Value;
}
public MyTestClass(int initValue) {
Value = initValue;
}
}
该方法(构造方法)的 “与众不同之处”
名称特殊:方法名与类名(MyTestClass)完全相同,这是构造方法的标志性特征。
无返回值声明:不同于普通方法需要声明返回值类型(如void、int等),构造方法没有返回值声明。
作用特殊:主要用于在创建对象时初始化对象的状态(如给Value字段赋值),是对象创建过程中自动调用的特殊方法。
调用时机特殊:在使用new关键字创建对象时自动调用,普通方法需通过对象显式调用。
3.

以下代码为何无法通过编译?
public class Test {
public static void main(String[] args) {
Foo obj1=new Foo();
}
}
class Foo{
int value;
public Foo(int initValue) {
value=initValue;
}
}
错误点:Foo类是非静态内部类,非静态内部类依赖外部类对象存在,不能在静态方法(如main方法)中直接创建其对象;且Foo类只定义了带参数的构造器public Foo(int initValue),创建对象时未传入参数。
解决方法(二选一):
方法一:将Foo类改为静态内部类,即在class Foo前添加static关键字,变为static class Foo,同时创建对象时传入参数,如Foo obj1=new Foo(10);。
方法二:将Foo类独立为一个外部类,不再作为Test类的内部类,然后在Test类中正常导入并创建带参数的Foo对象。
4.

Java字块初始化规律:默认初始化:字段在创建对象时,会先进行默认初始化(如int类型默认值为0)。
实例初始化块:如果类中定义了实例初始化块({}包裹的代码块),会在默认初始化后、构造器执行前执行,用于对字段进行初始化。
构造器初始化:构造器是最后执行的初始化环节,会覆盖之前的初始化结果(如上述有参构造器中对field的赋值)。
简单来说,初始化顺序为:默认初始化 → 实例初始化块 → 构造器,后续环节的初始化操作会覆盖之前的结果。

在静态方法中访问类的实例成员
public class Demo {
// 实例字段
private int instanceField = 10;

// 实例方法
public void instanceMethod() {System.out.println("这是实例方法");
}// 静态方法
public static void staticMethod() {// 先创建Demo类的实例对象Demo demo = new Demo();// 通过实例对象访问实例字段System.out.println("访问实例字段:" + demo.instanceField);// 通过实例对象访问实例方法demo.instanceMethod();
}public static void main(String[] args) {// 调用静态方法验证staticMethod();
}

}
静态方法属于类,在类加载时就存在,此时可能还没有类的实例对象;而实例成员属于对象,必须通过具体的对象来访问。
因此,在静态方法中先创建类的实例对象,就能借助该对象来访问实例字段和实例方法了。

为何一个输出true,一个输出false
public static void main(String[] args){
Integer i1=100;
Integer j1=100;
System.out.println(i1==j1); //true

Integer i2=129;
Integer j2=129;
System.out.println(i2==j2); //false

}
Java 对Integer类型在[-128, 127]范围内的数值进行了缓存。当创建该范围内的Integer对象时,会直接从缓存中获取已有对象。
对于i1=100和j1=100,因为 100 在[-128, 127]范围内,所以i1和j1引用的是同一个缓存对象,使用比较(比较对象引用)时结果为true。
对于i2=129和j2=129,129 超出了[-128, 127]的缓存范围,此时会分别创建新的Integer对象,i2和j2引用的是不同的对象,所以
比较结果为false。

http://www.hskmm.com/?act=detail&tid=32991

相关文章:

  • 山海鲸可视化可以导入哪些常用的3D模型?
  • 2025 年光谱仪厂家最新推荐排行榜:便携式 / 有色金属 / X 射线荧光等多类型设备优质厂家深度解析
  • 2025 年分析仪生产厂家最新推荐榜单:覆盖便携式、有色金属、荧光等多类分析仪,帮企业选靠谱优质品牌
  • Kafka、RabbitMQ、RocketMQ、ZeroMQ等 消息中间件 介绍和对比
  • 猪脚与猪脚饭与猪脚饭之店
  • 2025年10月中国高端医美机构推荐榜单:安全认证与专家资质全解析
  • 读书笔记:什么时候该用B*树索引?一个接地气的解读
  • 2025年工作服厂家权威推荐榜:防静电/劳保/国网/餐厅/工厂/电工/防酸碱/电力/车间/航空/员工工作服,文化衫/T恤/POLO衫/冲锋衣全品类精选
  • 消息推送策略:如何在营销与用户体验间找到最佳平衡点
  • ONLYOFFICE Docs 9.1正式发布:更强大的PDF编辑器、更快的公式性能、超500项优化!
  • 全球最佳承包商管理平台深度解析
  • HTTP 和 TCP 的关系与区别
  • cucumber7+junit5
  • 剪映VIP全功能永久解锁后,我的剪辑效率直接翻倍!
  • 零碳园区建设指南:MyEMS 如何用数字化破解能耗与碳排放协同管理难题?
  • 误删 Stash 后的数据恢复实践
  • mysql开启binlog日志,完全配置指南
  • 2025年10月固定资产管理系统推荐榜单:基于全生命周期功能对比与行业适配度评测
  • Linux MegaCli RAID 控制管理工具详解
  • 2025年10月重庆保洁公司推荐对比榜:用数据还原真实服务能力
  • 2025年10月重庆保洁公司推荐排名:聚焦服务细节与合规风险的避坑手册
  • 2025 房屋改造公司最新推荐榜:聚焦老房 / 局部 / 小户型需求的口碑深度测评,花小钱住好家必看
  • 2025年10月床垫品牌推荐榜:十强对比与中立评测助你安心选购
  • uni-app x商城,商品列表组件封装以及使用
  • 深入解析:【Proteus8.17仿真】 STM32仿真 0.96OLED 屏幕显示ds1302实时时间
  • 2025年10月床垫品牌推荐榜:围绕环保认证与试睡政策的系统化评析
  • 贪心策略总结
  • 2025年10月上海装修公司推荐榜:极家家居设计标准与施工节点全维度对比
  • 完整教程:在鸿蒙NEXT中使用WebSocket实现实时网络通信
  • Atcoder Regular Contest 做题记录