前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java】常用API——Object、StringBuilder、包装类

【Java】常用API——Object、StringBuilder、包装类

作者头像
陶然同学
发布2023-02-27 13:15:44
5920
发布2023-02-27 13:15:44
举报
文章被收录于专栏:陶然同学博客

👀专栏介绍

【Java】 目前主要更新Java,一起学习一起进步。

👀本期介绍

本期主要介绍常用API——Object、StringBuilder、包装类

文章目录

1. Object类

1.1 概述

1.2 toString方法

1.3 equals方法

1.4 Objects类

2. StringBuilder类

2.1 字符串拼接问题

2.2 StringBuilder概述

2.3 构造方法

2.4 常用方法

3. 包装类

3.1 概述

3.2 装箱与拆箱

3.3自动装箱与自动拆箱

3.3 基本类型与字符串之间的转换

1. Object类

1.1 概述

java.lang.Object 类是 Java 语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使

用。在对象实例

化的时候,最终找的父类就是 Object 。

如果一个类没有特别指定父类,

那么默认则继承自 Object 类。例如

根据 JDK 源代码及 Object 类的 API 文档, Object 类当中包含的方法有 11 个。今天我们主要学习其中

的 2 个:

public String toString() :返回该对象的字符串表示。

public boolean equals(Object obj) :指示其他某个对象是否与此对象 “ 相等 ” 。

1.2 toString方法

方法摘要

public String toString() :返回该对象的字符串表示。

toString 方法返回该对象的字符串表示,其实该字符串内容就是对象的类型 +@+ 内存地址值。

由于 toString 方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符

串表现形式,因

此也需要重写它。

覆盖重写

如果不希望使用 toString 方法的默认行为,则可以对它进行覆盖重写。例如自定义的 Person 类:

在 IntelliJ IDEA 中,可以点击 Code 菜单中的 Generate... ,也可以使用快捷键 alt+insert ,点击

toString() 选

项。选择需要包含的成员变量并确定。如下图所示:

小贴士:

在我们直接使用输出语句输出对象名的时候 , 其实通过该对象调用了其 toString() 方法。

1.3 equals方法

方法摘要

public boolean equals(Object obj) :指示其他某个对象是否与此对象 “ 相等 ” 。

调用成员方法 equals 并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的 “ 相

同 ” 有默认和自定

义两种方式。

默认地址比较

如果没有覆盖重写 equals 方法,那么 Object 类中默认进行 == 运算符的对象地址比较,只要不是同

一个对象,结果

必然为 false 。

对象内容比较

如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆

盖重写 equals 方

法。例如:

这段代码充分考虑了对象为空、类型一致等问题,但方法内容并不唯一。大多数 IDE 都可以自动生

成 equals 方法的

代码内容。在 IntelliJ IDEA 中,可以使用 Code 菜单中的 Generate… 选项,也可以使用快捷键

alt+insert ,并选

择 equals() and hashCode() 进行自动代码生成。如下图所示:

tips:Object类当中的hashCode等其他方法,今后学习。

1.4 Objects类

在刚才 IDEA 自动重写 equals 代码中,使用到了 java.util.Objects 类,那么这个类是什么呢?

JDK7 添加了一个 Objects 工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组

成,这些方法是

null-save (空指针安全的)或 null-tolerant (容忍空指针的),用于计算对象的 hashcode 、返回对

象的字符串表

示形式、比较两个对象。

在比较两个对象的时候, Object 的 equals 方法容易抛出空指针异常,而 Objects 类中的 equals 方法

就优化了这个问

题。方法如下:

public static boolean equals(Object a, Object b) : 判断两个对象是否相等。

我们可以查看一下源码,学习一下:

2. StringBuilder类

2.1 字符串拼接问题

由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对

象。例如:

在API中对String类有这样的描述:字符串是常量,它们的值在创建后不能被更改。

根据这句话分析我们的代码,其实总共产生了三个字符串,即 "Hello" 、 "World" 和 "HelloWorld"

。引用变量 s

首先指向 Hello 对象,最终指向拼接出来的新字符串对象,即 HelloWord 。

由此可知,如果对字符串进行拼接操作,每次拼接,都会构建一个新的 String 对象,既耗时,又浪

费空间。为了解

决这一问题,可以使用 java.lang.StringBuilder 类。

2.2 StringBuilder概述

查阅 java.lang.StringBuilder 的 API , StringBuilder 又称为可变字符序列,它是一个类似于 String 的

字符串缓冲

区,通过某些方法调用可以改变该序列的长度和内容。

原来 StringBuilder 是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对

其中的字符串进

行各种操作。

它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。

StringBuilder 会自动

维护数组的扩容。原理如下图所示:

( 默认 16 字符空间,超过自动扩充 )

2.3 构造方法

根据 StringBuilder 的 API 文档,常用构造方法有 2 个:

public StringBuilder() :构造一个空的 StringBuilder 容器。

public StringBuilder(String str) :构造一个 StringBuilder 容器,并将字符串添加进去。

2.4 常用方法

StringBuilder 常用的方法有 2 个:

public StringBuilder append(...) :添加任意类型数据的字符串形式,并返回当前对象自身。

public String toString() :将当前 StringBuilder 对象转换为 String 对象。

append 方法

append 方法具有多种重载形式,可以接收任意类型的参数。任何数据作为参数都会将对应的字符

串内容添加到

StringBuilder 中。例如:

备注: StringBuilder 已经覆盖重写了 Object 当中的 toString 方法。

toString 方法

通过 toString 方法, StringBuilder 对象将会转换为不可变的 String 对象。如:

3. 包装类

3.1 概述

Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建

对象使用,因为

对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包

装类,如下:

3.2 装箱与拆箱

基本类型与对应的包装类对象之间,来回转换的过程称为 ” 装箱 “ 与 ” 拆箱 “ :

装箱 :从基本类型转换为对应的包装类对象。

拆箱 :从包装类对象转换为对应的基本类型。

用 Integer 与 int 为例:(看懂代码即可)

基本数值 ----> 包装对象

包装对象---->基本数值

3.3自动装箱与自动拆箱

由于我们经常要做基本类型与包装类之间的转换,从 Java 5 (

JDK 1.5 )开始,基本类型与包装类的装箱、拆箱动作

可以自动完成。例如:

3.3 基本类型与字符串之间的转换

基本类型转换为 String

基本类型转换 String 总共有三种方式,查看课后资料可以得知,这里只讲最简单的一种方式:

String 转换成对应的基本类型

除了 Character 类之外,其他所有包装类都具有 parseXxx 静态方法可以将字符串参数转换为对应的

基本类型:

public static byte parseByte(String s) :将字符串参数转换为对应的 byte 基本类型。

public static short parseShort(String s) :将字符串参数转换为对应的 short 基本类型。

public static int parseInt(String s) :将字符串参数转换为对应的 int 基本类型。

public static long parseLong(String s) :将字符串参数转换为对应的 long 基本类型。

public static float parseFloat(String s) :将字符串参数转换为对应的 flfloat 基本类型。

public static double parseDouble(String s) :将字符串参数转换为对应的 double 基本类型。

public static boolean parseBoolean(String s) :将字符串参数转换为对应的 boolean 基本类型。

代码使用(仅以 Integer 类的静态方法 parseXxx 为例)如:

注意 : 如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出

java.lang.NumberFormatException

异常。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 👀专栏介绍
  • 👀本期介绍
  • 文章目录
  • 1. Object类
    • 1.1 概述
      • 1.2 toString方法
        • 1.3 equals方法
          • 1.4 Objects类
          • 2. StringBuilder类
            • 2.1 字符串拼接问题
              • 2.2 StringBuilder概述
                • 2.3 构造方法
                  • 2.4 常用方法
                  • 3. 包装类
                    • 3.1 概述
                      • 3.2 装箱与拆箱
                        • 3.3自动装箱与自动拆箱
                          • 3.3 基本类型与字符串之间的转换
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档