sig是什么意思(sig函数的用法)

生活常识 2023-04-21 18:23生活常识www.wozhengxing.cn

  作者 | 平头哥的技术博文

  责编 | 屠敏

  出品 | CSDN 博客

  String 对象的实现

  String对象是 Java 中使用最频繁的对象之一,所以 Java 公司也在不断的对String对象的实现进行优化,以便提升String对象的性能,看下面这张图,一起了解一下String对象的优化过程。

  1. 在 Java6 以及之前的版本中

  String对象是对 char 数组进行了封装实现的对百思特网象,主要有四个成员变量char 数组、偏移量 offset、字符数量 count、哈希值 hash。

  String对象是通过 offset 和 count 两个属性来定位 char 数组,获取字符串。这么做可以高效、快速地共享数组对象,节省内存空间,但这种方式很有可能会导致内存泄漏。

  2. 从 Java7 版本开始到 Java8 版本

  从 Java7 版本开始,Java 对String类做了一些改变。String类中不再有 offset 和 count 两个变量了。这样的好处是String对象占用的内存稍微少了些, String.substring 方法也不再共享 char,从而解决了使用该方法可能导致的内存泄漏问题。

  3. 从 Java9 版本开始

  将 char 数组改为了 byte 数组,为什么需要这样做呢?我们知道 char 是两个字节,如果用来存一个字节的字符有点浪费,为了节约空间,Java 公司就改成了一个字节的byte来存储字符串。这样在存储一个字节的百思特网字符是就避免了浪费。

  在 Java9 维护了一个新的属性 coder,它是编码格式的标识,在计算字符串长度或者调用 indexOf 函数时,需要根据这个字段,判断如何计算字符串长度。coder 属性默认有 0 和 1 两个值, 0 代表Latin-1(单字节编码),1 代表 UTF-16 编码。如果 String判断字符串只包含了 Latin-1,则 coder 属性值为 0 ,反之则为 1。

  String 对象的创建方式

  1、通过字符串常量的方式

  String str="pingtouge"的形式,使用这种形式创建字符串时, JVM 会在字符串常量池中先检查是否存在该对象,如果存在,返回该对象的引用地址,如果不存在,则在字符串常量池中创建该字符串对象并且返回引用。使用这种方式创建的好处是避免了相同值的字符串重复创建,节约了内存。

  2、String构造函数的方式

  String str=new String("pingtouge")的形式,使用这种方式创建字符串对象过程就比较复杂,分成两个阶段,在编译时,字符串pingtouge会被加入到常量结构中,类加载时候就会在常量池中创建该字符串。然后就是在调用new时,JVM 将会调用String的构百思特网造函数,引用常量池中的pingtouge字符串,在堆内存中创建一个String对象并且返回堆中的引用地址。

  了解了String对象两种创建方式,我们来分析一下下面这段代码,加深我们对这两种方式的理解,下面这段代码片中,str是否等于str1呢?

  我们逐一来分析这几行代码,从String str="pingtouge"开始,这里使用了字符串常量的方式创建字符串对象,在创建pingtouge字符串对象时,JVM会去常量池中查找是否存在该字符串,这里的答案肯定是没有的,所以JVM将会在常量池中创建该字符串对象并且返回对象的地址引用,所以str指向的是pingtouge字符串对象在常量池中的地址引用。

  然后是String str1=new String("pingtouge")这行代码,这里使用的是构造函数的方式创建字符串对象,根据我们上面对构造函数方式创建字符串对象的理解,str1得到的应该是堆中pingtouge字符串的引用地址。由于str指向的是pingtouge字符串对象在常量池中的地址引用而str1指向的是堆中pingtouge字符串的引用地址,所以str肯定不等于str1。

  String 对象的不可变性

  从我们知道String对象的那一刻起,我想大家都知道了String对象是不可变的。那它不可变是怎么做到的呢?Java 这么做能带来哪些好处?我们一起来简单的探讨一下,先来看看String 对象的一段源码

  版权声明本文内容由作者仓筹提供,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至907991599@qq.com 举报,一经查实,本站将立刻删除。如若转载,请注明出处http://www.cangchou.com/151285.html

上一篇:特别 下一篇:契约夫妻

Copyright@2015-2025 www.wozhengxing.cn 我整形网版板所有All right reserved -