Java-String类说明

    科技2022-07-13  112

    String 字符串类详解

    介绍

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

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

    创建字符串详解

    使用new String(“abc”)创建

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

    使用 = “abc” 创建

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

    详细图解.

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

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

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

    常用方法

    int length()

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

    int codePointCount(int a,int b)

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

    boolean isEmpty();

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

    char charAt(int)

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

    int codePointAt(int)

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

    equals(Object)

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

    compareTo(String)

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

    indexOf(int)

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

    indexOf(String)

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

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

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

    concat(String) 字符串拼接

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

    contains(CharSequence)

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

    replace(CharSequence old,CharSequence new)

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

    replaceAll(String reg,String new)

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

    replaceFirst(String reg,String new)

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

    split(String [,int])

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

    toLowerCase()

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

    toUpperCase()

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

    trim()

    去掉首位空格

    toCharArray()

    返回字符数组

    valueOf()

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

    intern()

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

    Processed: 0.017, SQL: 8