String类
一、如何创建String对象
创建一个字符串对象的方式有三种:
String s1="CSDN";// 使用字符串常量“CSDN”创建一个字符串对象并命名为s1
String s2= new String();//使用new关键字创建字符串对象并命名为s2,字符串的值为空串
String s3= new String("CSDN");//使用字符串常量‘CSDN’创建对象,会先去常量池中查看‘CSDN’字符串是否存在,存在直接使用创建对象,不存在先创建字符串,再创建对象,并命名为s3
二、String对象的常用方法
方法 | 简单说明用途 |
---|---|
int length() | 返回当前这个字符串的长度 |
int indexOf(int ch) | 查找传入的 ch 字符在字符串中第一次出现的位置 |
int indexOf(String str) | 查找传入的 str 子字符串在字符串中第一次出现的位置 |
int lastIndexOf(int ch) | 查找传入的 ch 字符在字符串中最后一次出现的位置 |
int lastIndexOf(String str) | 查找传入的 str 子字符串在字符串中最后一次出现的位置 |
String substring(int beginIndex) | 获得从beginIndex 位置开始到结束的子字符串 |
String substring(int beginIndex, int endIndex) | 获得从beginIndex 位置开始到endIndex位置的子字符串 |
String trim() | 返回一个字符串,功能去除字符串的前后空格 |
boolean equals(Object obj) | 字符串与指定的字符串比较,返回true 或 false |
String toLowerCase() | 字符串转换成小写形式 |
String toUpperCase() | 字符串转换成大写形式 |
char charAt(int index) | 获取字符串指定位置的字符 |
String[] split(String regex.int limit) | 传入的字符串分割成子字符串,返回字符串数组 |
byte[] getBytes() | 将字符串转换成byte数组 |
方法使用如下:
package com.project.string;
public class StringDemo1 {
public static void main(String[] args) {
// 定义一个字符串"JAVA 编程 基础"
String str="JAVA 编程 基础";
//打印输出字符串的长度
System.out.println("字符串的长度是:"+str.length());
//取出字符'程'并输出
System.out.println(str.charAt(6));//同数组一样从0开始索引
//取出子串'编程 基础'并输出
System.out.println(str.substring(5));
//取出子串'编程'并输出
System.out.println(str.substring(5,7));//[5,7)
}
}
结果如下:
package com.project.string;
public class StirngDemo2 {
public static void main(String[] args) {
//定义一个字符串"JAVA编程基础,我喜欢java编程"
String str=new String("JAVA编程基础,我喜欢java编程");
//查找字符'A'在字符串第一次出现的位置
System.out.println("查找字符'A'在字符串第一次出现的位置为:"+str.indexOf('A'));
//查找子串'编程'在字符串中第一次出现的位置
System.out.println("查找子串'编程'在字符串中第一次出现的位置为:"+str.indexOf("编程"));
//查找字符'A'在字符串最后一次出现的位置
System.out.println("查找字符'A'在字符串最后一次出现的位置为:"+str.lastIndexOf('A'));
//查找子串'编程'在字符串中最后一次出现的位置
System.out.println("查找子串'编程'在字符串中最后一次出现的位置为:"+str.lastIndexOf("编程"));
//在字符串index值为8的位置开始,查找子串'编程'第一次出现的位置
System.out.println("在字符串index值为8的位置开始,查找子串'编程'第一次出现的位置为:"+str.lastIndexOf("编程",8));
}
}
结果如下:
字符串与 byte 数组间的相互转换
public class StringDemo3 {
public static void main(String[] args) {
//字符串 和 byte 数组之间的相互转换
//定义一个字符串
String str=new String("JAVA 编程 基础");
byte[] arr=str.getBytes();
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
//将byte数组转换为字符串
String str1= new String(arr);
System.out.println(str1);
}
}
结果如下:
三、== 和 equals 方法的区别
package com.project.string;
public class StringDemo4 {
public static void main(String[] args) {
//== 和 equals 方法的区别
//定义三个字符串,内容都是SCND
String str1="SCDN";
String str2="SCDN";
String str3=new String("SCDN");
System.out.println("str1 和 str2 的内容相同嘛?"+str1.equals(str2));
System.out.println("str1 和 str3 的内容相同嘛?"+str1.equals(str3));
System.out.println("str1 和 str2 的地址相同嘛?"+(str1==str2));
System.out.println("str1 和 str3 的地址相同嘛?"+(str1==str3));
}
}
结果如下:
四、String的不可变性
package com.project.string;
public class StringDemo5 {
public static void main(String[] args) {
//String的不可变性
//String对象一旦被创建,则不能修改,是不可变的
//所谓的修改其实是创建了新的对象,所指的内存空间不变
String s1="CSDN";
s1="Hello,"+s1;
//s1不再指向CSDN所在的内存空间,而是指向了"Hello,CSDN"
}
}