1.java.lang.String 使用了final修饰,不能被继承;
2.对象创建后,内容是不可改变的,一旦改变会创建新对象
字面量 直接量
* 编译器在编译该程序时若发现,一个表达式两边的内容都是确定值时,会直接进行计算,并将结果生成到字节码文件.
字符串支持String
内存编码及长度
char中文的范围:\u4e00--- \u9fa5: 编码从4e00到9fa5
int length() 字符串的该方法用来获取字符串中的字符个数,不管中文还是英文都是一个。
1)查找字符(串):
int indexOf(int ch) :查看给定的字符在当前字符串中的位置(第一次出现),若不包含, 返回-1
int indexOf(int ch, int fromIndex) : 从指定的索引开始搜索 “第一次”出现指定字符处的索引;
int indexOf(String str): 返回指定子字符串在此字符串中第一次出现处的索引。
int indexOf(String str,int start) 从指定的索引开始搜索类似还有lastIndexOf(..)
查看给定位置 对应字符 char charAt(int index)
2)截取字符串:String substring(int start,int end)方法用于截取字符串中的部分内容.
在java的api中有一个特点,凡是使用2个数字表示范围,通常都是含头不含尾.
String substring(int start) 若要截取到末尾,则不写end
3)拆分:
String[] split(String regex):将当前字符串中凡是满足正则表达式的部分就拆开。取出两边的内容。
若拆分的内容在字符串末尾连续匹配,是不会拆出空字符串的。其他位置的话中间都会拆出一个空字符串。
用户上传的图片重命名:
String name = "1.jpg";
String[] data = name.split("\\.");
String newname = System.currentTimeMillis()+"";//得到当前系统时间并转换为字符串
newname = newname+"."+data[1];//加上截取的后缀
System.out.println(newname);
4)判断:
boolean startsWith(String str):判断当前字符串是否以给定的字符串开始
boolean endsWith(String str):判断域名是否以:http://开头,判断文件格式.jpg, .gif, .png
5)替换:
String toUpperCase() :将字符串中的英文部分转换为大写或小写,可以用于忽略大小写的验证,例如验证码
String toLowerCase()
String replaceAll(String regex,String str):将当前字符串中满足给定的正则表达式的部分替换为给定的字符串。
6)其他:
static String valueOf():静态方法,类名.valueOf(参数).区别普通方法 对象.dosome();字符串提供了若干重载的valueOf方法,主要作用是将基本类型,字符数组转换为字符串.
reverse()反转
2.String Builder:
java提供了一个类StringBuilder,专门负责修改字符串内容
并且由于其内部维护一个可变长的字符数组,所以不会出现内存消耗问题.
insert插入 只要不是在字符串末尾追加,都算是插入
append(String str)
replace(int start, int end, String str)
delete(int start, int end)
void setLength(0); //清空缓存
3)清除内容中的空格:
str.replace(" ", ""); 去掉所有空格,包括首尾、中间
replaceAll(" +",""); 去掉所有空格 //正则空格字符
replaceAll("\\s*", "") 可以替换大部分空白字符, 不限于空格 \s 可以匹配空格、制表符、换页符等空白字符的其中任意一个
String、StringBuffer与StringBuilder之间区别:
a.执行速度方面的比较:StringBuilder > StringBuffer > String
b.线程安全:StringBuffer:线程安全的 StringBuilder:线程非安全的
* 编译器在编译该程序时若发现,一个表达式两边的内容都是确定值时,会直接进行计算,并将结果生成到字节码文件.
对于三者使用的总结:
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer