Logo
Section 1 / 6

字符串内部

学习如何访问字符串中的各个元素。

导入

字符串内部

学习如何访问字符串中的各个元素。

集合

集合是一个通用术语,用于将多个值组合成一个整体。我们在现实生活中经常使用集合——一本书是页面的集合,一列火车是车厢的集合,一个衣柜是衣物的集合。

字符串

字符串是由字符组成的集合,通常被视为一个单一单元。字符串用于存储诸如姓名、地址、消息等文本值。

字符串的初始化

以下程序演示了字符串的初始化:

1class Test 2{ 3 public static void main(String[] args) 4 { 5 String string1 = "It is a string"; 6 System.out.println(string1); 7 } 8}

在第5行中,我们使用双引号 "" 声明 string。

访问字符串中的字符

Java 允许我们通过整数 索引 来访问字符串中的单个字符。方法是使用 charAt 方法并传入索引数字,如下所示的程序:

1class Test 2{ 3 public static void main(String[] args) 4 { 5 String string1 = "Educative"; 6 System.out.println(string1); 7 8 System.out.println(string1.charAt(0)); // 显示字符串的第一个元素 9 System.out.println(string1.charAt(1)); // 显示字符串的第二个元素 10 System.out.println(string1.charAt(2)); // 显示字符串的第三个元素 11 System.out.println(string1.charAt(3)); // 显示字符串的第四个元素 12 System.out.println(string1.charAt(4)); // 显示字符串的第五个元素 13 System.out.println(string1.charAt(5)); // 显示字符串的第六个元素 14 System.out.println(string1.charAt(6)); // 显示字符串的第七个元素 15 System.out.println(string1.charAt(7)); // 显示字符串的第八个元素 16 System.out.println(string1.charAt(8)); // 显示字符串的第九个元素 17 } 18}

上述代码逐行显示字符串的各个字符。第一个字符位于索引 0,索引沿字符串线性递增,如以下图示:

字符串字符及其索引

相同的程序也可以使用循环重写,以完成相同任务:

1class Test 2{ 3 public static void main(String[] args) 4 { 5 String string1 = "Educative"; 6 int length = 9; 7 8 for (int i = 0; i < length; i++) 9 { 10 System.out.println(string1.charAt(i)); 11 } 12 } 13}

字符串连接

使用 + 运算符将两个字符串连接起来称为连接,如下代码所示:

1class Test 2{ 3 public static void main(String[] args) 4 { 5 String str1 = "Hello"; 6 String str2 = "Educative"; 7 String str3 = str1 + str2; 8 String str4 = str1 + " " + str2; 9 10 System.out.println("str1: " + str1); 11 System.out.println("str2: " + str2); 12 System.out.println("str3: " + str3); // 无空格连接 13 System.out.println("str4: " + str4); // 有空格连接 14 } 15}

在上述代码中:

  • 第7行:我们将 str1 和 str2 连接,并将结果存储在 str3 中。两个单词被连接但没有空格。
  • 第8行:我们将 str1、" " 和 str2 连接,并将结果存储在 str4 中。两个单词之间有一个空格。

字符串操作练习

以下是几个用于练习 Java 中字符串操作的示例程序。点击“显示答案”按钮将显示解决相应问题的程序。您可以将给出的解决方案复制粘贴到代码编辑器中,以确保您的输出与给定解决方案一致。编程中可能存在多种正确的解决方案。

反向打印字符

编写一个程序,逐行反向显示字符串中的字符。

示例输入

1"Educative"

示例输出

1e 2v 3i 4t 5a 6c 7u 8d 9E
1class Test 2{ 3 public static void main(String[] args) 4 { 5 // 请在此处编写代码 6 } 7}

您可以在上方的代码编辑器中运行以下代码:

1class Test 2{ 3 public static void main(String[] args) 4 { 5 String string1 = "Educative"; 6 7 System.out.println(string1.charAt(8)); 8 System.out.println(string1.charAt(7)); 9 System.out.println(string1.charAt(6)); 10 System.out.println(string1.charAt(5)); 11 System.out.println(string1.charAt(4)); 12 System.out.println(string1.charAt(3)); 13 System.out.println(string1.charAt(2)); 14 System.out.println(string1.charAt(1)); 15 System.out.println(string1.charAt(0)); 16 } 17}

在上述程序中:

  • 我们使用变量 string1 存储文本 Educative。
  • 我们从最后一个索引开始,反向显示 string1 的各个字符。
  • string1.charAt 返回字符串中指定索引位置的字符。

或者

您也可以在上方的代码编辑器中运行以下代码:

1class Test 2{ 3 public static void main(String[] args) 4 { 5 String string1 = "Educative"; 6 7 for (int i = 8; i >= 0; i--) 8 { 9 System.out.println(string1.charAt(i)); 10 } 11 } 12}

在上述程序中:

  • 我们使用变量 string1 存储文本 Educative。
  • 我们使用索引和 for 循环反向显示 string1 的各个字符。

左移字符串中的字符

编写一个程序,将字符串中的字符向左移动,并用句点替换最后一个位置。

示例输入

1"Educative"

示例输出

1ducative.

提示:使用字符串连接。

1class Test 2{ 3 public static void main(String args[]) 4 { 5 // 请在此处编写代码 6 } 7}

您可以在上方的代码编辑器中运行以下代码:

1class Test 2{ 3 public static void main(String args[]) 4 { 5 String str1 = "Educative"; 6 String str2 = ""; 7 str2 += str1.charAt(1); 8 str2 += str1.charAt(2); 9 str2 += str1.charAt(3); 10 str2 += str1.charAt(4); 11 str2 += str1.charAt(5); 12 str2 += str1.charAt(6); 13 str2 += str1.charAt(7); 14 str2 += str1.charAt(8); 15 str2 = str2 + "."; 16 System.out.println(str2); 17 } 18}

在上述程序中:

  • 我们使用变量 str1 存储文本 Educative。
  • 然后,我们使用一个空字符串 str2。
  • str2 += str1.charAt(1) 将字符串连接并存储在 str2 中,该语句等价于 str2 = str2 + str1.charAt(1)。
  • str1.charAt 返回字符串中指定索引位置的字符。
  • 对其余索引重复上述步骤。
1class Test 2{ 3 public static void main(String args[]) 4 { 5 String str1 = "Educative"; 6 String str2 = ""; 7 str2 += str1.charAt(1); 8 str2 += str1.charAt(2); 9 str2 += str1.charAt(3); 10 str2 += str1.charAt(4); 11 str2 += str1.charAt(5); 12 str2 += str1.charAt(6); 13 str2 += str1.charAt(7); 14 str2 += str1.charAt(8); 15 str2 = str2 + "."; 16 System.out.println(str2); 17 } 18}

在上述程序中:

  • 我们使用变量 str1 存储文本 Educative。
  • 然后,我们使用一个空字符串 str2。
  • str2 += str1.charAt(1) 将字符串连接并存储在 str2 中,该语句等价于 str2 = str2 + str1.charAt(1)。
  • str1.charAt 返回字符串中指定索引位置的字符。
  • 对其余索引重复上述步骤。

反转字符串

编写一个程序,将字符串以相反顺序存储到另一个字符串中。

示例输入

1"Educative"

示例输出

1evitacudE
1class Test 2{ 3 public static void main(String args[]) 4 { 5 // 请在此处编写代码 6 } 7}

您可以在上方的代码编辑器中运行以下代码:

1class Test 2{ 3 public static void main(String args[]) 4 { 5 String str1 = "Educative"; 6 String str2 = ""; 7 str2 += str1.charAt(8); 8 str2 += str1.charAt(7); 9 str2 += str1.charAt(6); 10 str2 += str1.charAt(5); 11 str2 += str1.charAt(4); 12 str2 += str1.charAt(3); 13 str2 += str1.charAt(2); 14 str2 += str1.charAt(1); 15 str2 += str1.charAt(0); 16 System.out.println(str2); 17 } 18}

在上述程序中:

  • 我们使用变量 str1 存储文本 Educative。
  • 然后,我们使用一个空字符串 str2。
  • str2 += str1.charAt(8) 将字符串连接并存储在 str2 中,该语句等价于 str2 = str2 + str1.charAt(8)。
  • str1.charAt 返回字符串中指定索引位置的字符。
  • 对其余索引重复上述步骤。
1class Test 2{ 3 public static void main(String args[]) 4 { 5 String str1 = "Educative"; 6 String str2 = ""; 7 8 for (int j = 8; j >= 0; j--) 9 { 10 str2 += str1.charAt(j); 11 } 12 System.out.print(str2); 13 } 14}

在上述程序中:

  • 我们使用变量 str1 存储文本 Educative。
  • 然后,我们使用一个空字符串 str2。
  • 我们使用 for 循环从 str1 的最后一个索引 8 开始,逐个将字符添加到 str2,直到索引 0。

回文测试

回文是指正读和反读都相同的字符序列。编写一个程序,判断字符串是否为回文。字符串长度限制为五个字符。

示例输入 1

1"level"

示例输出 1

1Palindrome

示例输入 2

1"leve"

示例输出 2

1Not Palindrome
1class Test 2{ 3 public static void main(String args[]) 4 { 5 // 请在此处编写代码 6 } 7}

您可以在上方的代码编辑器中运行以下代码:

1class Test 2{ 3 public static void main(String args[]) 4 { 5 String str = "level"; 6 if (str.charAt(0) == str.charAt(4) && str.charAt(1) == str.charAt(3)) 7 { 8 System.out.println("Palindrome"); 9 } 10 else 11 { 12 System.out.println("Not Palindrome"); 13 } 14 } 15}

在上述代码中:

  • 我们使用变量 str 存储文本 level。
  • 我们比较字符串的第一个索引值与最后一个索引值,然后比较第二个索引值与倒数第二个索引值,作为条件表达式。
  • 如果条件表达式为真,则显示 Palindrome,否则显示 Not Palindrome。
  • str.charAt 返回字符串中指定索引位置的字符。

循环中的重复

值的数组