字符串
-
字符串变量和数组变量类似,它并不存放字符串,不是字符串的所有者,它是字符串的管理者。
Java的字符串还是一种特殊的“不可变”对象,所有的字符串操作都是产生一个新的字符串,而不是对原来的字符串的修改。
-
用双引号括起来的0个或多个字符就是一个字符串字面量
-
"hello"
-
"1"
-
""
字符串变量

注意:包裹类型的第一个字母也是大写的
new = 创建
String s = new String("a string"); //s去管理 a string内容的字符串
创建了一个String的对象
用”a string“初始化这个对象
创建管理这个对象的变量s
让s管理这个对象
初始化字符串变量
-
String s = "hello";
-
编译器帮你创建一个String类的对象交给s来管理
字符串连接

// 运算顺序从左到右 (都是+时)
-
"age"+1+2 //左边"age"+1是string字符串,而2为整数,结果为string,若要得到"age3"的结果,需改为"age"+(1+2)
输入字符串
-
in.next(); 读入一个单词,单词的标志是空格
-
空格包括空格、tab和换行
-
in.nextLine();读入一整行
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s;
s = in.next();
System.out.println(s);
}
}
// 输入This is a test.
// 结果为This
// 若s = in.next() 改为 s = in.nextLine()
// 输入This is a test.
// 结果为This is a test.
对象变量的赋值

//上面:指a和b共同管理了原来a管理的字符串
//下面:指b得到了a的值,这为两个独立变量
比较两个String
if( input == "bye"){
...
}
// 比较是否同一个
if( input.equals("bye")){
...
}
// 比较内容是否相同
-
Strings应该用 .equals 来比较
例:
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s;
s = in.next();
System.out.println(s);
System.out.println(s=="bye");
System.out.println(s.equals("bye"));
}
}
// 输入bye
// 输出bye
false
true
-
== 比较是否同一个
-
equals 比较内容是否相同
字符串操作

Strings大小的比较

import java.util.Scanner;
public class Demo07 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s1 = "abc";
String s2 = "abb";
System.out.println(s1.compareTo(s2));
System.out.println("abb".compareTo(s2));
}
}
获得String的长度
-
用length() 函数

访问String里的字符

import java.util.Scanner;
public class Demo08 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s1 = "abc";
System.out.println(s1.charAt(3)); //运行错误
System.out.println(s1.charAt(0)); //a
}
}
如何将s1的每一个字符单独打出来?
import java.util.Scanner;
public class Demo08 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s1 = "abc";
for( int i = 0; i < s1.length(); i++ )
{
System.out.println(s1.charAt(i));
}
}
}
得到子串

import java.util.Scanner;
public class Demo09 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s1 = "0123456789汉字";
System.out.println(s1.substring(2));
//第2个数之后的数 输出:23456789汉字
System.out.println(s1.substring(2,4));
//第2个数之后的数,第4个数之前的数 输出:23
}
}
寻找字符

import java.util.Scanner;
public class Demo09 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s2 = "0123A56789汉字";
System.out.println(s2.indexOf('4')); //-1 (不存在)
System.out.println(s2.indexOf('A')); //4
}
}
找字符所在位置
import java.util.Scanner;
public class Demo10 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s1 = "0123A56739汉字";
int loc = s1.indexOf('3');
System.out.println(s1.indexOf('3',loc+1));
//找第二个3 输出结果:8
System.out.println(s1.indexOf("A56"));
// 输出结果:4
}
}
其他String操作

不可变的String

例:
import java.util.Scanner;
public class Demo10 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s1 = "abcd";
String s2 = s2.toUpperCase();
System.out.println(s2); // ABCD
}
}
在switch—case中使用字符串

本文讲解了Java中字符串的不可变性质,介绍了如何创建、初始化字符串变量,字符串连接、输入处理,以及字符串操作如比较、长度获取、字符访问和子串提取。重点讨论了字符串作为不可变对象的特性及其实例应用。

被折叠的 条评论
为什么被折叠?



