一.String创建的两种形式
1.通过new的当时
String str=new String();
2.不new的方式
String s1="";
二.new 和不new的方式的区别是什么
不new创建的字符串首先是拿着值去常量池中查找,是否有该内容,有就用常量池该字符串的地址,没有的话在常量池中创建并使用
new的方式创建的字符串首先在堆中创建并赋予字符串值,然后到常量池中查找,如果有就不做任何处理,如果没有就在常量池中开辟该字符串
三.String和Stirng Buffer、String Builder的区别
底层他们都是利用char[]数组开辟空间
关于字符串追加问题
String 需要追加元素 肯定五步走 1 开辟新的数组空间 2 老元素复制到新的空间中 3 改变数组对象存储的地址 4 回收老数组空间 5 给最后的空间赋值【追加】
StringBuffer/StringBuilder 底层开辟的空间个数等于字符串的长度+16缓冲区
StringBuffer/StringBuilder 追加元素 直接先存储到缓冲区中 追加连接效率高
四.StringBuffer和StringBuilder之间的区别
StringBuffer 同一时间允许一个线程进行访问 效率较低 但是不会产生并发问题
StringBuilder 同一时间允许多个线程进行访问 效率较高 但是可能产生并发问题
五.String中常用的20个方法
跟长度相关 1个
int类型的
length() :
返回字符串的长度[字符的个数] 和密码校验有关
跟数组相关 3个
byte[]返回类型
1. getBytes() :
byte[] getBytes() : 使用自己电脑的默认字符集【编码】将此 String 编码为 byte 序列。 ascii 一个字母 - 一个字节 / 一个汉字 - 两个字节 unicode 一个字母 - 两个字节 / 一个汉字 - 两个字节 【 char 】
char[]类型的
2.toCharArray()
char[] toCharArray() : 打碎字符串 放入一个 char[] char[] 的大小 == 字符串的长度
String[]类型的
3.split(String x):
String[] split(String x) : 按照指定的内容劈开字符串 打碎 String[] split("") "hello".split("") => [][]["h"] ["e"] ["l"] ["l"] ["o"] 如果要劈开的内容 x 在最开始出现一次 最前面多留一块空间 空间的内容是 "" 【空串】 如果要劈开的内容 x 在最后始出现一次 最后不会多留空间 如果要劈开的内容 x 在中间连续出现两次 中间多留一块空间 空间的内容是 "" 【空串】
注意:
利用split也能打碎字符串 为String 双引号类型””,而toCharArray 是单引号的char类型
和判断相关5个
1. boolean equals(String)
判断调用者和参数是否内容一样[精准匹配]
应用场景:密码精准匹配
2 boolean equalsIgnoreCase(String)
忽略大小写的比较
3 boolean contains(String s);
调用者字符串中是否包含s
参数字符串s在调用者中连续存在 并且参数字符串的长度要小于等于调用者字符串的长度
4 startsWith(String):
是否以指定内容开头
5 endsWith(String);
是否指定内容结尾
与改变内容相关【接收!】4个
1 toUpperCase();
将所有内容 字母变成大写
2 toLowerCase();
将所有内容 字母变成小写
3 String replace(String x,String y);
将所有的x 替换成y
4 String replaceAll(String regx,String y);
第一个可以传入正则表达式 --范围
[]---》表示某一个位置的范围
[a-z] 小写字母
[A-Z]
[a-zA-Z] 所有字母
[\u4e00-\u9fa5] 所有中文范围
S1=s1.replaceAll(“[a-zA-Z]”,”*”);//表示 是字母就替换成*
和下标有关的3个
1 charAt();
定位到每一个字符 charAt(int Index);返回的char类型 范围【0,str.length()-1】
2 indexOf(String str)
判断参数内容第一次出现的内容 没找到返回-1
3 lastIndexOf(String);
返回参数内容所在的位置【最后一次】
2和3 来判断 当前内容只出现一次
Boolean matches(String regx); 这个很牛的
正则表达式
标签:10,java,String,char,内容,长度,字符串,new From: https://blog.csdn.net/Miserables_/article/details/143017965正则表达式
"[A-Z]" 大写
"[a-z]" 小写
"[0-9]" 数字 "\\d"
"[\u4e00-\u9fa5]" 中文[a-z]{1} => [a-z] 校验一位
[a-z]{3} => [a-z] 校验长度是3 + 每一个字符必须是a-z
[a-z]{3,5} => [a-z] 校验长度[3-5] + 每一个字符必须是a-z
[a-z]{3,} => [a-z] 校验长度>=3 + 每一个字符必须是a-z