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


相关文章
|
21天前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
108 65
|
12天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
36 17
|
4天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
8天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
41 4
|
9天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
20 2
|
13天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
17天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
17天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
17天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
21 3
|
20天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
21 5

热门文章

最新文章