字符串变量
String s;
String是一个类,String的变量是对象的管理者而非所有者。
创建String对象
String str = new String("a string");
- 创建了一个String对象
- 用"a String"初始化这个对象
- 创建管理这个对象的变量str
- 让str管理这个对象
初始化字符串变量
String str1 = "abc";
String str2 = "abc";
String str3 = "abc";
String str4 = new String("abc");
String str5 = new String("abc");
String str6 = new String("xyz");
字符串连接
system.out.println("hello"+"world");
- 直接用 + 连接两个字符串
- 有一个是非双引号包裹字符串的形式,则从堆中开辟一个新的区域保存常量
String s1 = "hell" + "o";
String s2 = "h" + "ello";
System.out.println(s1==s1);//true
System.out.println(s1=="hello");//true
System.out.println(s2=="hello");//true
//-----------------------
String c1 = "ab";
String c2 = c1 + "c";
System.out.println(c2=="abc");//false
- 当 + 两边一边是字符串一边不是时,会将另一边表达为字符串然后连接
需注意字符串在左边还是右边- 1 + 2 +“age” —> “3age”
- “age” + 1 + 2 —> “age12”
字符串的输入
Scanner in = new Scanner(System.in);
in.next();//读入一个单词,结束的标志是空格、tab或换行
in.nestLine();//读入一行字符串,结束的标志是换行
in.close();//IO流的对象用完要记得关闭,以免占用资源
字符串的比较
if(input == "bye"){
//比较是否是同一个(存储地址是否相同)
}
if(intput.equals("bye")){
//比较内容是否相同
}
对字符串的操作
字符串是对象,对它的操作都是通过"."这个运算符进行的
String大小的比较
s1.compareTo(s2);
//如果s1比s2小(大),那么结果是负(正)的,相等为0;
s1.compareToIgnorecase(s2);
//不区分大小写的比较
获得String的长度
str.length();
访问String里的字符
str.charAt(index);
//返回在index上的单个字符,和数组一样,index从0开始
//不能用for-each循环来遍历字符串
得到子串
str.substring(n);
//得到从n号位置到末尾的全部内容
str.substring(a,b);
//得到从a号位置到b号位置之间的内容
寻找字符
str.indexOf(c);
//得到字符c所在的位置,-1表示不存在
str.indexOf(c,n);
//从n号位置开始寻找c字符
str.lastIndexOf(c);
str.lastIndexOf(c,n);
//从右边开始寻找
其他String操作
s.startsWith(t);//是否以字符串起始
s.endWith(t);//是否以字符串t结尾
s.trim();//删除两端空格
s.replace(c1,c2);//将c1替换为c2
s.toLowerCase();//将字符串中字母变为小写
s.toUpperCase();//将字符串中字母变为大写
不可变的String
所有的字符串都是不可变的,对它们操作的结果都是制造新的字符串出来,常改变的字符串最好不要用String