一 .String类的构造方式
简单了解常量池
前提 :什么是常量池??
池是一种常见的提高效率的方式,常量池是池的一种,还有内存池、线程池.....
经常使用的字面类型比如 1,2,3,“hello”.....,为了是程序的运行速度更快,更节省内存,Java 8为8中基本数据类型和String都提供了常量池。
1. 使用常量串构造
//假如常量池没用这个字符串 String s1 = "I love you. "; //1.在常量池没有找到这个常量 //2.在常量池中创建"I love you. "这个常量。 String s2 = "I love you. "; //1.在常量池中要到了"I love you. " //2.直接使用,不再创建
2. 使用newString对象
//假如常量池没用这个字符串 String s1 = new String("I love you. "); //1.在堆中开辟一块内存,常量池没有找到这个字符串 //2.在常量池中创建"I love you. "这个常量,并且堆中的内存指向这个常量 String s2 = new String("I love you. "); //1.在堆中开辟一块内存,常量池找到这个字符串,内存指向这个内存池的这个常量
3. 两种方式的特征区别
s1 == s2 ==s3;//s1和s2和s3引用的是同一个对象
s1 ! = s4;
s4 ! = s5;
s3.equal (s4)==true;
通过这些 要知道不同的方法创建一个字符串的过程是不同的,要详细清楚,两者的区别特点
二. 常用方法
1. String类型的比较
①通过 == 比较是否引用同一个对象,比如上图的引用
②boolean equal ( Object anObject ) 字典序比较
比较方法:先判断是否字符数是否相等,若相等按照字符大小顺序依次比较。
返回:boolean类型,只能判断是否相等
③int CompareTo (String S) 字典序比较
比较方法:先按照字典序比较,若出现不等字符,返回俩字符的大小差值,若k字符都相同(k较短字符串的字符长度)则返回字符串长度差值
返回:int 类型,相同返回 0
④ int compareToCase (String str)忽略大小写
于③int CompareTo (String S) 相同,只不过忽略字符的大小写!
2. 字符串查找
①char charAt(int index)
功能:返回index位置上字符,如果index越界,抛出 IndexOutOfBoundsException 异常
② int indexOf(int ch)
功能:返回ch第一次出现的位置,没有ch返回-1
③int indexOf(int ch , int fromalndex)
功能:从fromalndex位置开始找ch第一次出现的位置,没有返回-1
④int indexOf(String str)
功能:返回str第一次出现的位置,没有返回-1
⑤int indexOf(String str ,int formalndex)
功能:从fromalndex位置开始找str第一次出现的位置,没有返回-1
⑥int lastIndexOf(int ch)
功能:从后往前找,返回ch第一次出现的位置,没有返回-1
⑦int lastIndexOf(int ch,int fromIndex)
功能:从formInedex位置开始,从后往前找ch第一次出现的位置,没有返回-1
⑧int lastIndexOf(String str)
功能:从后往前找,返回str第一次出现的位置,没有返回-1
⑨int lastIndexOf(String str,int formIndex)
功能:从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1
3. 转换
① 数值和字符串转换 -- String.valueOf 和 parse
②大小写转换toUpper -- toUpperCase和toLowerCase
③字符串转换数组 -- toCharArray 和 new String
④格式化 -- format
4. 字符串替换 -- replace
regex是需要替换的内容 replacemen是
① String replaceAll(String regex,String replacement)
功能:替换所有的指定内容
② String replaceFirst(String regex, String relacemen)
功能:替换首个内容
注意:不会修改对象,而是产生一个新的字符串
5. 字符串拆分 -- split
①String [ ] split(String regex)
功能:将字符串全部v
①String [ ] split(String regex,int limit)
功能:将字符串以指定的格式,拆分为 limit 组
注意:有些字符是部分转义,需要在前面加上 //
6. 字符串的截取
①String substring( int beginIndex)
功能:从指定索引截取到结尾
②String substring(int beginIndex,int endIndex)
功能:截取部分内容,左闭右开
7.去掉字符串左右空格 -- trim
比如输入验证码就是一个应用场景
三. StringBuilder类
我们可以看到,字符串拼接的时候,创建了一个新的StringBuilder类
看下面代码,仔细看注释!!!!
public static void main(String[] args) {//StringBuilder是一个类 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("hello");//stringBuilder内容变成hello stringBuilder.append("word!");//stringBuilder内容变成helloword! System.out.println(stringBuilder);打印结果为helloword! //如何将StringBulider类转换成String类,使用toString方法 String str = stringBuilder.toString(); System.out.println(str);//打印结果为helloword! //StringBuilder的有用的方法 //1.逆置字符串 System.out.println(stringBuilder.reverse());//打印结果为:!drowollhe }