栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > C/C++/C#

Java中String类详解(二)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中String类详解(二)

Wrapper类(以Integer类为例)与String类之间的相互转换:

// Integer -> String:
Integer i = 10;
    // 方法一:拼接字符串
String str1 = i + "";
    // 方法二:Integer中的toString方法:
String str2 = i.toString();
    // 方法三:String中的valueOf方法:
String str3 = String.valueOf(i);

// String -> Integer:
String str = "123";
    // 方法一:直接构造器new
Integer i1 = new Integer(str);
    // 方法二:Integer中的parseInt方法
Integer i2 = Integer.parseInt(str);

        注意:任何的包装类都存在toString方法

StringBuffer、StringBuilder与String:

String:属性private final char value[];value[] 通过final修饰,因此其指向的字符串内容在常量池中是不会改变的。

StringBuffer、StringBuilder:父类都是AbstractStringBuilder,继承父类的char[] value,没有final修饰,因此其表示的字符串可变。

        String:表示字符串常量,对象一旦被创建都不可修改。如果常量池中没有所需对象,则直接创建新的String对象。

        StringBuffer、StringBuilder:表示字符串变量,可以改变,字符串对象可以被多次修改而不产生新的字符串对象。

        String str = "abc"; 对于String对象来说,如果改变变量str的内容,则改变的是变量指向的地址(创建新的字符串对象后,指向新的字符串引用地址)

        StringBuffer str = new StringBuffer(); 对于StringBuffer对象来说,其相当于一个缓冲空间(容器),改变str的内容,调用其方法在原来的字符串后追加,改变原来的字符串。

因此:String的更新实际上更新的是地址,效率低。

        StringBuffer、StringBuilder的更新实际上更新的是内容、效率高。

使用StringBuffer(StringBuilder)创建字符串对象:

        使用类中的构造器:

// StringBuffer的构造器:
    // StringBuffer():构造一个不带字符的字符串缓冲区,其初始容量(char[]的大小)为16
StringBuffer stringBuffer = new StringBuffer();

    // StringBuffer(CharSequence seq):构造一个字符串缓冲区,包含与CharSequence相同的字符

    // StringBuffer(int capacity):构造一个不带字符的字符串缓冲区,指定初始容量(char[]的大小)为capacity
StringBuffer stringBuffer_ = new StringBuffer(100);

    // StringBuffer(String str):构造一个字符串缓冲区,指定内容为str,此时该char[]的长度为(str.length + 16)
StringBuffer hello = new StringBuffer("hello");

String与StringBuffer(StringBuilder)之间的相互转换:

// String -> StringBuffer:
String str = "hello";
    // 方法一:使用构造器
StringBuffer str1 = new StringBuffer(str);
    // 方法二:使用append方法:
StringBuffer str2 = new StringBuffer();
str2 = str2.append(str);

// StringBuffer -> String:
StringBuffer str = new StringBuffer();
    // 方法一:使用构造器
String str1 = new String(str);
    // 方法二:使用toString方法
String str2 = str.toString();

StringBuffer(StringBuilder)的常用方法:可以改变字符串中的内容

StringBuffer str = new StringBuffer("hello");

    // append:增
str.append(",");
str.append("张三丰");
str.append(true).append(10.25); // 将true、10.25转为String类型添加到str后
str.append("你好"); // hello,张三丰true10.25你好

    // delete:删
        // delete(start, end):删除start<=索引 

StringBuilder VS StringBuffer:

        都表示一个可变的字符序列,结构相同,两者的API兼容

        StringBuilder没有做线程同步,存在线程安全问题,其中的方法没有关键字synchronized修饰,效率更高

        StringBuffer解决了线程互斥问题,方法通过关键字synchronized修饰处理。

String VS StringBuffer VS StringBuilder的使用情况:

        需要对字符串对象进行大量的修改,使用String操作会将大量的字符串对象留存在内存,造成空间的浪费,降低效率。

        因此,对字符串进行少量的修改时,并被多个对象引用,使用String

        需要对字符串进行大量的修改,并且在单线程情况下,使用StringBuilder,效率高

        需要对字符串进行大量的修改,并且在多线程情况下,使用StringBuilder,保证线程安全。

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1038158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号