当前位置: 首页 > 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.zskr.cn/news/22929.html

相关文章:

  • 2025 年分析仪生产厂家最新推荐榜单:覆盖便携式、有色金属、荧光等多类分析仪,帮企业选靠谱优质品牌
  • HTTP 和 TCP 的关系与区别
  • 消息推送策略:如何在营销与用户体验间找到最佳平衡点
  • mysql开启binlog日志,完全配置指南
  • 2025年10月重庆保洁公司推荐对比榜:用数据还原真实服务能力
  • 2025年10月床垫品牌推荐榜:十强对比与中立评测助你安心选购
  • Linux StorCLI RAID 控制管理工具详解
  • ​​示波器探头的正确选择与使用指南​
  • C# Avalonia 16- Animation- KeySplineAnimation
  • windows 11 或 Windows 10 注册表修改企业版为专业版
  • C# Avalonia 16- Animation- ExpandElement2
  • 问题一
  • 左右互搏--- 一种高效的CLI工作方法实践
  • 图论初步 - L
  • 以江协科技STM32入门教程的方式打开FreeRTOS——STM32C8T6如何移植FreeRTOS - 教程
  • 实训题
  • GoodSync 2025年10月17日
  • 书本p66实训题第2题
  • springboot 上传图片到服务器之后,前段不能正确加载图片问题
  • 深入解析:云原生时代的数据流高速公路:深入解剖Apache Pulsar的架构设计哲学
  • DeepResearch代码浅析
  • 2025年10月中国专精特新申报服务机构推荐榜:五强实测
  • 静态初始化块的执行顺序
  • 10.16 CSP-S 模拟赛总结
  • 远程无钥匙进入(PKE)技术:便利与安全的完美融合
  • 灵动岛iPhone状态栏获得高度不对 iOS iPhone14pro iPhone14pro max状态栏获得高度不对
  • 别被波形“骗” 了!差分探头与无源探头测量不一致的 5 大关键因素
  • 2025年信息流代运营服务商权威推荐榜单:专业投放策略与效果优化服务口碑之选
  • 【Prompt学习技能树地图】单一思维链优化-自我一致性提示工程原理、实践与代码实现 - 教程
  • 基于MATLAB的倒立摆控制实现方案