在c语言中要使用字符串,只能通过字符指针或者字符数组,然后再通过函数进行各种操作,这种将变量和变量方法分开的方式显然不符合面向对象的编程,所以java中添加了String这个类
String类构造
而对于string有很多的方法
字符串长度的计算,.length()
String只是一种类,而字符串的储存其实是储存在字符数组中的
字符串之间的比较
如果用==直接比较,那么比较的就是俩字符串之间地址,若要比较俩字符串的值,那么就要使用
equals去比较,返回值是boolean类型
compareTo 返回值是int类型
若俩字符相同,那么就返回0 ,若不相同,就放回引用对象于参数字符的不同字符之间的差值
也就是one - two 对应的不同的就是 H - h
字符串查找
得到字符串下标对应的字符,charAt(int)
indexOf(), 查找字符,若出现着放回第一次出现的位置,若没有着放回-1,参数也可以是字符串
会放回字符串对应的第一个字符所对应的位置
可以以在加一个整形类型的参数,表示重这个地方开始查找
第一个参数也可以传数字,会根据字符对应ascll码值进行查找
数字与字符串数字之间的转换
数字 ---> 字符串
valueOf()
字符串 ---> 数字
转为int类型 Integer.parseInt()
转为Double类型,Double.parseDouble()
大小写转换
toLowerCase() toUpperCase()
字符串转数组
toCharArray()字符串转数组
格式化创建数组
String.format() 将对应的参数插入占位符后的字符串就是最终初始化的字符串
字符串替换
replaceall 和 replacefirst
第一个参数regex 是要替换的元素,第二个replacement是要替换成的元素
replaceall是替换所有的regex为replacement
replacefirst是替换第一个regex 为 replacement
replace和replaceall的结果一样,只不过replaceall支持正则表达式,而replace不支持
字符串拆分 split
以参数regex拆分放到数组中,会删除regex对应字符,若参数后面无数字参数,那么就会全部都拆开,若有数字参数,那么就会按该参数的值来确定分为多少组
字符串截取 substring(begin,end)
截取范围包前不包后
去掉俩边的空格 trim()
会保留中间的空格
字符串修改
String类在设计时就是不可修改的
字符串是常量,其值在创建后不能更改。
储存字符串的变量使用了private修饰,说明它不能被直接引用,而String类中也没有能直接修改value这个数组的方法,所以无法修改
而所有涉及字符串修改的代码都是新创建一个对象,将修改好的值放到新对象中,再把新对象赋给该变量
对于字符串的修改应该避免直接 += 这样会创建新对象效率底下
这时我们就可以借助StringBuffer 和 StringBuilder着俩个类
着俩个类内置的方法和String一样,且更多
可以使用append去在字符串末尾添加字符
使用insert在指定位置之前插入
使用delete删除字符
删除【HA ,ha)这个区间的字符
而这俩个的类的差别是StringBuffer更适合多线程工作,更安全
StiringBuilder为采用同步处理,属于线程不安全工作
若要频繁修改字符串那么可以考虑使用StiringBuilder
END