Java-String类说明

1 篇文章 0 订阅

String 字符串类详解

介绍

字符串对象作为最常用的数据类型,大量且频繁创建字符串会极大地影响程序的性能.所以java在创建字符串对象对其进行了优化

  1. 为字符串开辟了一个字符串常量池,类似缓存区
  2. 创建字符串常量时,首先会检查字符串常量池中是否存在该字符串,如果存在,则返回该实例的引用,如果不存在,则实例化创建该字符串,并且放入池中.
  3. 只有使用字面值创建字符串对象的方式,才会使用到内存中的字符串常量池.

创建字符串详解

  1. 使用new String(“abc”)创建

    当使用new 关键字创建字符串对象时,会先在空间中创建一个字符串对象,然后在字符串常量池中查找有没有abc这个字符串对象,如果有就把常量池中的对象与堆中关联起来,如果没有就在常量池新创建一个"abc"并且与堆空间中的字符串对象关联起来. **注意:**是先创建对象在去常量池中查找或者创建,如果先去常量池查找或创建,在去堆中创建时有可能常量池中对象可能已经被回收.在此过程中一共创建两个对象.

  2. 使用 = “abc” 创建

    当使用字面值的方式创建对象时 会直接去字符串常量池中查找或创建"abc"对象.

  3. 详细图解.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V3BE3fNV-1601778599265)(E:\学习\Java2020\image\image-20200930092948211.png)]

    字符串与其他对象执行"+"运算符原理

    1. “abc”+"abc"时会在编译时就会看成一个对象.
    2. 当+的左右为引用时会创建一个StringBulider对象将左右的对象append进bulider中.

    常用方法

    1. int length()

      获取字符串的长度. str.length();

    2. int codePointCount(int a,int b)

      获取a-b之间的代码点长度,与length类似.

    3. boolean isEmpty();

      判断字符串是否为空,true为空,如果字符串为空格,字符串不为空;

    4. char charAt(int)

      获取字符串第int位的字符,如果参数超过字符串边界,StringIndexOutOfBoundsException

    5. int codePointAt(int)

      获取字符串第int位的字符所代表的Unicode代码点.

    6. equals(Object)

      判断当前对象的值是否和Object的值是否相等

    7. compareTo(String)

      判断当前对象与String对象的大小,一个一个字符进行比较,字符之间按照字符编码顺序排.如果返回的是正值代表当前对象大.

    8. indexOf(int)

      返回当前字符串中int(unico值)所在的索引位置,如果遇到多个,返回第一个如果没有就返回-1;lastIndexOf 返回最后一个

    9. indexOf(String)

      返回当前字符串中的字符子串String所在的索引位置,lastIndexOf 返回最后一个

    10. subString(int begin[,int end])字符串切割

      int begin 开始索引,int end 结束索引 默认的end 为length;

    11. concat(String) 字符串拼接

      在当前字符串的后面拼接上string字符串

    12. contains(CharSequence)

      判断当前字符队列是否在字符串中

    13. replace(CharSequence old,CharSequence new)

      将old字符队列换成new的字符队列,如果有old有多个,只替换第一个.

    14. replaceAll(String reg,String new)

      将字符串中符合reg正则式的字符子串全部替换成new字符串

    15. replaceFirst(String reg,String new)

      将字符串中第一个符合reg正则式的字符子串替换成new字符串

    16. split(String [,int])

      将字符串按照String的正则式分割成字符串数组,如果int<0 则字符串会被分割成全部符合要求的字符串数组,数组长度为任意长,如果int=0,那么会将结尾的字符空串丢弃掉,如果int>0,那么会匹配int-1次,并将剩余字符串放入最后一个子串中,默认为<0;

    17. toLowerCase()

      将字符串中的字母转成小写字母

    18. toUpperCase()

      将字符串中的字母转换成大写字母

    19. trim()

      去掉首位空格

    20. toCharArray()

      返回字符数组

    21. valueOf()

      将基本数据类型转换为字符串,Object默认调用toString.

    22. intern()

      将指向堆中的引用指向字符串池.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值