开发者社区> kgm236lhwsk7a> 正文

<< Java >> String类详解

简介: << Java >> String类详解
+关注继续查看

一 .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. 两种方式的特征区别


03d8987bdde94a9c9b3d6c9d6c5d488e.png



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


7fc48eb29bcc4bc4a787f4e5aa22f8c3.png


②大小写转换toUpper -- toUpperCase和toLowerCase 

e521e88259784012a0f9f5885ed86909.png


 ③字符串转换数组 -- toCharArray 和 new String 


a987d4394a184361be0f1d237b870ea2.png

④格式化 -- format


573e4b480b36485f9badad9879fcde3e.png


 4. 字符串替换 -- replace

regex是需要替换的内容  replacemen是

① String replaceAll(String regex,String replacement)

功能:替换所有的指定内容

② String replaceFirst(String regex, String relacemen)

功能:替换首个内容 


0e39e59d830f4e9d8923f8e9994716c9.png

注意:不会修改对象,而是产生一个新的字符串

5. 字符串拆分 -- split

①String [ ] split(String regex)

功能:将字符串全部v


①String [ ] split(String regex,int limit)

功能:将字符串以指定的格式,拆分为 limit 组

3ccd9045680e423fa33ab3d919433f1e.png

注意:有些字符是部分转义,需要在前面加上  //


6. 字符串的截取

①String substring( int beginIndex)


功能:从指定索引截取到结尾


②String substring(int beginIndex,int endIndex)


功能:截取部分内容,左闭右开


e9c7437fc15c4d8b8e546ca81974d0bf.png

 7.去掉字符串左右空格 -- trim

3e0138badffc49eb93b2761ef8668d80.png


比如输入验证码就是一个应用场景

三. StringBuilder类


664a8930de254c4f9c4ec6c4d3e817cb.png


d71fb924f7014f82984a5d93032b7c6d.png

 我们可以看到,字符串拼接的时候,创建了一个新的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
    }


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java StringBuffer & StringBuilder,超详细整理,适合新手入门
Java StringBuffer & StringBuilder,超详细整理,适合新手入门
24 0
Java String 类,超详细整理,适合新手入门
Java String 类,超详细整理,适合新手入门
31 0
Java:String和List互相转换
Java:String和List互相转换
11 0
Java 最常见的面试题:String 类的常用方法都有那些
Java 最常见的面试题:String 类的常用方法都有那些
23 0
Java 最常见的面试题:String str="i"与 String str=new String("i")一样吗?
Java 最常见的面试题:String str="i"与 String str=new String("i")一样吗?
19 0
Java 最常见的面试题: String 属于基础的数据类型吗
Java 最常见的面试题: String 属于基础的数据类型吗
9 0
Java数据类型中String、Integer、int相互间的转换
Java数据类型中String、Integer、int相互间的转换
22 0
String s = new String("java"); 只创建了一个对象!好好看好好学,要了解原理!
String s = new String("java"); 只创建了一个对象!好好看好好学,要了解原理!
21 0
【Java课堂】String类(二)
对于刚学过C语言的小伙伴来说,String类可能比较陌生。在C语言中我们可以用指针来表示一串字符 如 char* p = "abcd" ,而在Java中我们可以用String类来直接表示 String p = "abcd"。
15 0
【Java课堂】String类(一)
对于刚学过C语言的小伙伴来说,String类可能比较陌生。在C语言中我们可以用指针来表示一串字符 如 char* p = "abcd" ,而在Java中我们可以用String类来直接表示 String p = "abcd"。
19 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载
Java单元测试实战
立即下载