String字符串原理

本文探讨了Java中的String类型,解释了String对象如何用于存储字符序列,并指出其基于Unicode编码。String是final的,不能被继承且不可变,但可以通过引用改变其内容。文章还对比了JDK1.7之前和1.8之后字符串常量池的位置变化,从方法区到堆空间的迁移。
摘要由CSDN通过智能技术生成

我们在开发中用到的最多的是String类型;

概念:String对象用于保存字符串,也就是一组字符序列。字符串常量对象是用双引号括起来的字符序列比如 “dsdsd”,"兰陵笑笑生",“编号89757”,字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉子)占两个字节,String类比较常用的构造方法:

 String实现了Serializable,,说明String可以序列化

 String是final不可以被继承 不可以被修改(内存地址不可以修改,内容是可以修改的)底层实际上是通过char数组实现。

JDK1.7之前字符串常量池:

 当我们类加载读取class文件的时候,直接将苏小小这个字符串存储到方法区的字符串常量池中,我们在栈中开辟一个空间的话,绝对会有一块内存地址指向对应的常量池,通过地址从对应的常量池中获取到对应字符串进行输出。

JDK1.8字符串常量池:

JDK1.8直接把 方法区改名元空间了,字符串常量池放到堆空间中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值