06.JAVA常用类方法(StringBuilder与StringBuffer、Arrays与Array比较和常用方法+代码示例)

StringBuilder

基本介绍

概述:可变的字符串类,可视为一个容器,StringBuilder对象中的内容是可变的,也可称之为字符串缓冲类。其常用的成员方法根据有无返回值可以分为查询和删改两大类。

构造方法:StringBuilder( ) ; StringBuilder( str )

PSStringBuilder 是 AbstractStringBuilder 类的子类,AbstractStringBuilder 的另一个子类是 StringBuffer,两个子类的常用方法基本相同,区别在于 StringBuffer 支持线程安全

StringBuilder、StringBuffer和String区别:

String

StringBuilder

StringBuffer

是否可变

线程安全

支持

不支持

支持

性能比较

最低

最高

适中

常用查询

概述:查询类方法有返回值的,都不对 stringBuilder 本身内容进行修改。

方法

描述

stringBuilder.length( )

返回 int,获取字符串的长度

stringBuilder.indexOf( str )

返回 int,返回 str 串在 stringBuilder 中首次出现的索引

stringBuilder.charAt( index )

返回 char,返回指定索引位置的字符

stringBuilder.substring( start, end )

返回 String,返回指定范围内的子字符串,前包后不包

stringBuilder.toString( )

返回 String,将 stringBuilder 类型转换为 String 类型

stringBuilder.reverse( )

反转字符串,将内元素顺序前后颠倒

stringBuilder.delete( start, end )

删除 stringBuilder 指定范围内的字符串,前包后不包

stringBuilder.append( str )

将指定字符串 str 追加到 stringBuilder 的末尾

stringBuilder.insert( offset, str )

从 offset 开始插入字符串 str

stringBuilder.replace( start, end, str )

用 str 替换 stringBuilder 指定范围内的字符串,前包后不包

// 使用有参构造器,将一个字符串转为 StringBuilder 对象
StringBuilder stringBuilder = new StringBuilder("Hello");// 获取字符串长度,输出: 5
int length = stringBuilder.length();// 获取指定索引位置的字符,出: l
char ch = stringBuilder.charAt(2);// 获取子字符串,输出: lle
String substring = stringBuilder.substring(1, 4);// 查找字符串第一次出现的索引位置,输出: Index of 'l': 2
int index = stringBuilder.indexOf("l");
常用删改

概述:即对 StringBuilder 变量本身进行操作,可以不设置用于接收返回值的变量(也可以设置)。

方法

描述

stringBuilder.reverse( )

反转字符串,将内元素顺序前后颠倒

stringBuilder.delete( start, end )

删除 stringBuilder 指定范围内的字符串,前包后不包

stringBuilder.append( str )

将指定字符串 str 追加到 stringBuilder 的末尾

stringBuilder.insert( offset, str )

从 offset 开始插入字符串 str

stringBuilder.replace( start, end, str )

用 str 替换 stringBuilder 指定范围内的字符串,前包后不包

// 创建一个空的 StringBuilder 对象
StringBuilder stringBuilder = new StringBuilder();// 在 StringBuilder 中追加字符串,输出: Hello
stringBuilder.append("Hello");// 反转字符串,输出:olleH
stringBuilder.reverse();// 在指定位置插入字符串(先再次反转),输出: He---llo
stringBuilder.reverse().insert(2, "---");// 替换指定范围内的字符串,输出: He123llo
stringBuilder.replace(2, 5, "123");// 删除指定范围内的字符,输出: Hello
stringBuilder.delete(2, 5);

Arrays与Array

对比介绍

Arrays:全类名 java.util.Arrays,是一个实用工具类,提供了操作数组的静态方法,包括排序、比较、搜索、复制、填充、类型转换等操作,都有传入参数。

Array:全类名 java.lang.reflect.Array,是一个反射类,用于动态创建和操作数组。提供了用于创建新数组、获取和设置数组元素值、获取数组长度等方法,以及一些与数组相关的静态方法,如判断对象是否为数组、获取数组的组件类型等(通常需要使用反射技术)。

Array方法

方法

描述

Array.newInstance( Cla, len )

创建一个数组,元素类型为 Cla 类,长度为 len

Array.get( arr, index )

获取 arr 中索引为 index 的元素的值

Array.getLength( arr )

获取数组 arr 的长度

Array.getComponentType( Arr )

获取指定数组的组件类型,输入为类,

Array.set( arr, index, value)

将 arr 中索引为 index 的元素的值设为 value

import java.lang.reflect.Array;
public class ArrayExample {public static void main(String[] args) {int[] arr = new int[5];// 创建一个新的数组,长度为3int[] newArray = (int[]) Array.newInstance(int.class, 3);// 获取和设置数组元素值,获取并打印0索引处元素,输出: 10Array.set(arr, 0, 10);System.out.println((int) Array.get(arr, 0));// 获取数组长度,输出: length: 5int length = Array.getLength(arr);System.out.println("length: " + length); // 获取数组的组件类型,输出: int;intClass<?> componentType1 = arr.getClass().getComponentType();// 或者Class<?> componentType2 = Array.getComponentType(arr.getClass());System.out.println(componentType1 + ";" + componentType2); }
}
Arrays方法

概述:因为是一个实用工具类,即是对一个数组进行操作,因此一定有传入参数,方法直接通过类名进行调用(静态的)。

方法

描述

Arrays.equals( arr1, arr2 )

返回 boolean,判断数组 arr1 和 arr2 是否相等

Arrays.binarySearch( arr, key)

返回 int,在已排序 arr 中,用二分法获取指定元素 key 的索引

Arrays.sort( arr )

对 arr 数组进行排序,数组需实现 Comparable 接口

Arrays.fill( arr, value )

将 arr 数组中的所有元素的值都设置为指定的值 key

Arrays.copyOf( old, newLen )

将 old 数组复制到一个新数组中,并指定新数组的长度为 newLen

Arrays.asList( arr )

将数组转换为列表类型,返回 List

Arrays.toString( arr )

将数组转换为字符串类型,返回 String

import java.util.Arrays;
public class ArraysExample {public static void main(String[] args) {Integer[] arr = {5, 2, 8, 1, 9};// 对数组进行排序,结果:[1, 2, 5, 8, 9]Arrays.sort(arr);System.out.println(Arrays.toString(arr)); // 在已排序的数组中使用二分查找算法搜索指定元素,结果:2int index = Arrays.binarySearch(arr, 5);System.out.println(index); // 将一个数组复制到一个新数组中,结果:[1, 2, 5]Integer[] copiedArr = Arrays.copyOf(arr, 3);System.out.println(Arrays.toString(copiedArr)); // 将数组中的所有元素设置为指定的值,结果:[0, 0, 0, 0, 0]Arrays.fill(arr, 0);System.out.println(Arrays.toString(arr)); // 将数组转换为字符串形式输出String arrString = Arrays.toString(arr);// 比较两个数组是否相等,结果:trueInteger[] arr1 = {1, 2, 3};Integer[] arr2 = {1, 2, 3};boolean isEqual = Arrays.equals(arr1, arr2);System.out.println(isEqual);// 将给定数组转换为固定大小的列表Integer[] arr3 = {1, 2, 3};List<Integer> list = Arrays.asList(arr3);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阻止持久性攻击改善网络安全

MITRE ATT&CK框架是一个全球可访问的精选知识数据库&#xff0c;其中包含基于真实世界观察的已知网络攻击技术和策略。持久性是攻击者用来访问系统的众多网络攻击技术之一;在获得初始访问权限后&#xff0c;他们继续在很长一段时间内保持立足点&#xff0c;以窃取数据、修改…

Java实战项目六:进销存管理系统

文章目录 一、系统概述二、关键知识点梳理&#xff08;一&#xff09;数据库设计与连接&#xff08;二&#xff09;实体类与关系映射&#xff08;三&#xff09;集合框架的应用&#xff08;四&#xff09;CRUD操作与事务管理 三、系统架构与模块划分&#xff08;一&#xff09;…

集合-及其各种特征详解

集合 概念&#xff1a;是提供一种存储空间 可变 的存储模型&#xff0c;存储的数据容量可以发生改变。&#xff08;也就是集合容量不固定&#xff09; 集合关系图 绿色的代表接口&#xff0c;蓝色的代表接口的实现类 单列集合 Collection(接口) 概述&#xff1a;单列集合的…

spring模块(一)DI依赖注入

一、介绍&#xff1a;Dependency Injection&#xff0c;组件之间依赖关系由容器在运行期决定&#xff0c;形象的说&#xff0c;即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能&#xff0c;而是为了提升组件重用的频率&#xff0c;并为…

【策】策略

为应对未来激烈的竞争&#xff0c;需要具备以下要素&#xff1a; 主动选择。每个人都有主动选择的权利&#xff0c;既然做出选择&#xff0c;应对其产生的结果而负责。反逆向思维。梳理过程&#xff0c;分析因果&#xff0c;优化决策。

How to implement anti-crawler strategies to protect site data

How to implement anti-crawler strategies to protect site data 信息校验型反爬虫User-Agent反爬虫Cookie反爬虫签名验证反爬虫WebSocket握手验证反爬虫WebSocket消息校验反爬虫WebSocket Ping反爬虫 动态渲染反爬虫文本混淆反爬虫图片伪装反爬虫CSS偏移反爬虫SVG映射反爬虫字…

VM与欧姆龙PLC通讯设置

1、欧姆龙PLC 进行网口通讯&#xff0c;协议用的Fins tcp&#xff0c;也可以用Fins UDP。 2、主要步骤如下&#xff1b; step1&#xff1a;设置IP地址、端口号默认是9600&#xff0c;根据需要设置寄存器首地址和寄存器数量 step2&#xff1a;鼠标移动到某个地址下&#xff0c…

Python入门-函数

1.函数的定义及调用 函数&#xff1a;函数是将一段实现功能的完整代码&#xff0c;使用函数名称进行封装&#xff0c;通过函数名称进行调用。 以此达到一次编写&#xff0c;多次调用的目的 def get_sum(num): #num叫形式参数s0for i in range(1,num1):siprint(f1到{num}之…

数字后端设计实现 | 数字后端PR工具Innovus中如何创建不同高度的row?

吾爱IC社区星球学员问题&#xff1a;Innovus后端实现时两种种不同高度的site能做在一个pr里面吗&#xff1f; 答案是可以的。 Innovus支持在同一个设计中中使用不同的row&#xff0c;但需要给各自子模块创建power domain。这里所说的不同高度的row&#xff0c;有两种情况。 1…

Docker一键极速安装Nacos,并配置数据库!

1 部署方式 1.1 DockerHub javaedgeJavaEdgedeMac-mini ~ % docker run --name nacos \ -e MODEstandalone \ -e JVM_XMS128m \ -e JVM_XMX128m \ -e JVM_XMN64m \ -e JVM_MS64m \ -e JVM_MMS64m \ -p 8848:8848 \ -d nacos/nacos-server:v2.2.3 a624c64a1a25ad2d15908a67316d…

指针大礼包6

第6题 &#xff08;10.0分&#xff09; 题号:5 难度:中 第8章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 题目&#xff1a;下列给定程序中函数fun的功能是…

代码随想录刷题第三十九天| 62.不同路径 ● 63. 不同路径 II

代码随想录刷题第三十九天 不同路径 (LC 62) 题目思路&#xff1a; 代码实现&#xff1a; class Solution:def uniquePaths(self, m: int, n: int) -> int:dp [[0 for _ in range(n1)] for _ in range(m1)]dp[0][1] 1for i in range(1,m1):for j in range(1, n1):dp[i]…

使用IDEA官方docker插件构建镜像

此方法同样适用于jetbrains系列的其他开发软件 在IDEA中&#xff0c;如果是maven项目&#xff0c;可以使用插件 <plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.2</version> &…

Linux入门攻坚——11、Linux网络属性配置相关知识1

网络基础知识&#xff1a; 局域网&#xff1a;以太网&#xff0c;令牌环网&#xff0c; Ethernet&#xff1a;CSMA/CD 冲突域 广播域 MAC&#xff1a;Media Access Control&#xff0c;共48bit&#xff0c;前24bit需要机构分配&#xff0c;后24bit自己…

WPF 如何知道当前有多少个 DispatcherTimer 在运行

在 WPF 调试中&#xff0c;对于 DispatcherTimer 定时器的执行&#xff0c;没有直观的调试方法。本文来告诉大家如何在 WPF 中调试当前主线程有多少个 DispatcherTimer 在运行 在 WPF 中&#xff0c;如果有 DispatcherTimer 定时器在执行&#xff0c;将会影响到主线程的执行&a…

Qt6入门教程 2:Qt6下载与安装

Qt6不提供离线安装包&#xff0c;下载和安装实际上是一体的了。 关于Qt简介&#xff0c;详见&#xff1a;Qt6入门教程1&#xff1a;Qt简介 一.下载在线安装器 Qt官网 地址&#xff1a;https://download.qt.io/ 在线下载器地址&#xff1a;https://download.qt.io/archive/on…

Unity | NGO网络框架

目录 一、相关属性及变量 1.ServerRpc属性 2.ClientRpc属性 3.NetworkVariable变量 二、相关组件 1.NetworkManager 2.Unity Transport 3.Network Object 4.NetworkBehaviour&#xff1a; 5.NetworkTransform Syncing(Synchronizing) Thresholds Interpolation 三…

Linux下Redis6下载、安装和配置教程-2024年1月5日

Linux下Redis6下载、安装和配置教程-2024年1月5日 一、下载二、安装三、启动四、设置开机自启五、Redis的客户端1.Redis命令行客户端2.windows上的图形化桌面客户端 一、下载 1.Redis的官方下载&#xff1a;https://redis.io/download/ 2.网盘下载&#xff1a; 链接&#xff…

Docker overlay2文件busy,容器不能删除问题解决

文章目录 在删除docker容器的时候报错,说设备正忙通过 docker ps -a 查看有两个状态的dead的容器解决方法&#xff1a;1.查看所有挂载的设备2.截取设备的进程id3.清理进程(kill掉即可) 在删除docker容器的时候报错,说设备正忙 Error response from daemon: Driver overlay2 fai…

Linux的ping命令、wget命令、curl命令

一、ping命令 通过ping命令&#xff0c;可以检查指定的网络服务器是否是可联通状态 形式&#xff1a;ping [-c num] ip或主机名 -c&#xff1a;检查的次数&#xff0c;不使用-c&#xff0c;将无限次数持续检查 ip或主机名&#xff1a;被检查的服务器的ip地址或主机名地址 …