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

Object

更多内容请看我的个人网站

toString

原本作用

  • 返回对象的字符串表示形式
  • 包名类名+@+对象地址值
System.out.println(obj);

也会打印这样的地址值
源码:

public void println(Object x) {  String s = String.valueOf(x);  if (getClass() == PrintStream.class) {  // need to apply String.valueOf again since first invocation  // might return null        writeln(String.valueOf(s));  } else {  synchronized (this) {  print(s);  newLine();  }  }  
}public static String valueOf(Object obj) {  return (obj == null) ? "null" : obj.toString();  
}

如果不是null,就会toString

一般重写toString

  • 如果我们打印一个对象的属性值的话,那么重写toString()就行了,在重写方法时,把对象的属性拼接

equals

public static void main(String[] args) {  Student s1 = new Student();  Student s2 = new Student();  boolean equals = s1.equals(s2);  System.out.println(equals);  
}//false

重写equals后运行结果为true

@Override  
public boolean equals(Object o) {  if (o == null || getClass() != o.getClass()) return false;  Student student = (Student) o;  return age == student.age && Objects.equals(name, student.name);  
}  @Override  
public int hashCode() {  return Objects.hash(name, age);  
}
public static void main(String[] args) {  String s = "abc";  StringBuilder sb = new StringBuilder("abc");  System.out.println(s.equals(sb));  System.out.println(sb.equals(s));  //运行结果  //false false  
}

第一个中调用对象是String,先看是不是同一个对象,如果不是字符串,直接返回false
第二个中调用对象时StringBuilder,StringBuilder没有重写equals方法,Object中使用的是==比较两个对象的地址值

clone

重写对象的clone方法

方法会在底层帮我们创建一个对象,并把原对象的数据拷贝过去
细节:

  1. 重写Object中的clone方法
  2. 让Javabean类实现Cloneable
  3. 创建原对象并调用clone就可以了

Objects

equals

可以规避调用者为null的判断

Student s1=null;  
Student s2=new Student();  boolean equals = Objects.equals(s1, s2);  
System.out.println(equals);//false

isNull

判断对象是否为null,如果为null,返回true

Student s3 = null;  
Student s4 = new Student();  
System.out.println(Objects.isNull(s3));//true  
System.out.println(Objects.isNull(s4));//false

nonNull

System.out.println(Objects.nonNull(s3));//false  
System.out.println(Objects.nonNull(s4));//true
http://www.lqws.cn/news/551089.html

相关文章:

  • MYSQL-InnoDB逻辑存储结构 详解
  • 机器学习5——非参数估计
  • 数据库外连接详解:方式、差异与关键注意事项
  • openGL学习(基本窗口)
  • 深入学习MySQL的页分裂(Page Split)
  • 策略模式与工厂模式的黄金组合:从设计到实战
  • yaml 导致的原型污染 -- GPN CTF 2025 Secure by Default
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第五节多元函数微分学的几何应用
  • Redis 单线程的“天花板”与集群的必要性
  • 三、java项目自动部署流水线搭建
  • oracle内存参数调整
  • 【C++】string的模拟实现
  • 关于css的height:100%
  • 助力高考,利用python获取本专科专业选考科目要求
  • 开疆智能CCLinkIE转ModbusTCP网关连接组态王配置案例
  • 开源 java android app 开发(十三)绘图定义控件、摇杆控件的制作
  • Ollama+Gemma3模型+Open WebUI,无公网IP如何内网穿透远程访问?
  • 【Linux 设备模型框架 kobject 和 kset】
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)
  • 【k近邻】 K-Nearest Neighbors算法原理及流程
  • 机器学习3——参数估计之极大似然估计
  • C++并发编程-4.unique_lock,共享锁和递归锁
  • 详解HashMap底层原理
  • 电脑远程控制另一台电脑无法连接怎么办
  • PostgreSQL 容器化分布式技术方案
  • 基于51单片机-蜂鸣器演奏《飞雪玉花》
  • 什么是故障注入测试
  • 强化联邦学习的车联网 DDoS 攻击检测
  • 【图像处理入门】12. 综合项目与进阶:超分辨率、医学分割与工业检测
  • FLUX.1 Kontext(Dev 版)训练lora基础教程