美文网首页
Java核心类库 -- 03 字符串相关

Java核心类库 -- 03 字符串相关

作者: ql2012jz | 来源:发表于2017-08-26 20:46 被阅读16次

字符串相关的处理类

目录导读
String
StringBuffer(线程安全) 1.0出现
StringBuilder(线程不安全) 1.5出现
数组与StringBuffer/StringBuilder的区别

1.String 类
是不可变类,即一旦一个String对象被创建之后,该对象中的字符序列就不可被改变,直至该对象被销毁
适合用于数据共享的场合

(1)构造器
    public String();
    public String(byte[] bytes);
    public String(byte[] bytes, int index, int length);
    public String(char[] chs);
    public String(char[] chs, int index, int length);
    public String(String original); //String s = new String("hello");
    public String(StringBuffer buffer);
    public String(StringBuilder builder);

(2)判断功能
    1.是否相等
    public boolean equals(Object obj); //比较内容,区分大小写,因为String重写了equals方法
    public boolean equalsIgnoreCase(String s); //不区分大小
    
    2.是否包含
    public boolean contains(String s); //是否包含

    3.是否是特定开头
    boolean startsWith(String prefix); //是否以prefix开头
    boolean startsWith(String prefix, int toffset); //从toffset后开始是否以prefix开头
    
    4.是否是特定结尾
    boolean endsWith(String str); //是否以str结尾
    5.叛空
    boolean isEmpty(); //是否为空

(3)获取功能
    1.长度
    public int length(); 

    2.特定位置的字符
    public char charAt(int index); //获取index 处的字符

    3.特定字符首次出现的位置
    public int indexOf(int ch); //返回特定字符(这里用其ASCII值做参数)在该字符串中第一次出现的位置
    注意:这里把参数类型限制为int而不是char类型,是为了防止发生强制类型转换造成精度损失
    public int indexOf(int ch, int fromIndex);
    public int indexOf(String str); //返回字符串在此字符中第一次出现的位置
    public int indexOf(String str, int fromIndex) ;

    4.截取功能
    public String substring(int start); //从start处开始截取至末尾。包含start
    public String substring(int start, int end); //截取该范围内的[start, end)字符串

(4)转换功能
    1.类型转换
    public char[] toCharArray(); //String ——> char[]
    public static String valueOf(X x); //是static方法,将任意类型转换为String, 任意类型包括基本类型和对象类型
    public byte[] getBytes(); //String ——> byte[]
    public void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin); //部分转换    
    public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin); //部分转换
    
    2.大小写转换
    public String toLowerCase(); //转小写
    public String toUpperCase(); //转大写

    3.拼接
    public String concat(String str); //拼接字符串

(5)替换功能
    public String replace(char old, char newChar); //针对字符
    public String replace(String old, String newString); //针对字符串

(6)去掉字符串两端的空格
    public String trim(); //只能去掉两端处的空格,之间位置的不行

注意:由于String是不可变类,所以很容易产生一些额外的临时变量,消耗过多的内存
资源,因此,使用StringBuffer、StringBuilder就可以避免这个问题

2.StringBuffer / StringBuilder 类
这两个对象代表一个字符串序列可变。
适合用于数据内容被频繁修改的场合

区别在于 StringBuffer 是线程安全的,因此效率不高
         StringBuilder 是线程不安全的,因此效率较高,故一般用StringBuilder
二者的方法用法基本一样,只介绍StringBuffer,另一种类推

(1)构造器
    public StringBuffer(); //默认出事容量,16个字符,第一次扩容(+18),第二次以后扩容 +1
    public StringBuffer(int capacity); //指定容量capacity,第一次扩容(capacity+2),第二次以后扩容 +1
    public StringBuffer(String str); //指定内容的StringBuffer

(2)反转功能
    public StringBuffer reverse(); //将字符串倒序

(3)获取功能
    1.长度
    public int capacity(); //返回当前容量,理论值为16(默认情况下)
    public int length(); //返回实际长度

    2.截取功能
    public String substring(int start); //从start处截取值末尾,存储在新的String中
    public String substring(int start, int end); //截取[start, end)间的字符,存储在新的String中
    注意:这两个方法执行后,原来的StrignBuffer里的内容并没有发生任何变化

(4)添加功能
    public StringBuffer append(X x); //追加x在原始字符串后(即在原缓冲区对象里修改)
    注:X可以为任何类型的数据,甚至可以是Obejct类的对象
    public StringBuffer insert(int offset, String str); //在offset处插入数据

(5)删除功能
    public StringBuffer deletCharAt(int index); //删除指定位置的字符
    public StringBuffer delete(int start, int end); //删除[start, end)位置的字符

(6)替换功能
    public StringBuffer replace(int start, int end, String str); //str替换[start, end)处的字符

(7)转换
    1.StringBuffer -> String 
    public String toString(); 

    2.String -> StringBuffer
    public StringBuffer(String str); //指定内容的StringBuffer

3.数组与StringBuffer/StringBuilder的区别
(1)二者均为容器,用来存放数据
(2)StringBuffer/StringBuilder的数据最终是一个字符串数据(里面可以存放多种不同类型的数据)
每一个具体的数组中只能存放一种类型的数据
(3)数组的长度是固定不变的,StringBuffer/StringBuilder的长度可变

注意:数组在Java中是一种对象(因为Java中的数组拥有自己的属性,如length,还有方法如clone()等),但在C/C++中数组名只是一个指针,没有属性和方法

相关文章

  • Java核心类库 -- 03 字符串相关

    字符串相关的处理类 目录导读StringStringBuffer(线程安全) 1.0出现StringBuilder...

  • Java基础类库

    包 1、java.lang包:java类库中的核心部分,包含System系统类、数学运算的Math类、处理字符串的...

  • java核心类库(上)

    java核心类库 toString() 打印输出或者字符串拼接 ” “+ 引用 自动 调用 -128~127 自动...

  • Hello Java

    目录 Java-基础(1/6) Java-对象(2/6) Java-核心库类 上(3/6) Java-核心库类下(...

  • Java核心类库 -- 02 系统相关类

    Java程序在不同操作系统上运行时,可能需要获取平台相关的属性,或调用平台命令来完成特定功能。此时需要System...

  • 关于java的字符串的理解与用法

    字符串 java中的字符串,其实就是unicode字符序列。java中没有内置的字符串类型,而是java类库中预定...

  • Java字符串知识点总结

    Java 字符串就是 Unicode 字符序列,Java 没有内置的字符串类型,而是在 Java 类库中提供了一个...

  • 03.Java环境搭建

    JRE Java Runtime enviroment (JAVA 运行环境)包含JVM和Java核心的类库Jav...

  • java核心类库(下)

    java核心类库(下) Throwable Error Expection RuntimeExpection,非检...

  • 基础 JVM、JRE和JDK

    JVM:Java Virtual Machine(Java虚拟机),包含了Java最核心的类库。 JRE:java...

网友评论

      本文标题:Java核心类库 -- 03 字符串相关

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