String一、班级结构

今天我们就来说说String课堂。在 ints 之后,String 类是 Java 中最受欢迎的类。它绝对无处不在。它有许多有用的方法,您最好了解这些方法。

该类String是除原始类型之外唯一可以在switch语句中使用文字的类;编译器以特殊方式处理字符串加法和 String 对象;String对象以特殊的方式存储在内存中。基本上,String班级是一个非常特殊的班级。

此外,该类String还有一堆辅助类,其目的是进一步简化 Java 中字符串的处理。当你学会了这一切,很多事情对你来说真的会变得容易多了。好吧,我们将从这个生态系统的核心开始——班级的组织String

字符数组

类的结构String其实很简单:里面是一个字符数组(char array),里面存放了字符串的所有字符。例如,这是单词“Hello”的存储方式:

String类的结构
重要的!

其实,这并不完全准确。因为这个String类非常重要,它使用了很多优化,并且数据在内部存储的不是字符数组,而是简单的字节数组。


2.String类的方法

该类String有很多方法:仅它就有 18 个构造函数!所以下面我们只提到其中最基本的:

方法 描述
int length()
返回字符串中的字符数
boolean isEmpty()
检查字符串是否为空字符串
boolean isBlank()
检查字符串是否仅包含空白字符:空格、制表符、换行符等。
char charAt(int index)
返回字符串中索引位置的字符。
char[] toCharArray()
返回组成字符串的字符数组(副本)
byte[] getBytes()
将字符串转换为一组字节并返回字节数组。
String[] split(String regex)
将字符串拆分为多个子字符串。
String join(CharSequence delimiter, elements)
将多个子字符串连接在一起
String intern()
将字符串放入string pool.

您可以在Java 构造函数一文中了解有关构造函数的更多信息。

让我们编写一个程序,将文件路径从 Unix 风格转换为 Windows 风格。Unix 使用/字符分隔文件夹,而 Windows 使用字符\

解决方案 1:使用 char 数组

代码 笔记
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
创建一个 Scanner 对象
从控制台读取一行

将字符串转换为字符数组
在字符上循环
如果字符是/
则将其替换为\. 不要忘记逃跑。

根据字符数组创建一个新字符串。
显示字符串。

解决方案 2: — 使用split()join()方法

代码 笔记
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String[] array = path.split("/");


String result = String.join("\\", array);


System.out.println(result);
创建一个 Scanner 对象
从控制台读取一行

Convert string to array of strings。该/字符用作分隔符(额外的两个斜杠是双重转义的结果)。连接字符串数组
中的所有字符串。用作分隔符(我们看到它转义了)。 显示字符串。 \

解决方案 3: — 使用replace(char oldChar, char newChar)方法

代码 笔记
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
创建一个 Scanner 对象
从控制台读取一行

只需将一个字符替换为另一个字符
(第二个字符被转义)
显示字符串。