Java字符串

2021-04-08 01:26

阅读:471

标签:基本   不能   区域   code   长度   eal   修改   大量   无法   

字符串的不可变性

  • 一旦一个string对象在内存(堆)中被创建出来,他就无法被修改。
  • String类的所有方法都没有改变字符串本身的值,都是返回了一个新的对象。
  • 如果需要一个可修改的字符串,应该使用StringBuffer 或者 StringBuilder。否则会有大量时间浪费在垃圾回收上,因为每次试图修改都有新的string对象被创建出来。

substring方法

substring(int beginIndex, int endIndex)方法截取字符串并返回其[beginIndex,endIndex-1]范围内的内容。

字符串替换相关方法

  1. replace(CharSequence target, CharSequence replacement) ,用replacement替换所有的target,两个参数都是字符串。
  2. replaceAll(String regex, String replacement) ,用replacement替换所有的regex匹配项,regex是个正则表达式,replacement是字符串。
  3. replaceFirst(String regex, String replacement) ,基本和replaceAll相同,区别是只替换第一个匹配项。

字符串拼接

  • 使用+拼接字符串
  • String对象的concat方法
  • 可以扩充和修改的StringBuffer,使用append方法进行字符串拼接
  • StringBuilder的append方法(StringBuilder和StringBuffer类似,StringBuffer是线程安全的)

switch对字符串的支持

  • switch对int的判断是直接比较整数的值
  • switch对char类型进行比较的时候,实际上比较的是ascii码
  • switch对字符串进行比较的实际是哈希值,然后通过使用equals方法比较进行安全检查
  • 其实switch只支持一种数据类型,那就是整型,其他数据类型都是转换成整型之后在使用switch的

Java字符串池

在JVM中,为了减少相同的字符串的重复创建,为了达到节省内存的目的。会单独开辟一块内存,用于保存字符串常量,这个内存区域被叫做字符串常量池。

当代码中出现双引号形式(字面量)创建字符串对象时,JVM 会先对这个字符串进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回;否则,创建新的字符串对象,然后将这个引用放入字符串常量池,并返回该引用。

字符串长度限制

字符串有长度限制,在编译期,要求字符串常量池中的常量不能超过65535,并且在javac执行过程中控制了最大值为65534。

在运行期,长度不能超过Int的范围,否则会抛异常。

Java字符串

标签:基本   不能   区域   code   长度   eal   修改   大量   无法   

原文地址:https://www.cnblogs.com/yysy/p/13368373.html


评论


亲,登录后才可以留言!