Java中的强制类型转换?求大神解答!解决办法
Java中的强制类型转换?求大神解答!
public class Lesson
{
public static void main (String args[])
{
int a=130;
byte b=(byte)a;
int c=-130;
byte d=(byte)c;
System.out.println(b);
System.out.println(d);
}
}
输出的b=-126 d=126 //不懂?
为什么不是b=-130 d=125?
130 10000010
强制成byte类型后任是 10000010 为-130. 为什么执行后是-126?
------解决方案--------------------
用Windows自带的计算器尝试一下你就知道了
首先int类型的130,二进制表示为00000000000000000000000010000010,转换为byte的规则是直接舍弃高24位,所以变成10000010,但谁告诉你这是-130了?你如果不会手动转换,那么看下面的计算器:
第二,int类型的-130,二进制表示为:
舍弃24位,转换为byte就是:
------解决方案--------------------
public class Lesson
{
public static void main (String args[])
{
int a=130;
byte b=(byte)a;
int c=-130;
byte d=(byte)c;
System.out.println(b);
System.out.println(d);
}
}
输出的b=-126 d=126 //不懂?
为什么不是b=-130 d=125?
130 10000010
强制成byte类型后任是 10000010 为-130. 为什么执行后是-126?
------解决方案--------------------
用Windows自带的计算器尝试一下你就知道了
首先int类型的130,二进制表示为00000000000000000000000010000010,转换为byte的规则是直接舍弃高24位,所以变成10000010,但谁告诉你这是-130了?你如果不会手动转换,那么看下面的计算器:
第二,int类型的-130,二进制表示为:
舍弃24位,转换为byte就是:
------解决方案--------------------
public class Lesson
{
public static void main (String args[])
{
int a=130;
byte b=(byte)a;
int c=-130;
byte d=(byte)c;
System.out.println(b);
System.out.println(d);
}
}
输出的b=-126 d=126 //不懂?
为什么不是b=-130 d=125?
130 10000010
强制成byte类型后任是 10000010 为-130. 为什么执行后是-126?
nihao,
555555
public class Lesson
{
public static void main (String args[])
{
int a=130;
byte b=(byte)a;
int c=-130;
byte d=(byte)c;
System.out.println(b);
System.out.println(d);
}
}
输出的b=-126 d=126 //不懂?
为什么不是b=-130 d=125?
130 10000010
强制成byte类型后任是 10000010 为-130. 为什么执行后是-126?
nihao,
555555