JAVA字符操作

String 的方法

charAt 获取字符
toCharArray 获取对应的字符数组
subString 截取子字符串
split 分隔
trim 去掉首尾空格
toLowerCase 全部变成小写
toUpperCase 全部变成大写
indexOf 某个字符的索引
lastIndexOf 最后出现的索引
contains 是否包涵某个字符串
replaceAll 替换所有
replaceFirst 替换第一个

字符串比较

1.
String str1 = "the light";
         
        String str2 = new String(str1);
         
        //==用于判断是否是同一个字符串对象
        System.out.println( str1  ==  str2);
false

因为他们不是同一个对象

2.
String str1 = "the light";
          
        String str2 = new String(str1);
         
        String str3 = str1.toUpperCase();
 
        //==用于判断是否是同一个字符串对象
        System.out.println( str1  ==  str2);
         
        System.out.println(str1.equals(str2));//完全一样返回true
         
        System.out.println(str1.equals(str3));//大小写不一样,返回false
        System.out.println(str1.equalsIgnoreCase(str3));//忽略大小写的比较,返回true
false 	对象不一样
true	内容一样
false 	大小写不一样
true	忽略大小写所以内容一样

StringBuffer

4个基本方法
append追加
delete 删除
insert 插入
reverse 反转

String str1 = "Hello World ";

        StringBuffer str2 = new StringBuffer(str1); //根据str1创建一个StringBuffer对象
        str2.append("hello"); //在最后追加

        System.out.println(str2);

        str2.delete(2, 5);//删除2-5之间的字符

        System.out.println(str2);

        str2.insert(4, "four ");//在4这个位置插入 there

        System.out.println(str2);

        str2.reverse(); //反转

        System.out.println(str2);
Hello World hello
He World hello
He Wfour orld hello
olleh dlro ruofW eH

length和capacity

String str1 = "aa";

        StringBuffer str2 = new StringBuffer(str1); //根据str1创建一个StringBuffer对象


        System.out.println(str2.length());
        System.out.println(str2.capacity());
2
18

2是str2的长度,19是StringBuffer分配的空间,不同jdk的capacity不同,这是jdk1.9的。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

StringBuffer部分源码:(有synchronized修饰)

@Override
    public synchronized int length() {
        return count;
    }

    @Override
    public synchronized int capacity() {
        return super.capacity();
    }

StringBuilder则直接调用他的抽象父类AbstractStringBuilder的方法:(没有synchronized修饰)

@Override
    public int length() {
        return count;
    }

    /**
     * Returns the current capacity. The capacity is the amount of storage
     * available for newly inserted characters, beyond which an allocation
     * will occur.
     *
     * @return  the current capacity
     */
    public int capacity() {
        return value.length >> coder;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值