一 谈谈long类型变量的初始化
定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。
情况一:
//此时100默认是int类型,但没有超过int类型表示范围,故不报错
long l1 = 100;
System.out.println(l1);
System.out.println("-------------");
情况二:
//控制台显示过大的整数,因1000000000超过了int的表示范围。
long l2 = 10000000000;
System.out.println(l2);
System.out.println("-------------");
解决方法:解决方法,在该数值后面添加L,标识为long类型。
long l2 = 10000000000L;
System.out.println(l2);
System.out.println("-------------");
成功运行:
二 浮点数常量(默认是double类型)转为float类型变量的两种可能
定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。
示例:13.14默认为double类型,表示范围比float要大
float f1 = 13.14;
System.out.println(f1);
System.out.println("-------------");
运行结果:
错误:(10, 20) java: 不兼容的类型: 从double转换到float可能会有损失
解决方法:在13.14后加上F,使其转换为float类型的再赋值就不会出错。
float f1 = 13.14F;
System.out.println(f1);
System.out.println("-------------");
运行结果:
13.14
-------------
13.14
-------------
设想:如果不在13.14后加F,改为强制类型转换的方式可不可以呢?
float f2 = (float)13.14;
System.out.println(f2);
System.out.println("-------------");
运行结果:
13.14
-------------
13.14
-------------
设想成立!
整型数据赋值给short,byte,char类型的几种情况
整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型,在不做运算的情况下,如果直接将较小的整数值(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数值当成byte或short类型来处理。
情况一:在不做运算的情况下,将较小的整数值(在byte或short类型的表数范围内)赋给一个byte或short变量。
//不做运算
byte b1 = 10;
short s1 = 20;
System.out.println(b1);
System.out.println(s1);
System.out.println("--------");
运行结果:系统会自动把这个整数值当成byte或short类型来处理
10
20
--------
情况二:在将short,byte,int类型数据做运行的情况下:
byte b1 = 10;
byte b2 = 15;
short s1 = 20;
short s2 = 25;
int i1 = 30;
byte sum1 = b1 + b2 ;
byte b1 = 10;
byte b2 = 15;
short s1 = 20;
short s2 = 25;
int i1 = 30;
//byte sum1 = b1 + b2 ;
short sum2 = s1 + s2;
byte b1 = 10;
byte b2 = 15;
short s1 = 20;
short s2 = 25;
int i1 = 30;
//byte sum1 = b1 + b2 ;
//short sum2 = s1 + s2;
byte sum3 =b1+s1+i1;
以上运行结果均类似:
情况三:将数值直接做运算后赋值给byte或short类型数据则不会出现情况二,而与情况一类属统一情况。
byte sum4 = 10 + 20;
System.out.println(sum4);
运行结果:
30
进程已结束,退出代码 0
char类型变量不能与short类型变量互相赋值
示例:
//char类型赋值给short
char c1 = 'a';
short s1 = c1;
System.out.println(s1);
short s1 = 98;
char c1 = s1;
System.out.println(c1);
运行结果均类似: