1.String

在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。那创建String对象的方法如下:

public class Tesmain {public static void main(String[] args) {// TODO Auto-generated method stubString str1 = "Java Study";String str2 = "Java Study";String str3 = new String();str3 = "Java Study";String str4 = new String("Java Study");String str5 = new String("Java Study");System.out.println(str1 == str2);System.out.println(str1 == str3);System.out.println(str1 == str4);System.out.println(str4 == str5);System.out.println(str4.equals(str5));}}

输出结果如下:

true
true
false
false
true

那么,“==” 和 equals() 有什么区别呢?

==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

equals(): 比较存储在两个字符串对象中的内容是否一致

java为String类型提供了缓冲池机制,当使用双引号定义对象时,Java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用,如果不存在则创建一个新的字符串放在缓冲池中。且该位置字符串相加变成了对象所以是false。

String 类提供了许多用来处理字符串的方法,例如,获取字符串长度、对字符串进行截取、将字符串转换为大写或小写、字符串分割等,下面我们就来领略它的强大之处吧。

2.StringBuffer

在Java中,除了可以使用 String 类来存储字符串,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串,那么它们之间有什么区别呢?

String str = "hello";
System.out.println(str + "world");
System.out.println(str);

这是我们经常输出的形式。第一个输出:hello world,第二个输出hello

程序运行时会额外创建一个对象,保存 "helloworld"。当频繁操作字符串时,就会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。

public class HelloWorld {public static void main(String[] args) {   // 创建一个StringBuilder对象,用来存储字符串StringBuilder hobby=new StringBuilder("hello world");System.out.println(hobby);}
}

StringBuilder 类提供了很多方法来操作字符串:

这里任意创建一个StringBulider字符串,然后冲后往前每三个字符插入一个|进行分隔

// 创建一个空的StringBuilder对象
StringBuilder str = new StringBuilder("");// 追加字符串
str.append("jaewkjldfxmopzdm");// 从后往前每隔三位插入逗号
for(int i = str.length()-3; i >=0 ; i=i-3){
str.insert(i,",");   }// 将StringBuilder对象转换为String对象并输出
System.out.print(str.toString());

Java之String,StringBuffer,StringBuilder相关推荐

  1. 【翻译】Java中String, StringBuffer, StringBuilder的区别

    2019独角兽企业重金招聘Python工程师标准>>> String 是  Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...

  2. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  3. Java中String,StringBuffer,StringBuilder的区别

    String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 运行速度 StringBuilder > StringBuffe ...

  4. 2.Java中String,StringBuilder以及StringBuffer的关系与区别

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  5. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  6. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  7. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`

    Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...

  8. Java中的String,StringBuffer,StringBuilder有什么区别?

    相信有很多同学都是经常使用String的,或者也或多或少的听说过StringBuffer,StringBuilder,那么在经常遇见的面试题中(标题),到底这三个的区别是什么呢?让我们来一探究竟! S ...

  9. String, StringBuffer,StringBuilder

    String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...

最新文章

  1. js实现审批流_JavaScript实现审核流程状态的动态显示进度条
  2. 安装nexus时遇到的一个问题
  3. Python面向对象反射,双下方法
  4. SpringMVC @RequestParam参数乱码的问题
  5. 天津2021年高考成绩查询入口,2021年天津高考成绩查询时间安排 什么时候出分
  6. Ecshop中的ajax+json
  7. eclipse java source_Eclipse中查看JAVA源代码显示SOURCE NOT FOUND解决办法
  8. 一张图看清自然语言处理脉络
  9. java 日期_Java中的日期操作
  10. HTTP认证模式:Basic and Digest Access Authentication
  11. python3 yum源_Redhat7.3更换CentOS7 yum源
  12. 5G~ SON和MDT
  13. 嵌入式常用通讯协议2(CAN协议)
  14. 详解NRF24L01无线收发模块
  15. mysql分布式集群实现原理
  16. Linux服务器(CentOS7)基础信息设置之满足等保三级测评要求
  17. c语言解除键盘锁定,笔记本键盘被锁怎么办|笔记本解除键盘锁定的四种方法
  18. 解决open-vm-tools安装时Failed to get unit file state for run-vmblockx2dfuse.mount
  19. 【Project Report】基于 QP 的优化选股策略
  20. 1413:确定进制(C C++)

热门文章

  1. VBS 自动打开软件
  2. 最小圆覆盖(Smallest Enclosing Discs)
  3. Objective-C学习笔记_命令行参数获取
  4. 创建线程(Background Thread)的N种方式
  5. 使用css的类名交集复合选择器
  6. oracle用户管理的完全恢复5:控制文件损坏(控制文件前后内容未改变)
  7. 波卡链Substrate (1)生态介绍
  8. C++ Primer 5th笔记(chap 17 标准库特殊设施)指定浮点数记数法
  9. (chap6 Http首部) 通用首部字段 Connection
  10. Linux常用的基本命令cp、mv、rm、cat、find(三)