string是什么意思(string函数的用法)
作者|平头哥的技术博文
编辑|屠敏
出品| CSDN博客
字符串对象的实现
字符串对象是Java中使用频率最高的对象之一,因此Java公司也在不断优化字符串对象的实现,以提高字符串对象的性能。看下图了解一下String对象的优化过程。
1.在Java6和早期版本中
String对象是封装char数组的对象。它主要有四个成员变量:char数组、offset偏移量、字符数和hash值hash。
String对象是通过offset和count属性定位char数组获得字符串。这样可以高效快速的共享数组对象,同时节省内存空,但是这种方法很可能会导致内存泄漏。
2.从Java7版本到Java8版本
从Java版本7开始,Java对String类做了一些修改。String类中不再有offset和count变量。这种方法的好处是String对象占用的内存略少,同时String.substring方法不再共享char,解决了使用这种方法可能带来的内存泄漏问题。
3.从Java9版本开始
将字符数组改为字节数组。为什么需要这么做?我们知道char是两个字节。如果用来存储一个字节的字符有点浪费,为了节省空,Java公司把它改成了一个字节来存储字符串。这样,当存储一个字节的字符时,避免了浪费。
在Java9中,维护了一个新的属性编码器,它是编码格式的标识。在计算字符串长度或调用indexOf函数时,需要根据该字段判断如何计算字符串长度。默认情况下,Coder属性有0和1两个值,0表示Latin-1(单字节编码),1表示UTF-16编码。如果字符串判断字符串只包含Latin-1,则coder属性的值为0,否则为1。
如何创建一个字符串对象
1.通过字符串常量
String str= "pingtouge "形式。使用这种形式创建字符串时,JVM会先检查对象是否存在于字符串常量池中,如果存在,则返回对象的引用地址;如果不存在,在字符串常量池中创建字符串对象并返回引用。这种方法的优点是:避免重复创建相同值的字符串,节省内存。
2.字符串构造方法:红豆博客
String = new string(“ping touge”),这种方式创建string对象的过程比较复杂,分为两个阶段。首先,字符串pingtouge将在编译时被添加到constant结构中,它将在加载类时在constant池中创建。然后在调用new时,JVM会调用String的构造函数,引用常量池中的pingtouge字符串,在堆内存中创建一个String对象并返回堆中的引用地址。
理解了创建字符串对象两种方式,让我们分析下面的代码来加深对这两种方式的理解。以下代码中str等于str1吗?
String str = "pingtouge";String str1 = new String("pingtouge");system.out.println(str==str1)让我们从String str = "pingtouge "开始,逐一分析这几行代码。这里,我们使用字符串常量来创建字符串对象。在创建pingtouge字符串对象时,JVM会去常量池查找字符串是否存在。这里的答案肯定是否定的,所以JVM会在常量池中创建string对象,并返回对象的地址引用,所以str指的是常量池中pingtouge string对象的地址引用。
然后是String str1 = new String("pingtoug红豆博客e "),使用构造函数创建一个String对象。按照我们对构造函数创建string对象的理解,str1应该会得到pingtouge string在堆中的引用地址。由于str指的是pingto红豆博客的uge字符串对象在常量池中的地址引用,str1指的是pingtouge字符串在堆中的引用地址,所以str肯定不等于str1。
字符串对象的不变性
从我们知道字符串对象的那一刻起,我想每个人都知道字符串对象是不可变的。那怎么是不可改变的呢?Java能带来什么好处?下面我们一起来简单讨论一下。让我们先来看看String对象的源代码:
public final class Stringimplements java.io.Serializable, Comparable- 1bat的大数据(BAT的大数据来源)
- 2三星s8屏幕上端2(三星s8屏幕上端2个按键)
- 3三星屏幕坏了如何导出(三星屏幕摔坏了如何导出数据么)
- 4红米3x怎么关闭自动更新(红米k40s怎么关闭自动更新)
- 5微信上防止app自动下载软件怎么办(微信上防止app自动下载软件怎么办啊)
- 6押镖多少钱(押镖一个月有多少储备金)
- 7瑞星个人防火墙胡功能(瑞星个人防火墙协议类型有哪些)
- 8cf现在等级是多少(cf等级2020最新)
- 9老滑头多少条鱼(钓鱼老滑头有什么用)
- 10WPS自动调整语法(wps如何修改语法)
- 11dell控制面板防火墙(dell的防火墙怎么关闭)
- 12丑女技能升多少(丑女技能需要满级吗)
- 13智能家居系统怎么样(智能家居系统好吗)
- 14戴尔屏幕(戴尔屏幕闪烁)
- 15y85屏幕信息(vivoy85息屏显示时间怎么设置)
- 16魅蓝note3屏幕出现方格(魅蓝note屏幕竖条纹)
- 17v8手指按屏幕(触屏手指)
- 18金为液晶广告机(液晶广告机lb420)
- 19三星显示器怎么校色(三星显示器 调色)
- 20hkc显示器dvi音频(hkc显示器有音响么)
- 21康佳液晶智能电视机(康佳液晶智能电视机怎么样)
- 22做液晶画板电脑(做液晶画板电脑怎么操作)
- 23液晶屏极化现象原理(液晶屏极化现象原理是什么)
- 24企业网络安全防火墙(企业网络防护)
- 256splus黑屏屏幕不亮(苹果6s plus屏幕突然黑屏)
- 26充电导致屏幕失灵(充电导致屏幕失灵怎么办)
- 27超极本屏幕旋转(笔记本电脑屏幕旋转,怎么转过来?)
- 28igmp防火墙(防火墙配置ipv6)
- 29荣耀王者多少经验(王者荣耀经验多少一级)
- 30lol老将还剩多少(qg老将)