String

final

用final修饰数组,数组不可以改变,用final修饰class,类不可以继承。

存储

char byte

char数据类型是16位无符号Java基元数据类型.
byte字节数据类型是8位有符号Java原语整数数据类型

jdk 不同版本存储数组改变

jdk8 以前
jdk9 byte
jdk17 byte

Latin1

ISO-8859-1的别名,有些环境下写作Latin-1。ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。

jdk9 新增

coder

coder变量代表编码的格式,目前String支持两种编码格式Latin-1和UTF-16。Latin-1需要用一个字节来存储,而UTF-16需要使用2个字节或者4个字节来存储。

据说这一改进方案是JDK的开发人员用大数据和人工能智能,调研了成千上万的应用程序的heapdump信息后,得出:大部分的String都是以Latin-1字符编码来表示的,只需要一个字节存储就够了,两个字节完全是浪费。

COMPACT_STRINGS

COMPACT_STRINGS属性则是用来控制是否开启String的compact功能。默认情况下是开启的。可以使用-XX:-CompactStrings参数来对此功能进行关闭。

字符串拼接

相同点1:concat方法 和直接用“+”连接符拼接都可以对两个字符串进行拼接。

相同点2:两种拼接方法都会重新形成一个新的字符串,这是因为字符串的内容永远不可变,所以拼接一定会形成一个新的字符串。

不同点:concat只能连接两个字符串;但是"+“连接符可以将字符串与非字符串类型拼接到一起(注意:只要两个当中有一个是字符串类型,用”+"连接符就会拼接成一个新的字符串)。

除此之外,当我们生成一个class文件,再进行反编译的时候,通过concat源码可以发现,用连接符进行连接,StringBuilder创建了更多的对象,而concat却没有,它使用的String类的内部实现。

参考链接:

https://blog.csdn.net/wtt15100/article/details/108014448

https://blog.csdn.net/sufu1065/article/details/114650633#:~:text=String%E7%B1%BB%E5%8F%AF%E4%BB%A5%E8%AF%B4%E6%98%AFJava%E7%BC%96%E7%A8%8B%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%9C%80%E5%A4%9A%E7%9A%84%E7%B1%BB%E4%BA%86%EF%BC%8C%E5%A6%82%E6%9E%9C%E8%83%BD%E5%AF%B9String%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%80%A7%E8%83%BD%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96%EF%BC%8C%E9%82%A3%E4%B9%88%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%80%A7%E8%83%BD%E5%BF%85%E7%84%B6%E8%83%BD%E5%A4%A7%E5%B9%85%E6%8F%90%E5%8D%87%E3%80%82,%E8%BF%99%E4%B8%8DJDK9%E5%B0%B1%E5%AF%B9String%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BF%9B%E8%A1%8C%E4%BA%86%E6%94%B9%E8%BF%9B%E5%8D%87%E7%BA%A7%EF%BC%8C%E5%9C%A8%E6%9F%90%E4%BA%9B%E5%9C%BA%E6%99%AF%E4%B8%8B%E5%8F%AF%E4%BB%A5%E8%AE%A9String%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%86%85%E5%AD%98%E5%87%8F%E5%B0%91%E4%B8%80%E5%8D%8A%EF%BC%8C%E8%BF%9B%E8%80%8C%E5%87%8F%E5%B0%91JVM%E7%9A%84GC%E6%AC%A1%E6%95%B0%E3%80%82

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值