java基础总结(三)【String类】
2021-05-14 12:30
标签:object类 stringbu focus java基础 ring gif 技术 lan bsp String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包! 字符串不可变,它们的值在创建后不能被更改 虽然 String 的值是不可变的,但是它们可以被共享 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] ) 比较字符串要用Object类的equals()方法,因为String类重写了该方法。 这里插入一段题外话:有 int a= 3; int b = 3;编译器首先处理int a = 3;先是在栈中建立一个变量为a的引用,然后在栈中查找是否有字面值为3的地址,若没找到,就在栈中开辟一个空间来存放3这个字面值的地址,然后将a指向3的地址。接下来编译器处理int b = 3;同样在栈中建立b的引用变量后,由于在栈中找到了有3这个字面量的值,便直接将b指向了3的地址,这样a,b都同时指向了3这个字面量地址。如果我们接下来声明 a = 4;那会发生什么呢?这时在编译器内部,它会重新搜索栈中是否存在有4这个字面值,若有,则将a指向这个4字面值的地址,若没有,则在栈中自己开辟一个,然后指向它,不会影响b的指向。 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。 特点: 1:可以对字符串内容进行修改。 2:是一个容器。 3:是可变长度的。 4:缓冲区中可以存储任意类型的数据。 5:最终需要变成字符串。 JDK1.5出现StringBuiler;构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。 方法和StringBuffer一样; 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 运行速度,执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。 2. 线程安全 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder。 3. 总结一下 String:适用于少量的字符串操作的情况 StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况 java基础总结(三)【String类】 标签:object类 stringbu focus java基础 ring gif 技术 lan bsp 原文地址:https://www.cnblogs.com/indexlm/p/12883075.htmlString类
String类的特点
==号的作用
String类的理解
StringBuffer字符串缓冲区
StringBuilder字符串缓冲区
String、StringBuffer、StringBuilder区别
上一篇:Spring 由哪些模块组成?
下一篇:一篇文章带你了解Java反射
文章标题:java基础总结(三)【String类】
文章链接:http://soscw.com/index.php/essay/85614.html