字符串常量池:存放字符串的容器
字符串常量池在哪儿:根据jdk的不同
1字符串( 不可变 字符串是指不可变地址)
2字符串等值比较: 避免数据频繁的创建和销毁,提高效率。
定义字符串两种方式
1String a= "3";
String b = new String ("3");
这里的a和b是不等的他们两个的地址是不同的
所以在比较两个字符串时
按ctrl 可以点进去 this指方法的调用者
字符串中的方法
1取子串
2
字符串:
new
new:表示的是重新开辟一个新的空间
String a =new String("aaa");
---------
String a =“aaaa";
String b =“aaaa";
a==b;//为TRUE,因为他们引用的是同一个地址的值
String c =new String("aaa");
String d =new String("aaa");
c==d;//为FALSE,因为new是新开辟的空间,所以c和d 的引用地址是不同的。
1、获取子串
substring()方法
String aa="dashsjdhaus";
String b=aa.substring(2,4);//前闭后开[2,4)2、3
2、检测字符串是否相等
引用类型==引用类型 表示两个引用类型,引用的地址是同一个地址的数据,是同一个就返回TRUE,不是返回FALSE
a、c为两个字符串(引用类型)a==c比较的是两个字符串所存储的地址是否相同,a.equals(c)是比较两个值是否相等。
使用equals()方法判断字符串是否相等
“hello”.equals("hello");
“hello”.equalslgnoreCase("hello");//不区分大小写
package asjs;
public class eg {
public static void main(String[] args) {
String a ="hoeoollo";//字面量定义
//string常用的办法
//长度
System.out.println(a.length());
//获取指定字符
System.out.println(a.charAt(1));
//获取指定字符的编码值
System.out.println(a.codePointAt(1));
//判断是否是以 " "中的结尾 endsWith(" ")
System.out.println(a.endsWith("o"));
//判断是否是以 " "为前缀 startsWith(" ")
//判断是否是包含 " "为 contains(" ")
//indexOf("")找第一次出现位置 如果没有则返回-1
//indexOf("",4)跳过四个字符找第一次出现位置 如果没有则返回-1
//lastIndexOf("") 在第10个位置反向搜索,找最后一次出现的位置 如果没有则返回-1
System.out.println(a.lastIndexOf("o",10));
}
}
3正则表达式
. 表示任意字符
\d代表0-9数字
\D代表非数字
\s代表空白字符
/S代表非空白字符
\w代表所有单词
\W代表非单词
^前缀以什么开头
$后缀以什么结尾
[]灵活写法 自定义字符
频率修饰词
?代表最多一次
*代表人一次
+代表至少一次
{m,n}灵活写法 自定义次数 其中m最少次数n最多次数 只有一个代表只能是那个数
4可变字符串
package asjs;
public class eg {
public static void main(String[] args) {
StringBuilder str = new StringBuilder("qwer");
System.out.println(str);
//替换
String hh = "sss";
hh.replace("s", "12");
System.out.println(hh);
//添加
str.append("qwer");
StringBuilder ass= str.insert(2, "haha");
System.out.println(ass);
//删除
str.delete(1, 2);
System.out.println(str.delete(1, 2));
//删除指定字符
str.deleteCharAt(3);
//修改制定字符
str.setCharAt(2, 's');
System.out.println(str);
//查
System.out.println(str.charAt(2));
//反转
str.reverse();
System.out.println(str.reverse());
//替换
System.out.println(str.replace(0, 2, "666"));
}
}
package asjs;
public class eg {
public static void main(String[] args) {
String a ="hello";//字面量定义
//String b = new String ("123"); //面向对象定义
//System.out.println(a.equals(b));
//System.out.println(a==b);
//substring截取子串
System.out.println(a.substring(1,5));
//数值是否相等equals 空串" "和null不一样
}
}