2026年字符串转成integer(字符串转成list)

字符串转成integer(字符串转成list)目录 一 常用构造方法 二 String 类源码 2 1 字符串的不可变性 2 2 nbsp String 对象如何存储字符串 2 3 nbsp StringTable 字符串池 2 3 1 nbsp intern 方法 三 字符串对象比较 3 1 比较是否引用同一个对象 3 2 equals 方法 3 3 nbsp 使用 compareTo 方法 四 String 类常用实用方法 4 1 获取字符串长度 4 2 字符串查找 4 3 字符串转化 4 3 1 数值与字符串的转化 4 3 2 大小写转化 nbsp 4 3



目录

一、常用构造方法

二、String类源码

2.1 字符串的不可变性

2.2 String对象如何存储字符串?

2.3 StringTable字符串池

2.3.1 intern()方法

三、字符串对象比较

3.1 ==比较是否引用同一个对象

3.2 equals()方法

3.3 使用compareTo()方法

四、String类常用实用方法

4.1 获取字符串长度

4.2 字符串查找

4.3 字符串转化

4.3.1 数值与字符串的转化

4.3.2 大小写转化 

4.3.3 字符串转数组

4.3.4 格式化

4.4 字符串替换

4.5 字符串拆分 

4.6 字符串截取 

五、StringBuilder和StringBuffer

六、String,StringBuilder,StringBuffer的区别


Java中提供了String类,用来构造字符串并且提供了很多操作字符串的方法,让我们处理字符串相关的问题更加方便。


 
    

String类被final修饰,表明String类不能被继承。被final修饰的变量(基本数据类型与引用数据类型)在初始化后,不能被重新赋值,所以value数组一旦被赋值变不能修改。同时,value被private所修饰,所以只能在String类当中使用。


value数组被final与private修饰,不能指向新的数组对象并且不能被外部直接引用,原则上来说,value数组的内容是可以修改的,但是在String类内部并没有提供任何方法来改变value数组的内容,所以无法通过外部手段修改。

  • final确保value引用在对象的生命周期内不会指向新的数组。
  • String没有提供修改value数组内容的方法,因此,即使value数组内部可变,String类保持了不可变性。 

我们知道String是引用类型,String声明的变量是引用变量,而引用变量存储的是所引用的对象的地址,所以String类型的变量并不是直接存储字符串本身,这一点要切记。

在Java8及之前的版本中,String类使用一个内部的char[]数组来存储字符数据。

 
       

在Java9之后:

value数组用来存储字符串内容,coder表示编码类型


StringTable是 Java 中 JVM 内部用来存储字符串池的实现部分。字符串池是 Java 中的一个机制,用于存储所有使用字符串字面量创建的字符串对象。这样可以减少内存消耗并提高效率,因为相同的字符串字面量只会在内存中存储一次。

 
        

上面代码中先声明变量str1,字符串字面量“hello” 存储在字符串池当中,str1指向字符串池中的字符串对象“hello”。在声明变量str2时,JVM会在StringTable中查找“hello”,如果存在就返回引用,对于上述代码,已经存在“hello”,所以不会在StringTable中创建“hello”,即str1和str2指向同一个字符串对象“hello”。声明变量str3,对于字符串字面量“world”在字符串池当中没有“world”,所以会在StringTable中创建该字符串并返回引用,使得str3指向“world”对象。对于str4,使用new关键字创建字符串会在堆上分配一个新的String对象,而不在StringTable中查找或存储,因此str4不会与str1与str2共享一个对象。

2.3.1 intern()方法

intern()方法会将字符串对象放入StringTable中。如果字符串已经存在于池中,它会返回池中字符串的引用,否则会将该字符串添加到池中并返回引用。

 
        

尽量使用字符串字面量:可以让JVM自动使用字符串池,避免重复创建相同内容的字符串对象。节省了内存并且提高了性能。


 
         

String类重写了父类Object的equals()方法,对于Object类的equals方法判断的还是两个引用是否引用同一个对象,而String类的equals()方法判断的是两个对象的内容是否相同,当然如果两个引用指向同一个对象,那么内容自然也相同了。

Object类的equals()方法:

String类的equals()方法:  

 
         

String类实现了Comparable接口,可以使用compareTo()方法,用于按字典序顺序比较两个字符串。根据返回值判断大小:

  • 返回0表示两个字符串相等。
  • 返回负数表示调用者字符串小于参数字符串。
  • 返回正数表示调用者字符串大于参数字符串。

比较规则:先根据字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值;如果前面n个字符相等(n为两个字符串中长度小的字符串的长度),返回值为两个字符串长度差值。注意一个点:是谁为调用者谁为参数,两者互换得到的结果不同。

 
          
 
           

char charAt()

int indexOf()

int lastIndexOf()

 
            

4.3.1 数值与字符串的转化

String.valueOf(),String类的静态方法,可以直接通过类名去调用。将不同类型的值(如int、double、char、boolean、Object等)转换为String类型。字符串也可以转化为数字。

 
             

4.3.2 大小写转化 

toLowerCase()大写转化为小写

toUpperCase()小写转化为大写

 
             

4.3.3 字符串转数组

toCharArray()

 
             

4.3.4 格式化

String.format()
 
             

replace(char oldChar,char newChar)               替换字符串中的单个字符(全部替换)

replaceAll(String regex,String replacement)    替换字符串中的字串(全部字串)

replaceFirlt(String regex,String replacement)  替换字符串中第一个字串

 
              

String[] split(String regex)                        将字符串全部拆分

String[] split(String regex, int limit)           将字符串以指定的格式,拆分为limit

返回值为一个String类型的数组,将拆分的字符串存入字符数组中。

 
               
String substring(int beginIndex)                         从指定索引截取到结尾
String substring(int beginIndex,int endIndex)  截取部分内容(左闭右开)
 
                

前面2.1讲到String是一种不可变对象,字符串的内容是不可改变的。对于上面这些方法,“改变”字符串实际上是返回一个新的String对象,而不是在原本的String对象上进行修改。


都是可变字符序列类,它们可以用于高效地修改字符串内容(例如追加、插入、删除等操作)。与不可变的String类不同,StringBuilder和StringBuffer对象可以在原始对象上进行修改,不会创建新的对象实例。两者所使用的方法类似:

 
                 

:线程安全,因为它的所有方法都被synchronized修饰,确保了多线程环境下的同步访问。适用于多线程环境,适合在需要线程安全的情况下使用。

:非线程安全,没有同步机制,因此在单线程环境下执行速度比StringBuffer快。适用于单线程环境,推荐在不涉及多线程的情况下使用,以获得更高的性能。


String对象一旦创建,内容不可以修改,线程安全适用不可变的字符串处理,每次修改字符串时,都会创建一个新的String对象,因此在频繁修改字符串时性能较差;而StringBuffer与StringBuilder的内容可以修改(在原对象上修改字符串,而不需要创建新的对象),对于需要频繁修改字符串的场景,它们比String更高效;StringBuffer的方法是 synchronized的,保证了多线程环境下的安全性,适用于多个线程共享同一 StringBuffer对象时,避免数据不一致;StringBuilder不提供同步机制,因此在多线程环境下,多个线程同时访问同一 StringBuilder 对象时,可能会导致数据不一致。在单线程环境下性能更高,因为没有同步开销。

  • 适用于常量字符串和不需要修改字符串的场景。
  • 适用于多线程环境中需要修改字符串的场景,保证线程安全。
  • 适用于单线程环境中需要频繁修改字符串的场景,提供最佳性能。

根据实际的线程安全需求和性能要求,选择合适的类来处理字符串。 


 完

今天的文章 2026年字符串转成integer(字符串转成list)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-09-26 22:40
下一篇 2026-01-22 22:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/34978.html