Ⅰ java 變數數據類型轉換byte, short, char, int, long, float, double
byte b1 = 3; byte b2 = 4; byte b = b1-b2這個之所以報錯,是因為在進行b1-b2的運算時,會自動將b1和b2提升成int型,所以最後結果也是int型,需要進行強制裝換,才能賦值給byte型變數
默認排序你似乎有點搞錯,應該是byte,char,short,int,long,float,double
Ⅱ 【求大神】在java中關於char與byte short 的常量自動轉換問題
在Java中,char是16bit長的無符號整數,因此范圍是:0~65535,而short則是16bit長的帶符號整數,范圍是-32768~32767。 所以,兩者雖然字長相同,但意義卻不一樣(表示範圍並不完全重合或包含),因此不管是char轉換成short,還是short轉換成char,都可能「丟失精度」,因此必須強制轉換。雖然,這里的「丟失精度」跟從int到short的丟失精度給人的感覺似乎不一樣,但仔細想想也沒有什麼區別,一方面,char有16個bit表示數值,而short用於表示數值大小的只有15個bit,因此,從char到short會「丟失數值精度」,而另一方面,short有1個bit表示數值的符號,而char卻根本沒有這么個符號位(所有的bit都用來表示數值大小了),所以從short到char也可能「丟失精度」,只是這里丟失的是有關正負的「精確程度」。
你上面的代碼改成如下:
byteb1='a';//正確b1=97
charc1=(byte)97;//正確c1='a'
byteb2=(byte)c1;
charc2=(char)b1;
shorts1='a';//;正確s1=97
charc3=(short)98;//正確c3='b'
shorts2=(short)c3;
charc4=(char)s1;
順便提一句:每一句java代碼的結束語句後面的分號必須是英文輸入法狀態下的分號。否則報錯。
Ⅲ java short[] 轉換成 byte[] 然後 byte[] 在轉換成 short[]
byte佔用一個位元組,short佔用兩個位元組。
你可以將short數組中的元素兩個位元組截取出來,分別存放到byte數組中。
然後在還原成short元素。
如果滿意,請採納,謝謝。
Ⅳ java short 數組轉換 byte數組
可以通過循環再加強制轉換來進行轉換,如下
short[]one={1,2,3};
byte[]two=newbyte[one.length];
for(inti=0;i<two.length;i++){
two[i]=(byte)one[i];
}
for(byteb:two){
System.out.println(b);
}
Ⅳ 為什麼java虛擬機jvm要把byte和short的運算都轉為int
對的,記得以前看"JAVA虛擬機規范「還是哪本書上,就是這么寫的。
就是boolean也就轉為int,只不過是轉為0和1
Ⅵ java short 數組轉換 byte
short[] s = {0, 1, 0, 1, 0, 1, 0, 0};
String str = "";
for(int i = 0; i < s.length; i++){//把數組轉成一個字元串01010100
str += s[i];
}
byte b = Byte.parseByte(str, 2);//二進制字元串轉成byte
b就是你想要的byte, 值為十進制84, 16進制0x54
當然也可以用位移運算
short[] s = {0, 1, 0, 1, 0, 1, 0, 0};
byte p = 0;
for(int i = 0; i < s.length; i++){
p += s[i]<<(s.length - 1 - i);
}
System.out.println(p);
Ⅶ Java中如何將兩個無符號的byte轉換為一個有符號的short
這個是可以進行轉換和復原的,舉例:
short x = -32752;//定義一個short
byte high = (byte) (0x00FF & (x>>8));//定義第一個byte
byte low = (byte) (0x00FF & x);//定義第二個byte
System.out.println(high);//列印第一個byte值
System.out.println(low);//列印第二個byte值
// 復原
short z = (short)(((high & 0x00FF) << 8) | (0x00FF & low));
System.out.println(z);//輸出的結果就是-32752
Ⅷ java中Short類中的byteValue()方法怎麼用
首先給你個小建議,以後遇到這種問題要記得去查javaAPI
這是API中的Short構造函數的描述:
Short
public Short(short value)
構造一個新分配的 Short 對象,用來表示指定的 short 值。
參數:
valueShort - 所表示的值。
Short
public Short(String s)
throws NumberFormatException
構造一個新分配的 Short 對象,用來表示 String 參數所指示的 short 值。將字元串轉換為 short 值,轉換方式與基數為 10 的 parseShort 方法所用的方式完全相同。
參數:
s - 要轉換為 Short 的 String
拋出:
NumberFormatException - 如果 String 不包含可解析的 short。
另請參見:
parseShort(java.lang.String, int)
也就是說short是不收int型的構造參數的;第一行改一下