String类
1.概念:
由多个字符组成的一串数据,值一旦创建就不改变,一旦改变就会创建一个新的对象;
2.String对象的创建方法
● 第一种:
String s = “abc”;
先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找
有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中
的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建.
● 第二种:
一概在堆中创建新对象,值存储在堆内存的对象中。
String s = new String(“abc”);
3.String所提供的各种方法
1.获取方法
package stringDemo2;
public class gain {
public static void main(String[] args) {
String str = "abcdefg";
System.out.println(str.length());//返回字符串长度(return value.length;)
System.out.println(str.charAt(1));//输入index索引返回该索引位置的字符(char);
System.out.println(str.indexOf("c"));//返回该字符的索引,(从前往后找,只返回首次找到的字符索引);
System.out.println(str.indexOf("c", 4));//返回该字符的索引,(从指定位置往后找,只返回首次找到的字符索引);
System.out.println(str.lastIndexOf("c"));//从后往前找,同上;
}
}
-
输出
-
7 b 2 -1 2
2.截取方法
package stringDemo2;
public class cut out {
public static void main(String[] args) {
String str="abcdefg";
System.out.println(str.substring(3));//返回该索引往后的字串
System.out.println(str.substring(2,6));//返回从start到end的字符(start包含end不包含);
}
}
-
输出
-
defg cdef
3.转换方法
package stringDemo2;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class zhuanhuan {
public static void main(String[] args) throws UnsupportedEncodingException {
String str="中国";
byte b[]=str.getBytes("gbk");//将字符串转化为指定编码,并将字符串储存于字节数组(注:解码的编码要与译码时相同)
System.out.println(Arrays.toString(b));
String s=new String(b,"gbk");//解码过程
System.out.println(s);
String s1="abcd";
char[] chars=s1.toCharArray();//将字符串转化为字符并储存在字符数组中;
System.out.println(Arrays.toString(chars));//以字符数组形式输出;
String s2=new String(chars);//还原
String s3=String.valueOf(chars);//还原
System.out.println(s2);
System.out.println(s3);
}
}
-
输出
-
[-42, -48, -71, -6] 中国 [a, b, c, d] abcd abcd
4.判断方法
package stringDemo2;
public class judge{
public static void main(String[] args) {
String str1="abcdefg";
String str2="abcdefg";
String str3="AbcdefG";
String str="abc";
String s= "";
// String s1=null;
System.out.println(str1.equals(str2));//比较字符串内容是否相同(返回类型:boolean);
System.out.println(str1.equalsIgnoreCase(str3));//比较字符串内容是否相同(不区分大小写)(返回类型:boolean);
System.out.println(str1.contains(str));//是否包含子串(连续)(返回类型:boolean);
System.out.println(s.isEmpty());//判断字符串是否为空串(返回类型:boolean);NULL并非空串;
System.out.println(str1.startsWith("abc"));//判断字符串是否以该字串开头;(返回类型:boolean)
System.out.println(str1.endsWith("efg"));//判断字符串是否以该字串结尾;(返回类型:boolean)
System.out.println(str1.compareTo(str3));//比较两字符串大小;
// (若长度相同则返回不同值的asc值之差)(字符串长度不同则返回length之差);(返回类型:int);
}
}
-
输出
-
true true true true true true 32
5.替换方法
package stringDemo2;
public class tihuan {
public static void main(String[] args) {
String str=" abcde1a3f5g ";
String str1=str.replace("a","A");//替换连续子串;
System.out.println(str1);
String str2=str.replaceAll("\\d","A");//正则”模式匹配“替换
System.out.println(str2);
String str3=str.replaceFirst("\\d","A");//正则”模式匹配“替换第一次出现的regex;
System.out.println(str3);
String str4=str.trim();//去除字符串两端” “空格;
System.out.println(str.length());
System.out.println(str4.length());
}
}
-
输出
-
Abcde1A3f5g abcdeAaAfAg abcdeAa3f5g 13 11