Java的字符串

作者: 程序员必修课 | 来源:发表于2018-01-18 15:47 被阅读0次
    String及常用API

    javadoc命令生成文档:

    目标HTML文档存储到docDir下,执行以下步骤</br>
    切换到包含想要生成文档的源文件目录,如果有嵌套的包,必须切换到包含子目录的目录</br>
    如果是一个包,运行命令:</br>

    javadoc -d docDir nameOfPackage</br>

    多个包生成文档,运行</br>

    javadoc -d docDir nameOfPackage1,nameOfPackage2……</br>

    如果文件在默认包中,运行</br>

    javadoc -d docDir *.java

    String是不可变对象

    • java.lang.String被final修饰,不可修改;</br>
    • 底层封装的是字符数组以及其操作算法
    • 字符串是不可变对象,一旦改变内容,就会创建新对象
    • Java字符串内存中采用Unicode编码任何一个字符对应两个字节定长编码

    String常量池

    Java为了提高性能,静态字符串(字面量、常量、常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串

    对于重复出现的字符串直接量,JVM会首先在常量池中查找,如果存在,即返回该对象

    引用类型的比较重:==用于判断是否为同一个对象,因为比较的是地址,而equals用于判断对象内容是否相同。

    String在内存中采用Unicode编码,每个字符占用两个字节;任何一个字符(无论中英文)都算一个字符长度,占用两个字节

    使用indexOf实现检索

    int indexOf(String str)在字符串中检索str,返回其第一次出现的位置,如果找不到则返回-1

    JavaAPI中大多数情况下,凡是使用两个数字表示范围的,通常都是含头不含尾的(左闭右开)

    lastIndexOf获取最后一次出现的位置。

    subString

    subString方法用于返回一个字符串的子字符串

    trim

    去掉一个字符串左右两边的空字符(包括空格tab等)

    charAt

    用于返回指定位置的字符

    startsWith和endsWith

    检测字符串是否已制定字符串开头或结尾</br>
    aaa.doc之类的,判断文件类型的时候可以使用endsWith

    大小写转换

    toUpperCase和toLowerCase</br>
    验证码忽略大小写检查的时候经常用到

    valueOf

    基本类型数据与空字符串拼接可以转换为字符串</br>
    另外就是用valueOf方法

    字符串性能

    StringBuilder封装可变的字符串,对象创建后可以通过调用方法改变其封装的字符序列</br>
    当对字符串进行频繁修改的时候应该使用StringBuilder</br>
    常用构造方法:</br>
    public StringBuilder()</br>
    public StringBuilder(String str)</br>

    StringBuilder不是字符串</br>
    只是用于在做频繁修改字符串的时候使用的类,可以节省不必要的内存开销,提高性能</br>
    想将StringBuilder所表示的内容转化为字符串可以调用它的toString()方法
    可以有增删改插

    StringBuilder append(String str)
    向字符串末尾追加新字符串 相当于字符串的 "+" 操作

    StringBuilder insert(int index, String str)
    向指定位置插入指定字符串,原位置的字符串顺序向后移动

    StringBuilder delete(int from, int end)
    删除字符串中指定范围内的字符

    StringBuilder replace(int from, int end, String str)
    将范围内字符串替换为给定的字符串

    注意</br>
    Java中的字符串连接的过程就是利用StringBuilder实现的

    String s = "AB"; String s1 = s + "CDE";</br>
    //String s1 = new StringBuilder(s).append("DE").toString();

    StringBuffer是线程安全的,同步处理,性能稍慢
    StringBuilder是非线程安全的,并发处理,性能稍快

    相关文章

      网友评论

        本文标题:Java的字符串

        本文链接:https://www.haomeiwen.com/subject/nkswoxtx.html