Object类—“==”对象不可能相等

本文通过一个简单的Java示例介绍了如何实现类的继承,并演示了如何覆盖Object类中的hashCode方法及正确使用equals方法来比较对象。同时展示了如何打印对象默认调用toString方法的过程。

/**
* java.lang.Object类是默认被每一个类继承的
*/
class Student{

private String name;
private int age;
private int gender;

public Student(){

    super();
}

public void setName(String name){
    this.name = name ;
}

public void setAge(int age){
    this.age = age ;
}

public void setGender(int age){
    this.gender = gender;
}

public String getName(){
    return name ;
}

public int getAge(){
    return age ;
}

public int getGender(){
    return gender;
}

/**
*重写Object的equals方法时,最好重要hash值
*/
public int hashCode(){
return 1 ;
}
}
class ObjectDemo{

public static void main(String []args){

    Student s = new Student();
    Student s1 = new Student();
    //直接打印对象时默认的在调用父类继承下来的toString
    System.out.println(s);
    System.out.println(s1);
    //判断对象是否相等不能使用“==”,因为“==”判断的是对象地址,二个对象的地址是永远不可能相同的
  System.out.println(s==s1);
  int hashcode = s.hashCode();
  System.out.println(hashcode);
  //判断两个对象是否相等一般使用equals方法
  boolean isEquals = s.equals(s1);
  System.out.println(isEquals);

 System.out.println("学生和学生1是否相等: "+s.equals(s1));
}

}

### 如何在 STM32CubeMX 中通过 USB 实现 IAP 快速更新 #### 配置USB设备模式为DFU类 为了使STM32能够通过USB接口进行固件更新,在STM32CubeMX中的配置至关重要。当设置USB设备模式时,应选择Download Firmware Update Class (DFU)[^1]。 #### 使用CubeMX版本及IDE工具链 确保使用的开发环境兼容所选项目需求。推荐使用CubeMX V6.1.1以及Keil MDK V5.26作为主要集成开发环境[^3]。当然也可以选用其他支持STM32CubeMX插件的IDE如CLion, VSCode等来进行编程工作[^4]。 #### 编程与烧录过程 完成上述硬件抽象层(HAL)库初始化之后,需编写相应的应用程序代码并编译成`.bin`文件格式。对于IAP(In Application Programming),即在线编程而言,该二进制映像应当被放置于特定起始地址处——例如0x08007000,并借助ST官方提供的STM32CubeProgrammer软件将其下载至目标板上[^5]。 #### 关键技术点解析 理解.map文件结构有助于合理规划存储空间;掌握中断向量表机制可以保障Bootloader顺利切换至用户应用(App)执行流;熟悉Flash分区策略则能有效防止数据冲突或覆盖现象发生[^2]。 ```cpp // 示例:简单的跳转函数用于从BootLoader进入Application void JumpToApplication(uint32_t applicationAddress){ typedef void (*pFunction)(void); pFunction jump_to_app; /* Disable all interrupts */ __disable_irq(); // Remap RAM to address 0x0000_0000 if necessary SCB->VTOR = applicationAddress; // Set vector table offset register with new base address of interrupt vectors jump_to_app = (pFunction)*(uint32_t*)(applicationAddress + 4); // Get reset handler from the app's start location ((void(*)(void))jump_to_app)(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值