1、本篇博客主要介绍一些类型转换的小细节
2、转换细节
2.1 byte向int的转换
int x=3;
byte b=5;
x=x+b;
System.out.println("结果是"+x);
因为这是小范围(byte)向大范围(int)转换,所以可以自然转换。这里说byte是小范围,是相对于int来说的,同样,说int是大范围也是相对于byte来说的。
2.2 int向byte的转换
byte b=3;
b=(byte)(b+200); //强制类型转换
System.out.println("结果是"+b);
因为这里是大范围(int)向小范围(byte)的转换,所以不可以自然转换,需要进行强制类型转换。这里说byte是小范围,是相对于int来说的,同样,说int是大范围也是相对于byte来说的。
2.3 字符和数字的转换
2.4 类型转换中一个有趣的现象
byte b1=3;
byte b2=5;
byte b=b1+b2;//编译会 报错,因为右边是变量,不确定是否会超出范围
我们可以看到,右边的数字算出来明明没有超出byte的范围,但是还是报错了。但是如果是int就不编译报错了。
int b1=3;
int b2=5;
int b=b1+b2;//这里编译不会报错,因为int是默认的整数类型,
//如果超过了,会变成负数
这些小细节,我们在平时工作过程中,有开发工具帮我们指出来,但是在面试中,都是在纸上,假如问我们那个能不能编译通过,我们很容易掉进坑里。
3、源码如下
class VarDemo2
{
public static void main(String[] args)
{
// int x = 3;
// byte b = 5;
// x = x + b;
// byte b = 3;
// b = (byte)(b + 200);//强制类型转换。
//System.out.println((char)('a'+1));
// System.out.println('你'+0);//unicode国际标准码表。
byte b = 4;
//b = 3+7;
byte b1 = 3;
byte b2 = 7;
//b2 = 127;
int x;
//byte b = b1 + b2; 编译会报错,因为右边是变量,不确定是否会超过范围。
int x1 =7 ;
int x2 =2;
x = x1+x2;
//System.out.println(x); 这里编译不会报错,因为int是默认的整数类型。
//如果超过了,会变成负数。
int n = 8;
n = 9;
n = 19;
//System.out.println(n);
}
}