[英]How does a byte[] in java actually store data
如果我有以下內容:
byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
我知道每個元素的大小將是一個字節。 但是我似乎不明白,整數87
將如何存儲在一個字節中? 或者, byte[]
如何存儲數據?
編輯:我看到您可以在Java中的一個字節中存儲-128到127。 那么,這是否意味着沒有辦法在byte[]
存儲大於或小於這些數字的任何內容? 如果是這樣,這是否限制了此方法的使用? 還是不了解使用byte[]
的確切位置。
字節為8位。 2^8
是256,這意味着8位可以存儲256個不同的值。 在Java中,這些值是-128到127之間的數字,因此87是有效字節,因為它在該范圍內。
類似地,嘗試執行類似byte x = 200
,您會看到錯誤,因為200 不是有效字節。
一個byte
只是一個8位整數值。 這意味着它可以保存-2 ^ 7到2 ^ 7-1之間的任何值,包括{87,79,87,46,46,46}中的所有數字。
Java中的一個integer
,僅是一個4字節的整數,允許它容納-2 ^ 31至2 ^ 31-1
Java字節是具有最小值-128和最大值127(含)的原語。 87在允許的范圍內。 字節數據類型對於在大數組中節省內存非常有用,因為內存節省實際上很重要。
byte []是一個存儲許多這些原語的對象。
我認為簡短的答案是byte []存儲字節。 數組上方的數字87是一個字節,而不是int。 如果將其更改為700(或大於127的任何值),則會出現編譯錯誤。 試試吧。
您可以使用byte
在其中存儲8位值,其(有符號)范圍為-128
至127
。
使用byte[]
您可以執行一些特殊操作,例如從給定的字節流中構建String
,並使用所需的Charset
對其進行解碼,並且某些函數將為您提供byte[]
作為其返回值。
我對JVM的內部了解不足,但它可能會節省內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.