字符串内部
学习如何访问字符串中的各个元素。
集合
集合是一个通用术语,用于将多个值组合成一个整体。我们在现实生活中经常使用集合——一本书是页面的集合,一列火车是车厢的集合,一个衣柜是衣物的集合。
字符串
字符串是由字符组成的集合,通常被视为一个单一单元。字符串用于存储诸如姓名、地址、消息等文本值。
字符串的初始化
以下程序演示了字符串的初始化:
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返回字符串中指定索引位置的字符。