stringbuilder重新赋值_String类、StringBuffer类和StringBuilder类

一、String 类

java 没有内置的字符串类型,但是在lang 包中提供了String类来创建和操作字符串,可以发现C# 中定义字符串时,string 第一个字母时小写的。

java中定义一个子符串,注意 双引号括住该值,实际上括住的一串字符就是String 对象。

注意:

字符串变量必须经过初始化才能使用。

字符串对象一旦被创建,其值时不能改变的,但可以使用其他变量重新赋值的方式进行更改。

声明 和赋值 要分开赋值的话要放在方法里

675a97780493c630708ea7df04ddadd7.png

通过构造方法赋值

String 既然是个类,也可以通过构造方法,来创建字符串,那么也就有多中重载形式

1、String() 初始化一个新建的String对象,表示一个空字符序列,

2、String(String original)新创建的String 对象是该字符串的副本,创建的字符串与通过参数赋予的值相等

ea14f90a2fa50398778fcade243332bf.png

3、String(chat[] value) 将参数中的字符串数组元素全部变成字符串,

297faf0ed53d8ff6dfbf4706f8ba35da.png

4. String(char[] value,int offset,int count)

offset 表示从那开始截,count 表示截取几个,注意 offset + count 不能大于数组的总长度,否则会报错

4700a8c1b5dae3464241ba94cc33cb34.png

报错 字符串 下标越界, 可以看出提示错误信息: 6 大于 5 , 在第七行

c1a11b1b7b33eabf97545ed1c62c4da2.png

字符串与其他类型的转换

其他类型与子符串的相互转换,上一篇也有介绍

package com.obge.test1;

public class SrtingStu {
    public static void main(String[] args) {
        //字符串转换为 int    这个时候string就不能乱赋值了,
        String sInt = "121";
        //1、借助 parseInt()
        int intP = Integer.parseInt(sInt);
        //2、valueOf() 和 intValue
        int intV = Integer.valueOf(sInt).intValue();

        System.out.println(intP);
        System.out.println(intV);
        //int 转化为字符串
        int intConvertString = 111;
        //1、借助 toString()
        String tos = Integer.toString(intConvertString);
        //2、借助  valueOf()  要赋值,不然包空指针错误
        String vos = String.valueOf(intConvertString);
        //3、借助 +    耗时较长
        String sin = intConvertString +"";
        System.out.println(tos);
        System.out.println(vos);
        System.out.println(sin);

    }
}

valueOf() 一个静态方法,将数据的内部格式转换为可读的形式,对于所有java 内置的类型,都可转换为字符串。

二、使用StringBuffer 类处理字符串

StringBuffer 也可以用来存储字符串,比String 类更高效的存储字符串的一种引用数据类型,特别是对字符串进行连接操作时,使用StringBuffer 类可以大大提高程序的执行效率。

1、使用StringBuffer 类

StringBuffer 类位于java.util包中,是String 类的增强类。

声明StringBuffer 类并初始化

 StringBuffer stringBuffer = new StringBuffer("obge");

2、StringBuffer 类常用方法

String toString() : 转换为String 类型的对象并返回

StringBuffer append(参数); 追加字符串,将参数连接到字符串后并返回。

append() 方法与concat() 方法:

相同点:都是把一个字符串追加到另一个字符串后。

不 同:的是String类中只能将String类型的字符串追加到另一个后面,StringBuffer类中可以将任何类型的值追加到字符串后。

317083085e7c019b4c6406dd8af6e80e.png

StringBuffer insert() : 插入字符串

字符串 . insert(位置,参数);
//将参数插入到指定位置后并返回stringBuffer 类型,参数值可以是包括任何类型的值

1feb85001846c5f2acc2e944c8c17bfe.png

在StringBuffer类中的定义:使用synchronized修饰

f63c13f269822d00130edd0ff526b8bf.png

例子:

package com.obge.test1;

public class StringStu2 {
    public static void main(String[] args) {

        StringBuffer stringBuffer = new StringBuffer("obge哥哥");
        int num = 2223;
        //使用 append 追加
        StringBuffer stringBufferAppend = stringBuffer.append(num);
        System.out.println("现在的字符串为:"+stringBufferAppend);
        //每隔2 位 添加 *
        for(int i= stringBufferAppend.length()-2;i>0;i=i-2){
            stringBufferAppend.insert(i,"*");
        }
        System.out.println("添加*后的字符串为:"+stringBufferAppend);
    }
}

控制台输出内容:

b039f16308547ebaede1f37f0cbafc66.png

三、使用StringBuilder 类处理字符串

StringBuilder 位于Java.lang 包中,是JDK 5.0 新增的类,是一个可变的字符序列。此类提供了一个与StringBuffer 兼容的API ,被设计用作StringBuffer的一个简易替换,在大多数实现中,比StringBuffer 执行要快。

StringBuilder 类处理字符串方法与StringBuffer类基本一致

0654d51405960c7663c14c375cf13879.png

注意哦 没有 synchronized,不提供同步,单线程的

98cc1ebb3f3ff8ee307566aaee91859a.png

四、String类、StringBuffer类以及StringBuilder类对比

String 类:是不可变的对象,在每次对String 类型进行改变时等同于生成了一个新的String 对象,然后指向新的String对象,所以经常改变内容的字符串最好不要用String类型,因为每次生成对象都会对系统性能产生影响。

StringBuffer类:时可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer 对象本身进行操作,而不是生成新的对象,在改变对象引用。所以在字符串经常改变的情况下推荐使用StringBuffer 类。

在字符串连接操作中,StringBuffer 类的执行效率比String类高

通过 + 号来进行追加子符串操作时,实际是通过建立一个StringBuffer 对象,让他调用append() 方法,最后在转化为String ,比StringBuffer 多了一些附加操作所以效率低,而且String对象的不可变性也比较影响性能。

StringBuilder 类:是单线程的不提供同步,理论上比StringBuffer效率更高。但是StringBuffer是线程安全的。

这和引用类型与基本类型的存储有点相似

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值