A. java中byte類型的介紹。 謝謝
1、在Java中,byte類型的數據是8位帶符號的二進制數。最高位表示正負,0為正,1為負。
2、java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。
3、正數的最高位都是 0 ,正數的值就是二進製表示的值。
4、負數的最高位都是 1 ,負數的值是 取反後加一 然後加個負號得到的值。
(1)javabyte10擴展閱讀
1、java基本數據類型
JAVA中一共有八種基本數據類型,分別是byte、short、int、long、float、double、char、boolean。
2、java各數據類型取值范圍
byte,整型,1個位元組,范圍:-2的7次方 ~ 2的7次方-1;
short,整型,2個位元組,范圍:-2的15次方 ~ 2的15次方-1;
int,整型,4個位元組,范圍:-2的31次方 ~ 2的31次方-1;
long,整型,8個位元組,范圍:-2的63次方 ~ 2的63次方-1;
float,浮點型,4個位元組,范圍:3.402823e+38 ~ 1.401298e-45;
double,浮點型,8個位元組,范圍:1.797693e+308~ 4.9000000e-324;
char,文本型,2個位元組,范圍:0~2的16次方-1;
boolean,布爾型,1個位元組,范圍:true/false;
參考資料
網路-java字元型
B. java中byte+t【t】=new+byte【10】是什麼意思
byte t[]=new byte[10];
創建byte類型的數組,長度為10
C. java中,(byte)10 == (byte)0x0A嗎
相等。
0x代表16進制,在16進制中A就代表10,所以轉換為10進制時A就等於10。
D. java中byte b=10;byte b1=~b;編譯錯誤原因。byte b 2=~10;是正
java中byte在內存中實際上是用int運算的。b取反後,會自動變成int類型。加法、減法,都一樣,byte會自動變成int類型。所以會報錯。
而~10可以,這是java字面量編譯原則,會先將~10計算出來。在賦值給byte,所以不會有問題。
E. java中的byte有什麼作用
在今天,byte位元組就是一個八位元組,使用其它位數的機器都進了博物館。 java也提供了一個byte數據類型,並且是基本類型。java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。不幸的是,byte的用作計數的時間遠少於用表達基本內存單元的時間。比如從stream里讀入一個雙位元組字元,我們先收到2個byte。為了把byte轉換成適當的形式,需要對byte值做一些比較,比如判斷字元集要比較其是否在某個編碼范圍內,比如GBK 0x8140~0xFEFE,然後new適當的string。 signed byte 把 0x00 ~ 0xff 映射成 0~127 -128~-1 兩段,注意當與literal比較時,java自動將literal識別成int 可以用 下面的小程序來驗證: 1 public class JavaByte 2 { 3 public static void main(String[] args) 4 { 5 byte b = 0; 6 for ( int i = 0; i <= 0xff; ++i ) 7 { 8 b = (byte)i; 9 System.out.print(" "+i+":"+b+", "); 10 } 11 } 12 } 當收到(0xC7B0)這個GBK字元時,要判斷 0x81 <= 0xC7 <= 0xFE 是否成立,實際變成判斷 -127 < -57 < -2,唔,萬幸,可以直接比較 low < ch < high。如果要判斷 0x00 <= 0xC7 <= 0x80 (ASC Char),這回麻煩了,變成判斷 (0 <= -57 <= 127) || ( 0x57 == -128 )。比較簡單的辦法用 (b+256)%256的辦法令其值回到0~255,或者用&0xff並賦給一個int。考慮到jvm里的byte其實也是32位的,所以在計劃用byte的地方,直接用integer並不會有什麼實際的損失,而 DataInputStream也提供了一個readUnsignedByte()方法返回的是int。所以真正的解決方案是忘掉byte,直接上 int。至於為什麼java沒有unsigned數據類型,照下面這個interview里Jams Golsing的意思,應該是java應該簡單而unsigned算術過於復雜了會讓大多數程序員產生誤解誤用:
F. java 中定義byte b = 10;byte c = 5;b = b + c;為什麼會出現編譯錯誤呢
這個問題所涉及到的問題是「自動類型提升」:
在java中,對char, byte和short類型的字元串進行數學演算法操作,比如+,-,>>位移等操作,都會引發自動類型提升,運算結果將是int類型,要將int的值賦給byte就會出現編譯錯誤,所以就必須進行類型強制轉換。語句如下:
byteb=10;bytec=5;b=(byte)(b+c);
關於類型的自動提升,java定義若干適用於表達式的類型提升規則:
第一,所有的byte型、short型和char型的值將被提升到int型;
第二,如果一個操作數是long型,計算結果就是long型;
第三,如果一個操作數是float型,計算結果就是float型;
第四,如果一個操作數是double型,計算結果就是double型。
G. 用java,把十進制byte類型數字轉換為,十六進制的byte類型數字,格式為"0x28",這樣的!
publicclassMa{
publicstaticvoidmain(String[]args){
bytea=40;
Stringa0=Integer.toHexString(a);
System.out.println("0x"+a0);
}
}