【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异常。

相关文章
|
23天前
|
编解码 人工智能 缓存
自学记录鸿蒙API 13:实现多目标识别Object Detection
多目标识别技术广泛应用于动物识别、智能相册分类和工业检测等领域。本文通过学习HarmonyOS的Object Detection API(API 13),详细介绍了如何实现一个多目标识别应用,涵盖从项目初始化、核心功能实现到用户界面设计的全过程。重点探讨了目标类别识别、边界框生成、高精度置信度等关键功能,并分享了性能优化与功能扩展的经验。最后,作者总结了学习心得,并展望了未来结合语音助手等创新应用的可能性。如果你对多目标识别感兴趣,不妨从基础功能开始,逐步实现自己的创意。
194 60
|
12天前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
29天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
1月前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
87 10
|
1月前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
82 6
|
1月前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
2月前
|
安全 Java API
Java中的Lambda表达式与Stream API的高效结合####
探索Java编程中Lambda表达式与Stream API如何携手并进,提升数据处理效率,实现代码简洁性与功能性的双重飞跃。 ####
35 0
|
运维 监控 Java
Java版阿里云通信短信发送API接口实例(1)
Java版阿里云通信短信发送API接口实例(新)
1139 0
Java版阿里云通信短信发送API接口实例(1)
|
JSON Java API
Java版阿里云通信短信发送API接口实例(2)
Java版阿里云通信短信发送API接口实例(新)
1104 0
|
Java API 开发工具
Java版阿里云通信短信发送API接口实例(新)
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/78751698 阿里云通信(原名阿里大于)的短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码、短信通知等。
3581 1

热门文章

最新文章