Java中数据类型转换——基本数据类型转换的6大规则


前言

通过学习Java中的四类八种数据类型,我们知道一个数据给一个变量赋值的时候存在三种不同的情况:

  • 类型一致,不存在类型转换
  • 自动类型转换,小容量自动赋值给大容量
  • 强制类型转换,大容量赋值给小容量,可能导致的的结果就是精度损失

一、基本数据类型转换

  基本数据类型之间是存在固定的转换规则的,现总结出以下6条规则。无论是哪个程序,将这6个规则套用进去,问题迎刃而解。

  1. 八种基本数据类型中,除了boolean类型不能转换,剩下七种类型之间都可以进行转换

  2. 如果整数型字面量没有超过byte、short、char的取值范围,可以直接将其赋值给byte、short、char类型的变量

  3. 小容量向大容量转换称为自动类型转换,容量从小到大排序为:byte<short(char)<int<long<float<double,其中short和char都占用两个字节,但是char可以表示更大的正整数。

  4. 大容量转换为小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能会出现精度损失,谨慎使用。

  5. byte、short、char类型混合运算时,先各自转换成int类型再做运算

  6. 多种数据类型混合运算时,各自先转换成容量最大的那一种再做运算

二、习题

  1. 下列程序有什么错误?
short s1=1;
s1=s1+1;

报错
在这里插入图片描述
  因为s1是short类型,1是int类型,short和int混合运算时,short会自动转换为int类型,所以s1+1编译器检测出是int类型,int类型是无法赋值给short类型的变量s1。所以需要强制类型转换,即:

扫描二维码关注公众号,回复: 12215442 查看本文章
short s1 = 1;
//注意强制类型转换的格式
s1 =(short) (s1 + 1) ;
  1. 为什么char类型的变量可以存储一个中文的汉字,为什么?

  java中的文字采用unicode编码,一个中文占用2个字节,char类型在java中就是占用两个字节,所以java中的char类型完全可以容纳一个汉字。

  1. flaot f=1.0有什么错?long a=2147483648有什么错?

  在java语言中,有这样一条规定,只要是浮点型的字面量,例如1.0、3.14等默认会被当做double类型处理,如果想让程序将其当做float类型处理,需要在字面量后面添加f\F,或者使用强制类型转换。整数型字面值默认当做int类型处理,如果以long形式表示,需要在字面值后面添加L\l

猜你喜欢

转载自blog.csdn.net/m0_46988935/article/details/110110982