能不能帮我解决一个问题?
在Java中,byte类型数据在运算之前要转换成int类型数据。
比如:
byte a=1;
byte b=2;
byte c;
c=a+b; //这样是计算不出c,是错误的
c=a+1; //这样也是不能计算c的
c=64+1; //为什么这样就能计算c,在Java中这是什么原理啊?
我就是不知道,64+1 Java是怎么编译的,为什么没有变成int型?
谢谢大家,我已经有了更满意的答案。
字面量是对信息、数据的一个表述。或者说是我们直接用来表述的数值或字符。
比如:byte a=64; //其中64就是字面量。
1,2,64等等是整数字面量,它们默认是int型。而1.2,3.4等等是浮点字面量,默认是double型。
不是默认类型字面量,要在其后加上类型标识。
比如:46+7.8f
对于整数字面量,Java编译系统会自动匹配字面量的类型。
当一个int型字面量的值被赋给一个byte 或short型的变量时,如果字面量的值没有超过对应类型的范围时,就不会产生错误。然而,其他类型的字面量(如:short,long,char,double等等)是没有这个功能的。
所以,byte c; c=64+1; //65在byte的范围之内,可以赋值给c。
在Java中,byte类型数据在运算之前要转换成int类型数据。
首先你要明确一点byte类型表示一个字节8位,用来表示一些基本字符,int是长度为32位的整形数。当你在Java中给一个byte类型数据初始化时,你可以用字符,也可以用整数,但是这个整数必须要在-128和127之间(因为byte是8位),它会将这个数转化为一个字符然后存放起来,因此你的前两行代码是没有问题的。
java如何将byte类型数组变成int类型的数组?
大端序:int[i] = byte[4*i] << 24 | byte[4*i+1] << 16 | byte[4*i+2] << 8 | byte[4*i+3];小端序:int[i] = byte[4*i] | byte[4*i+1] << 8 | byte[4*i+2] << 16 | byte[4*i+3] << 24;
java如何把byte数组里的十六进制转换成int类型,如下图的数据,杂么转换...
package com.sdvdxl.other;public class Test {public static void main(String[] args) {byte[] bytes = new byte[] {0x00,0x53};for (byte b : bytes) {System.out.println(Integer.valueOf(b));}}}结果:0 83 PS : 使用的时候会自动转换成10进制的 ...
求java编程 字节byte怎么转换成整形int?
Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。而0xff默认是整形,所以,一...
Java中byte整数类型想加为何会自动转化为int整数类型想加
因为int是java默认的整型类型,而且byte的范围很小,很容易溢出,所以会自动转为int。
java 如何将byte[4]数组转换成一个int型数据
java中将4字节的byte数组转成一个int值的工具方法如下:\/ param byte[]return int \/ public static int byteArrayToInt(byte[] b){ byte[] a = new byte[4];int i = a.length - 1,j = b.length - 1;for (; i >= 0 ; i--,j--) {\/\/从b的尾部(即int值的低位)开始copy数...
java如何将byte[4]数组转换成一个int型数据?
connect(pos);\\x0d\\x0aDataInputStream dis = new DataInputStream(pis);\\x0d\\x0aDataOutputStream dos = new DataOutputStream(pos);\\x0d\\x0a\/\/先写4个字节\\x0d\\x0ados.write(bs,0,bs.length);\\x0d\\x0a\/\/读取整型\\x0d\\x0ar = dis.readInt();...
如何把一个byte数组的数字转换成int
这里简单记录下两种转换方式:第一种:1、int与byte[]之间的转换(类似的byte short,long型)[java] view plain copy \/** * 将int数值转换为占四个字节的byte数组,本方法适用于(低位在前,高位在后)的顺序。 和bytesToInt()配套使用 * @param value * 要转换的int值 * @re...
博图如何把byte转换成int
在Java中,byte是8位有符号的整数类型,而int是32位有符号的整数类型。当我们将byte类型的值转换成int类型时,由于int类型的范围比byte类型更大,所以可以正常进行转换。转换的过程中,byte类型的值会被扩展为32位,并保持其符号位不变。拓展内容:除了使用数据类型转换操作外,还可以使用Java中的包装类...
求助~java基础问题byte型
在计算的时候byte 和short 都会被转换成int 所以结果也是int 这个时候需要强制转型 z = (byet)(x + y);