String类被称为不可变字符序列,位于Java.lang包中,是核心类
String类不能被继承:public final class String;String类只能被初始化一次:private final char value[];
Java字符串是Unicode字符序列
String类创建:String str = "abc";String str = new String("abc");String str = "abc"+"def"(字符串连接符,“+”左右只要有一个数据是字符串就按照字符串处理,例如String str = "18"+19的结果为1819)。
Java内存分析———常量池:
- 全局字符常量池(String Pool):类加载完成后存入,存放字符串常量的引用值,即在堆中生成字符串对象实例。
- class文件常量池(Class Constant Pool):编译阶段,存放常量(文本字符串,final常量等)和符号引用。
- 运行时常量池(Runtime Constant Pool):类加载完成之后,每个class常量的符号引用值转入运行时常量池。每个class都有一个运行时常量池,类在解析后将符号引用转为直接引用。
String str1 = "abc"; //指向常量池中常量“abc”
String str2 = "abc"; //指向常量池中常量“abc”
String str3 = new String("abc"); //新建对象赋值“abc”
System.out.println(str1 == str2); //true
System.out.println(str1 == str3); //false
注:比较字符串通常使用“equals”
String类常用的方法1:
- System.out.println(s1.charAt(3))(返回指定下标的字符)
- System.out.println(s2.length())(返回字符串的长度)
- System.out.println(s1.equalsIgnoreCase(s2))(比较两字符串,忽略大小写)
- System.out.println(s1.indexOf("Java"))(字符串中是否包含指定字符串,若存在返回第一次出现位置,否则返回-1)
- String s = s1.replace(' ', '&')(将字符串s1中的空格用‘&’替换)
String类常用方法2:
String s = "";
String s1 = "How are you?";
System.out.println(s1.startsWith("How")); //是否以How开头
System.out.println(s1.endsWith("you")); //是否以you结尾
s = s1.substring(4); //提取字符串,从下标4开始到字符串结束位置
System.out.println(s);
s = s1.substring(4, 7); //提取字符串,从下标4开始到下标7结束,不包含7
System.out.println(s);
s = s1.toLowerCase(); //转小写
s = s1.toUpperCase(); //转大写
String s2 = " How old are you?? ";
s = s2.trim(); //去除字符串首尾空格,中间空格不能去除