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

举报
陶然同学 发表于 2022/08/20 00:59:27 2022/08/20
【摘要】 🔎这里是【Java】,关注我学习Java不迷路 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️ 👀专栏介绍 【Java】 目前主要更新Java,一起学习一起进步。 👀本期介绍 本期主要介绍常用API——Object、StringBuilder、包装类 文章目录 1. O...

🔎这里是【Java】,关注我学习Java不迷路
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️

👀专栏介绍

【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() 进行自动代码生成。如下图所示:

 

 

tipsObject类当中的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
异常。

文章来源: blog.csdn.net,作者:陶然同学,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_45481821/article/details/126223596

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。