(由于篇幅原因闡述的不夠詳細(xì)科學(xué),不喜勿噴)。
經(jīng)常看到java中對(duì)byte數(shù)組的不同定義,粗略整理的一下:
一個(gè)字節(jié)(byte)=8位(bit),“byte數(shù)組”里面全部是“byte”,即每一個(gè)byte都可以用二進(jìn)制、十六進(jìn)制、十進(jìn)制來(lái)表示。
二進(jìn)制:00010110----->0*2^8 + 0*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0 = 22
16進(jìn)制: 0x16 ------->1*16^1 + 6*16^0 = 22
十進(jìn)制:22
所以下面三者等價(jià):
byte [] aa = {00010110, 01010010, 10111000};
byte [] aa = {0x16, 0x52, 0xB8};
byte [] aa = {22, 82, 184};
在Eclipse斷點(diǎn)調(diào)試的時(shí)候,看到的byte數(shù)組內(nèi)容都是用十進(jìn)制表示。有時(shí)會(huì)看到負(fù)數(shù),因?yàn)樽止?jié)數(shù)組中超過(guò)127的數(shù)都會(huì)以負(fù)數(shù)的形式顯示。
我們知道java讀取的方式只支持字節(jié)數(shù)組,而byte是8位,所以不能超過(guò)127,如果超過(guò)就會(huì)溢出,以負(fù)數(shù)的形式顯示。
以上這篇淺談java的byte數(shù)組的不同寫法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。