百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Java Array 和 String 的转换(java string数组转string)

wptr33 2025-07-28 00:35 21 浏览

英文标题【Array to String Conversions】

概述

本页面中的内容对 Array 和 String 之间互相进行转换的方法进行一些说明。

我们可以使用 原生 Java(vanilla Java) 或者一些第三方的 Java 工具类来实现这个转换。ies.

将 Array 转换为 String

在有时候我们希望将字符串的数字或者整数类型的数组转换为字符串。但是如果我们直接使用 toString() 来进行转换的话,你可能会得到类似下面 Ljava.lang.String;@74a10858 的字符串。

上面的字符串显示的是对象的类型和当前这个对象的哈希代码。

但是, java.util.Arrays 工具类也能够支持一些 toString() 的方法来将 Array 转换为 String。

Arrays.toString() 将输入的数组转换为字符串,在转换后的字符串将会使用逗号分隔符,同时在字符串的前后会添加一个方括号 []。

可以考察下面的代码:

        String[] strArray = {"one", "two", "three"};
        String joinedString = Arrays.toString(strArray);
        assertEquals("[one, two, three]", joinedString);
        
        int[] intArray = {1, 2, 3, 4, 5};
        joinedString = Arrays.toString(intArray);
        assertEquals("[1, 2, 3, 4, 5]", joinedString);

StringBuilder 的 append() 方法

这个是基于 Java 的原生实现,你可以对需要转换的数组进行遍历,然后将遍历的结果使用 append() 方法添加到字符串后面。

        String[] strArray = {"Convert", "Array", "With", "Java"};
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < strArray.length; i++) {
            stringBuilder.append(strArray[i]);
        }
        String joinedString = stringBuilder.toString();
        assertEquals("ConvertArrayWithJava", joinedString);

另外,如果你的数组中存储的数据是整形的话,那么你可以使用方法转换函数,首先将整数类型转换为字符串后再添加。

Java Streams API

从 Java 8 及其以上的版本,你可以使用 String.join() 方法将给出的数组元素使用不同的连接字符串连接在一起,在我们使用案例中,我们使用空白字符进行连接。

        String joinedString = String.join("", new String[]{"Convert", "With", "Java", "Streams"});
        assertEquals("ConvertWithJavaStreams", joinedString);

更多的是,我们可以使用 Java Streams API 中的 Collectors.joining() 方法来进行连接,这个连接的方法将会保留和输入数据相同的顺序。

        String joinedString = Arrays
                .stream(new String[]{"Convert", "With", "Java", "Streams"})
                .collect(Collectors.joining());
        assertEquals("ConvertWithJavaStreams", joinedString);

StringUtils.join()

Apache Commons Lang 为字符串处理提供了非常好的方法,能够很好的帮我们解决上面的问题。

这个 join 的方法可以通过输入的数据进行自动进行合并,合并的结果与你输入数据的顺序相同。

        String joinedString = StringUtils.join(new String[]{"Convert", "With", "Apache", "Commons"});
        assertEquals("ConvertWithApacheCommons", joinedString);

Joiner.join()

同样的 Guava 也提供了同样的工具类来使用。

例如,我们可以使用下面的代码来对数组进行连接。

String joinedString = Joiner.on("")
        .skipNulls()
        .join(new String[]{ "Convert", "With", "Guava", null });
assertEquals("ConvertWithGuava", joinedString);

将字符串转换为数组

同样的,在有些时候,我们希望能够将字符串转换为数组。

最常用的情况就是有一个输入的字符串,使用特定的分隔符,我们需要按照分隔符的位置将字符串拆分为数组。

String.split()

这个是最简单的方法了,可以直接把字符串中的字符使用给定的字符进行拆分,如下面的代码:

String[] strArray = "loremipsum".split("");

上面的代码将会生成下面的输出,因为我们没有给定任何分隔符,所以这个方法将会按照字符进行拆分。

["l", "o", "r", "e", "m", "i", "p", "s", "u", "m"]

StringUtils.split()

另外,可能用得最多的就是 Apache 的 Commons 中的 StringUtils ,这个能够对指定的字符串进行拆分。

如果使用 String 的方法进行拆分的话,可能会遇到空对象的问题,例如你输入的字符串可能是空字符串,这个时候 String 自带的原生方法将会抛出空异常。

如果使用 StringUtils 方法的话,可以有效的避免空对象的异常,因此这个工具类是非常常用的。在默认的情况下,这个方法使用的是空格作为分隔符。

String[] splitted = StringUtils.split("lorem ipsum dolor sit amet");

上面的方法将会输出下面的数组。

["lorem", "ipsum", "dolor", "sit", "amet"]

Splitter.split()

最后,你还可以使用 Guava 的拆分 API,如果 Apache Commons 提供的方法,通常 Guava 也能提供类似的。

例如我们可以使用下面的方法进行拆分,可以看到的是,我们在拆分的时候可以同时对结果进行处理。

List<String> resultList = Splitter.on(' ')
    .trimResults()
    .omitEmptyStrings()
    .splitToList("lorem ipsum dolor sit amet");   
String[] strArray = resultList.toArray(new String[0]);

上面的代码能够生成下面的结果:

["lorem", "ipsum", "dolor", "sit", "amet"]

结论

本页面对 String 和 Array 之间的转换方法进行了一些说明。一般来说可以使用原生方法进行转换,但是我们通常不建议使用,主要是方法功能比较差,同时还非常容易出现空对象异常。

因此建议使用 Apache Commons 或者 Guava 的相关方法进行转换。

相关推荐

Python字符串终极指南!单引号、双引号、三引号区别全解析

导语:Python中字符串(str)是最核心的数据类型!无论你是输出"HelloWorld"还是处理用户数据,都离不开它。今天彻底讲清字符串的三大定义方式及其核心区别,新手必看!...

python 字符串的定义和表示_python字符串的用法

在Python中,字符串是一序列字符的集合。定义一个字符串可以使用单引号或双引号括起来的字符序列。...

简单的python-熟悉字符串相关的操作

str.py:#-*-coding:utf-8-*-#测试函数deff():#字符串使用单引号定义s1='test'print(s...

Python初学者:3招搞定长字符串逐行读取,代码超简单

刚学Python的小伙伴,是不是遇到过这种尴尬情况?拿到一段老长的多行字符串——比如从文档里复制的日志、一段带换行的文章,想一行一行处理,如果直接打印全堆在一起,手动切又怕漏行,咋整啊?别慌!今天就给...

Python 字符串_python字符串型怎么表达

除了数字,Python还可以操作字符串。字符串的形式是单引号('......')双引号(''.........'')或三个单引号(''&...

贴身口语第二关:请求帮忙、道歉、指路、接受礼物

02-@askforhelp请求协助1.F:Excuseme.Canyouhelpme?M:Yes,whatcanIdoforyou?...

NBA赛季盘点之九大装逼&amp;炫技时刻:“歪嘴战神”希罗领衔

欢迎大家来到直播吧NBA赛季盘点,历经许多波折,2019-20赛季耗时整整一年才圆满收官。魔幻的一年里有太多的时刻值得我们去铭记,赛场上更是不乏球员们炫技与宣泄情绪的装逼时刻,本期盘点就让我们来回顾一...

一手TTS-2语音合成模型安装教程及实际使用

语音合成正从云端调用走向本地部署,TTS-2模型作为开源语音生成方案之一,正在被越来越多开发者尝试落地。本篇文章从环境配置到推理调用,详尽拆解TTS-2的安装流程与使用技巧,为语音产品开发者提供...

网友晒出身边的巨人 普通人站一旁秒变“霍比特人”

当巨人遇到霍比特人,结果就是“最萌身高差”。近日网友们晒出了身边的巨人,和他们站在一起,普通人都变成了“霍比特人”。CanYouTellWho'sRelated?TheDutchGiant...

分手后我们还能做朋友吗?_分手后我们还能做朋友吗

Fewrelationshipquestionsareaspolarizingaswhetherornotyoushouldstayfriendswithanex.A...

如何用C语言实现Shellcode Loader

0x01前言之前github找了一个基于go的loader,生成后文件大小6M多,而且细节不够了解,一旦被杀,都不知道改哪里,想来还是要自己写一个loader...

微星Z490如何装Windows10系统以及怎么设 BIOS

小晨儿今天给大家讲一下msi微星Z490重怎样装系统以及怎么设置BIOS。一、安装前的准备工作1、一、安装前的准备工作1、备份硬盘所有重要的文件(注:GPT分区转化MBR分区时数据会丢失)2...

超实用!互联网软件开发人员不可不知的 Git 常用操作命令

在互联网软件开发的协作场景中,Git是不可或缺的版本控制工具。掌握其核心命令,能让代码管理效率大幅提升。本文精选Git高频实用命令,结合场景化说明,助你快速上手。仓库初始化与克隆...

AI项目的持续集成持续部署实践_ai 项目

在独立开发AI工具的过程中,笔者逐步实践了一套高效的软件项目持续集成与持续部署(CI/CD)流程。这套流程以Git、GitHub和Vercel为核心,实现了从代码提交到生产环境上线的全链路自动化。这篇...

总结几个常用的Git命令的使用方法

1、Git的使用越来越广泛现在很多的公司或者机构都在使用Git进行项目和代码的托管,Git有它自身的优势,很多人也喜欢使用Git。...