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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

sql int 转string_由String引发的思考

發布時間:2024/10/6 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql int 转string_由String引发的思考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在研究GO語言,其中提到?字符串就是一串固定長度的字符連接起來的字符序列。則由此產生聯想,在JVM中String的長度限制是多少?而且在實際應用(智慧社區)中也遇到過相似場景:前端同學將圖片轉碼成Base64的形式用字符串存儲到后端,然后運行時再轉回來。雖然這么做有點奇葩,但是存在即合理吧。今天,就來談一下這個String在JVM中到底有沒有限制。

JVM中STRING的存儲

String其實是使用一個char類型的數組來存儲字符串中的字符,其源碼如下:

public final class String ? ?implements java.io.Serializable, Comparable<String>, CharSequence { ? ?/** The value is used for character storage. */ ? ?private final char value[]; ? ? ? ?/** ? ? * Returns the length of this string. ? ? * The length is equal to the number of Unicode ? ? * code units in the string. ? ? * ? ? * @return the length of the sequence of characters represented by this ? ? * ? ? ? ? object. ? ? */ ? ?public int length() { ? ? ? ?return value.length; ? }}

敲黑板!!!重點來了

數組的長度是int類型,Java中定義數組是可以給數組指定長度的,如果不指定,則默認根據數組元素來指定。

int[] arr = {1,2,3,4,5,6}int[] lenArr = new int[5]

整數在java 中是有限制的,看這里或看以下源碼就可得知,int的最大限制為231 -1

public final class Integer extends Number implements Comparable<Integer> { ? ?/** ? ? * A constant holding the minimum value an {@code int} can ? ? * have, -231. ? ? */ ? ?@Native public static final int ? MIN_VALUE = 0x80000000; ? ?/** ? ? * A constant holding the maximum value an {@code int} can ? ? * have, 231-1. ? ? */ ? ?@Native public static final int ? MAX_VALUE = 0x7fffffff;}

那么說明了數組的長度是0~231 -1,大約為4GB。

看到這兒是不是不太相信,我也不太信,讓事實來說話

再加一個字符

不是說好的4G嗎?怎么肥事?

public class TestString { ? ?final static String s = "" + ? ? ? ? ? ?"65534個字符串" +"1"+ ? ? ? ? ? ?""; ? ?public static void main(String[] args) { ? ? ? ?System.out.println(s.length()); ? ? ? ?System.out.println(s); ? }}

因為我設置的是final類型 ,所以根據JVM規范,字面量形式的字符串,在編譯時會將其放在常量池中,這時候JVM對這個常量池存儲String類型做出了限制:

常量池中,每個 cp_info 項的格式必須相同,它們都以一個表示 cp_info 類型的單字節 “tag”項開頭。后面 info[]項的內容 由tag 的類型所決定。

我們看到String類型的表示是 CONSTANT_String ,我們來看下CONSTANT_String具體是如何定義的。

這里定義的 u2 string_index 表示的是常量池的有效索引,其類型是CONSTANT_Utf8_info 結構體表示的,這里我們需要注意的是其中定義的length我們看下面這張圖。

在class文件中u2表示的是無符號數占2個字節單位,我們知道1個字節占8位,2個字節就是16位 ,那么2個字節能表示的范圍就是2^16- 1 = 65535

所以總結如下:

字符串的內容是由一個字符數組 char[] 來存儲的,由于數組的長度及索引是整數,且String類中返回字符串長度的方法length() 的返回值也是int ,所以通過查看java源碼中的類Integer我們可以看到Integer的最大范圍是2^31 -1,由于數組是從0開始的,所以數組的最大長度可以使【0~231-1】通過計算是大概4GB。

但是通過翻閱java虛擬機手冊對class文件格式的定義以及常量池中對String類型的結構體定義我們可以知道對于索引定義了u2,就是無符號占2個字節,2個字節可以表示的最大范圍是216 -1 = 65535。其實是65535,但是由于JVM需要1個字節表示結束指令,所以這個范圍就為65534了。超出這個范圍在編譯時期是會報錯的,但是運行時拼接或者賦值的話范圍是在整形的最大范圍。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的sql int 转string_由String引发的思考的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇太爽了太深了太硬了 | 日韩一区欧美二区 | 青青草久 | 中文字幕伊人 | 伊人久久久久久久久久 | 可以直接看的毛片 | 99热精品在线 | 蜜臀久久99精品久久久久宅男 | 亚洲一二三在线 | 亚洲美女久久 | 婷婷成人综合网 | 在线免费小视频 | 日韩精品视频网 | 在线免费国产视频 | av资源中文在线 | 超碰97色 | 五月婷婷av | 风韵丰满熟妇啪啪区老熟熟女 | 亚洲精品伊人 | 香蕉视频三级 | 在线欧美成人 | 公车乳尖揉捏酥软呻吟 | 一级女人毛片 | 一级视频在线免费观看 | 乡村性满足hd | 粉嫩av一区 | 女人久久久久 | 中国一级大黄大黄大色毛片 | 性史性dvd影片农村毛片 | 久久婷婷婷 | 天天躁日日躁狠狠躁av | 欧美色精品在线 | 日韩av网站在线播放 | 精品成人18 | 蜜臀av无码精品人妻色欲 | 亚洲专区一区 | 女人脱下裤子让男人捅 | h部分肌肉警猛淫文 | 最新黄色av网址 | 欧美波霸影院 | a一级网站 | 在线亚洲精品 | 欧美精品第一区 | 爱射网| 五月天综合久久 | 国产人成无码视频在线观看 | 成人午夜网址 | 久久免费激情视频 | 91精品国自产 | 善良的女邻居在线观看 | youjizz日韩 | 男朋友是消防员第一季 | 夜色视频在线观看 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 青青草视频在线看 | 高清黄色一级片 | 欧美三级韩国三级日本三斤在线观看 | 网址你懂的在线 | 亚洲一区二区三区中文字幕 | 91色在线视频 | 芒果视频污污 | 亚洲色偷偷色噜噜狠狠99网 | 草比视频在线观看 | 成人激情视频在线观看 | 亚洲小视频在线 | 亚洲一区在线看 | 少妇被狂c下部羞羞漫画 | 欧美高清视频在线观看 | 国产麻豆精品视频 | 激情久久久久久久 | 精品h| 在线观看免费视频国产 | 亚洲精品视频导航 | 中文字幕在线精品 | 最新黄色网页 | 少妇色综合 | 亚洲综合av一区二区三区 | 成人交性视频免费看 | 国产污污视频 | 精品一区二区三 | 韩国三级做爰视频 | 男生操男生网站 | 国产黄页 | 国产三级精品视频 | 午夜伦理视频 | 在线看国产精品 | 欧美大片在线看 | 性日韩| 亚洲一区二区在线 | 99re6在线精品视频免费播放 | 中出av在线| 日本人妖xxxx | 欧美黄色三级 | 日本久久亚洲 | 在线伊人 | 国产做a| 欧美精品日韩在线观看 | 国产成人精品午夜福利Av免费 | 免费网站黄色 |