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

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

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) : 判断两个对象是否相等。

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

image.png

2. StringBuilder


2.1 字符串拼接问题


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

image.png

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


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

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

image.png

由此可知,如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。为了解决这一问题,可以使用 java.lang.StringBuilder 类。

2.2 StringBuilder概述


查阅 java.lang.StringBuilder 的 API , StringBuilder 又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

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

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

StringBuilder 会自动维护数组的扩容。原理如下图所示:( 默认 16 字符空间,超过自动扩充 )

image.png

2.3 构造方法


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

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

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

image.png

2.4 常用方法


StringBuilder常用的方法有2个:

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

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

append 方法

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

StringBuilder 中。例如:

image.png

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

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

image.png

3. 包装类


3.1 概述


Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:

image.png

3.2 装箱与拆箱


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

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

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

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

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

image.png

3.3自动装箱与自动拆箱


由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成。

例如:

image.png

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


基本类型转换为String

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

image.png

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 为例)如:

image.png

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

java.lang.NumberFormatException异常。

相关文章
|
2月前
|
编解码 人工智能 缓存
自学记录鸿蒙API 13:实现多目标识别Object Detection
多目标识别技术广泛应用于动物识别、智能相册分类和工业检测等领域。本文通过学习HarmonyOS的Object Detection API(API 13),详细介绍了如何实现一个多目标识别应用,涵盖从项目初始化、核心功能实现到用户界面设计的全过程。重点探讨了目标类别识别、边界框生成、高精度置信度等关键功能,并分享了性能优化与功能扩展的经验。最后,作者总结了学习心得,并展望了未来结合语音助手等创新应用的可能性。如果你对多目标识别感兴趣,不妨从基础功能开始,逐步实现自己的创意。
209 60
|
15天前
|
算法 Java 程序员
菜鸟之路Day06一一Java常用API
《菜鸟之路Day06——Java常用API》由blue编写,发布于2025年1月24日。本文详细介绍了Java中常用的API,包括JDK7的时间类(Date、SimpleDateFormat、Calendar)和JDK8新增的时间API(ZoneId、Instant、DateTimeFormatter等),以及包装类的使用。通过多个实例练习,如时间计算、字符串转整数、十进制转二进制等,帮助读者巩固所学内容,提升编程技能。文章强调了理论与实践结合的重要性,鼓励读者多做练习以提高学习效率。
73 28
|
30天前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
2月前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
2月前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
101 10
|
2月前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
92 6
|
运维 监控 Java
Java版阿里云通信短信发送API接口实例(1)
Java版阿里云通信短信发送API接口实例(新)
1143 0
Java版阿里云通信短信发送API接口实例(1)
|
JSON Java API
Java版阿里云通信短信发送API接口实例(2)
Java版阿里云通信短信发送API接口实例(新)
1108 0
|
Java API 开发工具
Java版阿里云通信短信发送API接口实例(新)
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/78751698 阿里云通信(原名阿里大于)的短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码、短信通知等。
3585 1
|
1月前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
95 17