public class Test2_9 {
public static void main(String args[]){
//java有4种整数类型:byte,short,int,long
//java的默认整数计算的结果是int类型
//整数的字面量(即整形变量=号后面的那个值)是int类型
//如果自面量超过Int型最大值,则字面量是long类型,后面要加l(不区分大小写)
//输出int型的最大值->2147483647
System.out.println(Integer.MAX_VALUE);
//给longValue一个值,使它超过Int型的最大值
//int longValue=2147483648;//出现编辑错误,超出int型最大值
//long longValue=2147483648;//超出int型的范围,要用long类型,但是这样写是不对的
//这样写就对了
long longValue=2147483648l;//l不区分大小写,也可以写成long longValue=2147483648L
System.out.println(longValue);
}
}
输出结果:
2147483647
2147483648
//第二个例子--------------------------------------------
//由于整型默认计算结果是int型,下面的b=a+3其实是这样的
// byte b=byte(a)+int(3);
//由于byte占1字节,int占4字节,但变量b要求是byte型,会丢失信息,结果存在不确定性,会报错
byte a=5;
//byte b=a+3;//所以这么写是有问题的
//可以这样写,将结果强制转换成byte型
byte b1=(byte)(a+3);
System.out.println(b1);//结果为byte型8
//或者将b的类型改为int型
int b2=a+3;
System.out.println(b2);//结果为Int型8
//超出byte范围-128-127,下面这行报错
//byte b3=126+2;
//可强制转换
byte b3=(byte)(126+2);
System.out.println(b3);//-128
System.out.println(Integer.toBinaryString(126));
System.out.println(Integer.toBinaryString(2));
//是这么计算得到-128的
//126-> 01111110
//2 -> +00000010
//------------------
// =10000000->2的7次方128
//转byte型:最高位为1,表示负数,由于正数与负数的关系是取反再加1,10000000取反再加1的结果还是10000000
//也就是2的7次方=128,由于最高位为1表示负数,所以结果为-128
//或者定义变量为int型
int b4=126+2;
System.out.println(b4);//128
System.out.println(Integer.toBinaryString(b4));
输出结果:
8
8
-128
1111110
10
128
10000000