zoukankan      html  css  js  c++  java
  • 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())生成字符串进行返回;所有如果在循环中使用“+”拼接字符串将会很耗性能跟内存的。

    (整理笔记待完善)

  • 相关阅读:
    Pydev Console中文提示乱码的问题
    pg_dump命令帮助信息
    Aptana下Django1.6以后的项目模板结构改造
    老外的项目开发在线服务网站资源
    淘宝技术交流笔记
    Python并发编程的几篇文章
    gevent程序员指南
    IOS UITableView拖动排序功能
    Codeforces 300A Array
    一次mysql优化经历
  • 原文地址:https://www.cnblogs.com/qq-361807535/p/12598169.html
Copyright © 2011-2022 走看看