• Java基础-String那些事


    • String的内部实现,用一个value char[]数组来存放数据信息。
    • String类中包含的方法:

        substring(), 获取子串,返回一个新的字符串。

        charAt(intindex), 获取字符串固定位置的字符。

        concat(), 连接字符串,内部重新创建了一个新的字符串返回。

        join(), 使用特定的字符串连接字符串:String message = String.join("-", "Java", "is", "cool"); ret: "Java-is-cool"; 内部实现使用StringBuilder进行append操作。

        split(), 分隔字符串

        indexOf(),获取字符第一次出现在字符串中的位置

        toUpcase(), 字符串变大写

        toLowerCase(), 字符串变小写

        matches(), 字符串匹配正则表达式

        replace(), 替换字符串

        contains(), 判断是否包含某一字符串

        endWith(), 是否以参数开头

        startWith(), 是否以参数结束

        length(), 字符串长度

        replaceAll(), 替换所有目标字符

        replaceFirst(), 替换首次出现的目标字符串

        toCharArray(), 获取字符串的char数组

        lastIndexOf(), 获取固定字符最后一次出现在字符串中的位置

        compareTo(), 比较字符串

        getBytes(), 获取字符串对应的字节数组

    • hash方式: h = 0; h = 31 * h + value(i)  循环,返回最终的值。
    • StringTable 存在于运行时常量池,又叫String Pool, 是存放String常量的地方;

       (1)当给一个变量赋值String值的时候,会先去StringTable里面找,如果找到则直接赋值给该变量,如果没找到,则在StringTable里面添加一个改常量,然后返回给变量名。

       (2)String a = new String(“abc”); 会在堆内存中创建一个“abc”的String对象;使用a.intern()方法,如果常量池中存在“abc”字符常量串,则直接返回常量池的对象;如果没有,则会将a的引用地址添加到StringTable中(jdk1.7和之后,1.6复制该对象到StringTable中),下次若使用 String b = “abc”, 去常量池中找,存在a对象的引用,则 b指向的是a的实例对象。

       (3)StringTable 是类hashTable 的一个hash表;大小固定,不可扩展的。

    • String类是final类型的,是不可变的,类是不能被继承的。
    • 用“+”号拼接字符串,编译器会为其创建一个StringBuilder对象,使用append()方法进行字符串拼接,最后用new String(sb.toString())生成字符串进行返回;所有如果在循环中使用“+”拼接字符串将会很耗性能跟内存的。

    (整理笔记待完善)

  • 相关阅读:
    BZOJ_4034 [HAOI2015]树上操作 【树链剖分dfs序+线段树】
    SPOJ QTree【树链剖分】
    BZOJ_1503 [NOI2004]郁闷的出纳员 【Splay树】
    Hibernate学习实例
    Educational Codeforces Round 64 C. Match Points 【二分思想】
    ramn 备份操作
    表值函数--自定义工作日历
    删除win10开始菜单中程序的目录
    C#自定义注释自动生成模板注释
    oralce知识第三章
  • 原文地址:https://www.cnblogs.com/qq-361807535/p/12598169.html
Copyright © 2020-2023  润新知