日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JDK9的新特性:String压缩和字符编码

發(fā)布時間:2024/2/28 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDK9的新特性:String压缩和字符编码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • 底層實現(xiàn)
  • 總結(jié)

簡介

String的底層存儲是什么?相信大部分人都會說是數(shù)組。如果要是再問一句,那么是以什么數(shù)組來存儲呢?相信不同的人有不同的答案。

在JDK9之前,String的底層存儲結(jié)構(gòu)是char[],一個char需要占用兩個字節(jié)的存儲單位。

據(jù)說是JDK的開發(fā)人員經(jīng)過調(diào)研了成千上萬的應用程序的heap dump信息,然后得出了一個結(jié)論:大部分的String都是以Latin-1字符編碼來表示的,只需要一個字節(jié)存儲就夠了,兩個字節(jié)完全是浪費。

據(jù)說他們用了大數(shù)據(jù)+人工智能,得出的結(jié)論由不得我們不信。

于是在JDK9之后,字符串的底層存儲變成了byte[]。

更多內(nèi)容請訪問www.flydean.com

底層實現(xiàn)

先看下java9之前的String是怎么實現(xiàn)的:

public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {//The value is used for character storage.private final char value[]; }

再看下java9中String的實現(xiàn)和一些關(guān)鍵的變量:

public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/** The value is used for character storage. */@Stableprivate final byte[] value;private final byte coder;@Native static final byte LATIN1 = 0;@Native static final byte UTF16 = 1;static final boolean COMPACT_STRINGS;static {COMPACT_STRINGS = true;}

從代碼我們可以看到底層的存儲已經(jīng)變成了byte[]。

再看一下coder變量,coder代表編碼的格式,目前String支持兩種編碼格式LATIN1和UTF16。

LATIN1需要用一個字節(jié)來存儲。而UTF16需要使用2個字節(jié)或者4個字節(jié)來存儲。

而COMPACT_STRINGS則是用來控制是否開啟String的compact功能。默認情況下COMPACT_STRINGS功能是開啟的。

如果我們想關(guān)閉COMPACT_STRINGS功能則可以使用-XX:-CompactStrings參數(shù)。

總結(jié)

本文講解了新的String實現(xiàn)和COMPACT_STRINGS模式的關(guān)閉方法。

更多精彩內(nèi)容且看:

  • 區(qū)塊鏈從入門到放棄系列教程-涵蓋密碼學,超級賬本,以太坊,Libra,比特幣等持續(xù)更新
  • Spring Boot 2.X系列教程:七天從無到有掌握Spring Boot-持續(xù)更新
  • Spring 5.X系列教程:滿足你對Spring5的一切想象-持續(xù)更新
  • java程序員從小工到專家成神之路(2020版)-持續(xù)更新中,附詳細文章教程

本文作者:flydean程序那些事

本文鏈接:http://www.flydean.com/jdk9-string-compact/

本文來源:flydean的博客

歡迎關(guān)注我的公眾號:程序那些事,更多精彩等著您!

總結(jié)

以上是生活随笔為你收集整理的JDK9的新特性:String压缩和字符编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。