首页 > 编程语言 >Java基础-详解String类

Java基础-详解String类

时间:2024-07-19 21:41:33浏览次数:14  
标签:Java String StringBuilder 详解 StringBuffer 字符串 final 常量

为什么String类是不可变的

public final class String{

    private final char[] value;
}

由以上String类的源码可以看出,String类内部使用字符数组char[]来存储字符串(Java 9后修改为byte[]字节数组),而且数组被final修饰且为私有的,String类没有提供修改该字符串方法,
以及由于String类被final修饰所以无法继承,避免子类破坏String不可变。

String与StringBuilder、StringBuffer的比较

  1. StringStringBuffer是线程安全的,而StringBuilder不是线程安全的;
  2. 只要String是不可变的,StringBuilderStringBuffer都可以修改;
  3. 性能:StringBuilder>StringBuffer>String
  4. 用途:
    • 少量数据:String
    • 大量数据单线程: StringBuilder
    • 大量数据多线程: StringBuffer

字符串 + 拼接

字符串+拼接实际上调用的是StringBuilderappend方法,再通过toString()得到String,这样如果循环内使用+拼接字符串的话会重复创建StringBuilder,可以直接使用StringBuiler避免这个问题。(JDK9之后已经解决了这个问题)

字符常量池

字符常量池是JVM给字符串专门开辟的区域,可以避免字符串重复创建,常量池在中。
字符串常量池实际上是由HashTable实现的,保存的字符串(key)对字符串对象的引用(value),字符串对象的引用则指向堆中的字符串对象。

标签:Java,String,StringBuilder,详解,StringBuffer,字符串,final,常量
From: https://www.cnblogs.com/frankLiang442/p/18312436

相关文章

  • Javaweb项目|电子商城购物平台的设计与开发+ssm小程序
    Javaweb项目|电子商城购物平台的设计与开发+ssm小程序收藏点赞不迷路 关注作者有好处文末获取源码一、系统展示二、万字文档展示 基于电子商城购物平台的设计与开发+ssm小程序开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat......
  • JavaScript 异步编程:提升现代Web应用的性能与体验
    异步概念解析在编程领域,异步(Asynchronous)是一种允许程序继续执行而不等待某个操作完成的机制,与之相反的是同步(Synchronous),其中程序会暂停并等待每个操作完成才继续下一步。异步编程的核心优势在于提高了应用程序的响应性和资源利用率。想象一下,你正在厨房准备晚餐,同步操作......
  • Java毕业设计基于Vue+SpringBoot体育竞赛成绩管理系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍体育竞赛是各种体育体育项目比赛的总称。是在裁判员的主持下,按统一的规则要求,组织与实施的体育员个体或体育队之间的竞技较量,是竞技体育与社会发生关联,并作用于社会的媒介,随着......
  • Java毕业设计基于Vue+SpringBoot医药销售系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍随着我国医药销售系统的放开和国家加快发展医药销售连锁经营相关政策的出台,我国各地区医药销售数量快速增长,医药销售之间的竞争也日益激烈.但是,目前医药销售行业之间的竞争基本......
  • 学习Java的第五天(2024.7.18)
    1.字符串类:String类String类:是引用类型,默认值为null(注意不是空串"")字符串的声明:publicstaticvoidmain(String[]args){//声明字符串Stringstr="abc你好";System.out.println(str);str=newString("");//和strnewString();输出结果都......
  • Java关于注解的使用、如何自定义注解、如何通过元注解解析注解
    注解的介绍Java中总共有五大引用数据类型:类、数组、接口、枚举、注解。其中注解是在jdk1.5版本中加进来的特性,和类,接口,枚举是同一个层次的。注解应用:说明:一般用来对代码进行说明,方便生成doc文档(API文档)检查:检查代码是否符合条件@Override(检查重写方法)@FunctionalInter......
  • 学习Java的第六天(2024.7.19)
    1.容器类、集合类之前学过的容器:数组,但是数组有局限:1.数组存储的数据类型有限制2.数组存储的长度受限2.容器类分为:List,Set,Map3.List类:List是一个接口,他的实现类有:ArrayList,LinkedList,Vectorpublicstaticvoidmain(String[]args){Listlist=newArrayLi......
  • 0基础学JAVA(第六天)
    1.List集合list容器(集合)  之前学过的集合是数组,但是数组只能存储一种类型的数据,而且一旦声明长度之后不能更改,只能建立一个新的数组,所以为了解决这个弊端建立了listlist  接口     有三个实现类:ArrayList    LinkList  Vector1.添加元素  ......
  • 0基础学JAVA(第五天)
    1.String类String类是一个引用类型,默认值为null;字符串在声明之后是一个常量,不能改变,是一个privatefinal修饰的value,只能在类的内部访问,而且类的内部没有提供任何修改的方法,所以是一个常量1.声明字符串:Stringstri="abc你好";stri=newString();stri=n......
  • 0基础学JAVA!!!(第四天)
    1.包装类整型:Byte,Short,Integer,Long浮点型:Float,Double字符型:Character布尔型:BooleanIntegerinta=21;Integerintb=12;System.out.println(inta==intb);Integerintac=200;Integerintc=200;System.out.prin......