<< 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
    }


相关文章
|
2月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
211 101
|
2月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
268 100
|
3月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
364 120
|
28天前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
79 4
|
1月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
132 5
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
115 1
|
1月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
174 1
|
1月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
126 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
128 1
|
1月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
218 5