概述
当数据类型不一样时,会发生数类型转换
1、自动类型转换(隐式),数据范围从小到大(并非字节大小),下面举例
public class Demo01Type {
public static void main(String [] args) {
long num1 = 20; //正常应该加L,然而这一步被自动类型转换了,遵循数据范围从小到大的原则
System.out.println(num1);
double num2 = 2.5; //正常加F,然而这一步被自动类型转换了
System.out.println(num2);
float num3 = 30L; //输出30.0,别看是30L,但是float类型数据范围更广,满足数据范围从小到大
System.out.println(num3);
}
}
2、强制类型转换
public class Demo02Type {
public static void main(String[] args) {
int num = (int)100L; //强制类型转换
System.out.println(num); //100
}
}
3、注意事项
(1)强制类型转换不推荐使用,可能会出现数据溢出或者精度损失
int num1 = (int) 6000000000L; //数据溢出,因为int最多到21亿
System.out.println(num1); //编译之后是17亿
int num2 = (int) 3.5; //精度损失
System.out.println(num2); //3
(2)byte/short/char 这三种类型都可以进行数学运算
(3)byte/short/char 这三种类型进行数学运算的之前,会首先被提升为int类型,然后进行运算
char ch = 'A';
System.out.println(ch + 1); //66 因为char类型与数字进行计算,会先转换为ASCII码,加法输出为66
byte num3 = 30;
byte num4 = 40;
int result = num3+num4; // 数据类型提升,result必须定义为int类型,因为byte + byte --> int +int --> int
System.out.println(result); //70
(4)boolean类型不能进行数据类型转换,是true就是true,很严格啊
4、ASCII表
‘0’ --> 48,'A' --> 65,'a' -->97
ASCII表
Unicode表,万国码,0~127和ASCII表中的完全一样,128之后还有很多字符,如中文
public class Demo03Char {
public static void main(String[] args) {
char ch1 = '1';
System.out.println(ch1 + 0); //输出的是ASCII值
char ch2 = 'a';
int num = ch2; //可以复制,因为进行了自动数据类型转换,另外满足数据范围总小到大的原则
System.out.println(num); //97
}
}
最后
以上就是甜美秀发为你收集整理的Java基础语法(二)--数据类型转换的全部内容,希望文章能够帮你解决Java基础语法(二)--数据类型转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复