Java入门5.1---Object类、String类、包装类

一、Object类

 java.lang.Object类,是所有类的根父类

1.== 和equals的比较

==:

  1. 基本数据类型:根据基本数据类型的值判断是否相等,相等返回true,反之返回false
    1. 注:两端数据类型可以不同,在不同的情况下,也可以返回true。
  2. 引用数据类型:比较类型变量的地址值是否相等。

equals():

  1. 只能处理引用类型变量
  2. Object类,发现equals()仍然比较的两个引用变量的地址值是否相等
  3. String类,包装类,File类,Data类这些重写Object类的equals()方法,比较是两个对象的“实体内容”是否完全相同。

若我们自定义一个类,希望比较两个对象的属性值都相同的情况下返回true的话,就需要重写Object类的equals(Object obj)方法。

举例1:

举例2:

  

二、String类

1.toString()方法

(1)当我们输出一个对象的引用时,会调用toString()方法。

1
2
3
public String toString() {
    getClass().getName() + "@" + Integer.toHexString(hashCode());
}

当我们没有重写Object类的toString()方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置。

(2)一般我们需要重写Object类的toString()方法,将此对象的各个属性值返回。

(3)像String类、Date类、File类、包装类都重写了toString()方法。

三、包装类

1.包装类

基本数据类型由于不是类,不能够使用java库里提供的大量的方法,所以在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。此时相当于基本数据类型就具有了类的特点。这些类即为包装类(wrapper或封装类)。

 

2.基本数据类型、包装类、String类之间的转换

总结:

(1)基本数据类型与对应的包装类有自动装箱、自动拆箱

1
2
3
int i = 10;
Integer i1 = i; // 自动装箱
int j = i1; // 自动拆箱

(2)基本数据类型、包装类--->String类:调用String类的重载的valueOf(Xxx xx);

String类--->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);

注意:

1
2
3
// 错误写法,String和int之间没有关系
String str = "123";
int i = (int)str;

3.使用场景

使用包装类型合理的场景有:

  1. 作为集合中的元素、键和值
  2. 泛型,必须使用包装类型,如List<Integer> list , OptionalInt rpcResult()
  3. 反射方法调用需使用包装类型,例如在Method.invoke,MethodHandle.invoke中
  4. POJO类的字段、RPC方法的返回值和参数等可能要序列化的且可能缺失值的场景中

 

 

 

 

 

参考文献:

【1】Java中字符数组、String类、StringBuffer三者的相互转换 - 功夫 熊猫 - 博客园

【2】String,StringBuilder,StringBuffer,数组,列表之间的若干转换以及若干数组常用操作方法_java_2017_csdn的博客-CSDN博客_stringbuilder 转数组

【3】Java intern() 方法

【4】Java中new Long()和Long.valueOf()区别 - 简书

posted @   nxf_rabbit75  阅读(410)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
一、Object类1.== 和equals的比较二、String类1.toString()方法三、包装类1.包装类2.基本数据类型、包装类、String类之间的转换3.使用场景
点击右上角即可分享
微信分享提示