String类
- String类又叫做不可变字符序列
- String位于java.lang包中,程序默认导入java.lang包下的所有类
- java字符串是Unicode字符序列(相当于字符数组)
- java没有内置的字符串类型,而是在标准java库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例
- ”+“运算符两侧的操作数只要有一个是字符串类型,则系统会自动将另一个操作数转换为字符串然后再进行连接
使用方法如下:
String str = "abc";
String str2 = new String("def");
String str3 = "abc"+"defgh";
String str4 = "18"+19;
常量池
- 全局字符串常量池
类加载完成后存放到String Pool中,每个VM中只有一份,放的是字符串常量的引用值
(在堆中生成字符串对象实例) - class文件常量池
编译的时候每个class都有,在编译阶段,存放的是常量(文本字符串,final常量等)和符号引用 - 运行时常量池
类加载完成后,将每个class常量池中的符号引用值转存到运行时常量池中——即每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致
package text;
public class text01 {
public static void main(String[] args) {
String str = "abc";
String str2 = new String("def");
String str3 = "abc"+"defgh";
String str4 = "18"+19;
System.out.println(str4);
System.out.println("———————————————————我是分隔符——————————————————————————");
String str10 = "你好";
String str11 = "你好";
String str12 = new String("你好");
System.out.println(str10 == str11);
System.out.println(str12 == str11);
System.out.println(str12.equals(str11));
}
}
String类的常用方法
package text;
public class text01 {
public static void main(String[] args) {
String s1 = "Java";
String s2 = "Java";
System.out.println(s1.charAt(2));
System.out.println(s2.length());
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.indexOf("Java"));
System.out.println(s1.indexOf("apple"));
String s = s1.replace(' ', '&');
System.out.println("result is :" + s);
String s = "";
String s1 = "How are you?";
System.out.println(s1.startsWith("How"));
System.out.println(s1.endsWith("you"));
s = s1.substring(4);
System.out.println(s);
s = s1.substring(4, 7);
System.out.println(s);
s = s1.toLowerCase();
System.out.println(s);
s = s1.toUpperCase();
System.out.println(s);
String s2 = " How old are you!! ";
s = s2.trim();
System.out.println(s);
System.out.println(s2);
}
}