网站首页 > java教程 正文
概述
String 是一种常见的类型,而 char 是 Java 中的基本类型。
在本教程中,我们将探讨如何在 Java 中将 String 对象转换为 char。
问题介绍
我们知道一个 char 只能包含一个字符。 但是,一个 String 对象可以包含多个字符。
因此,我们的教程将涵盖两种情况:
源字符串是一个单字符串。
源字符串是一个多字符串。
对于案例 1,我们可以轻松地将单个字符作为 char 获取。 例如,假设这是我们的输入:
String STRING_a = "a";
转换后,我们期望有一个字符“a”。
对于情况 2,如果源 String 是一个多字符的字符串,并且我们仍然希望得到一个单个字符作为结果,我们必须分析选择所需字符的需求,例如第一个、最后一个或 n- 第一个字符。
在本教程中,我们将介绍一个更通用的解决方案。 我们将源字符串转换为一个 char 数组,该数组包含字符串中的每个字符。 这样,我们可以根据需要选择任何元素。
我们将使用 STRING_Rejoice 作为输入示例:
String STRING_Rejoice = "Rejoice";
那么接下来,让我们看看实际的案例效果。
单字符串
Java 的 String 类提供 charAt() 从输入字符串中获取第 n 个字符(从 0 开始)作为 char。 因此,我们可以直接调用getChar(0)方法将单个字符串转换为char:
assertEquals('a', STRING_a.charAt(0));
但是,我们应该注意,如果输入是空字符串,则 charAt() 方法调用会抛出 StringIndexOutOfBoundsException(下标越界异常):
assertThrows(StringIndexOutOfBoundsException.class, () -> "".charAt(0));
因此,在调用 charAt() 方法之前,我们应该检查输入字符串是否为空或空。
多字符串
我们已经学会了使用 charAt(0) 将单个字符串转换为 char。 如果输入是一个多字符的字符串,并且我们确切地知道我们想要将哪个字符转换为字符,我们仍然可以使用 charAt() 方法。 例如,我们可以从输入字符串“Rejoice”中获取第四个字符('o'):
assertEquals('o', STRING_Rejoice.charAt(3));
此外,我们可以使用 String.toCharArray() 来获取包含所有字符的 char[] 数组:
assertArrayEquals(new char[] { 'R', 'e', 'j', 'o', 'i', 'c', 'e' }, STRING_Rejoice.toCharArray());
值得一提的是 toCharArray() 方法也适用于空字符串输入。 它返回一个空字符数组作为结果:
assertArrayEquals(new char[] {}, "".toCharArray());
除了 toCharArray(),String.getChars() 可以从给定的 String 中提取连续的字符到一个 char 数组中。 该方法接收四个参数:
srcBegin - 字符串中第一个字符的索引,包括在内
srcEnd – 要复制的字符串中最后一个字符的索引,不包含
dst - 目标数组,这是我们的结果
dstBegin – 目标数组中的起始偏移量。 我们将通过一个例子来讨论这个问题。
首先,让我们从字符串“Rejoice”中提取“joi”并将其填充到预定义的 char 数组中:
@Test
public void testGetChars(){
String STRING_Rejoice = "Rejoice";
char[] joi = new char[3];
STRING_Rejoice.getChars(2, 5, joi, 0);
assertArrayEquals(new char[] { 'j', 'o', 'i' }, joi);
}
如上面的测试所示,要调用 getChars(),我们首先应该有一个 char 数组来保存结果。
在示例中,当我们调用 getChars() 时,我们将 0 传递给 dstBegin。 这是因为我们希望转换后的结果从数组 joi中的第一个元素开始。
当然,有时,我们希望结果覆盖数组的中间部分。 然后我们可以将 dstBegin 设置为所需的值。
接下来,让我们看另一个将“joi”转换为字符并从第二个(索引=1)元素覆盖目标数组的示例:
@Test
public void testGetChars2(){
String STRING_Rejoice = "Rejoice";
char[] anotherArray = new char[] { '#', '#', '#', '#', '#', '#' };
STRING_Rejoice.getChars(2, 5, anotherArray, 1);
assertArrayEquals(new char[] { '#','j', 'o', 'i', '#', '#'}, anotherArray);
}
因此,正如我们所见,我们将 dstBegin=1 传递给该方法并获得预期的结果。
结论
在本文中,我们学习了如何在 Java 中将 String 转换为 char。
猜你喜欢
- 2024-10-01 Java中String类字符串拼接谁的效率最低
- 2024-10-01 100个Java工具类之2:字符串之多种个性化格式处理
- 2024-10-01 每天积累一点点(Java基础——》String类学习——one day)
- 2024-10-01 Java动态加载Jar实例解析(java动态加载类框架)
- 2024-10-01 Java中如何使用正则技术提取html中的任意内容
- 2024-10-01 Java String 常用方法,涵盖全部(java string的用法)
- 2024-10-01 「JavaWeb基础」文件上传和下载(修订版)
- 2024-10-01 浅谈Java中字符串的初始化及字符串操作类
- 2024-10-01 MySql字符串拆分实现split功能(字段分割转列、转行)
- 2024-10-01 Java,FreeMarker,模板引擎,通过案例代码,学懂模板引擎
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)