JAVA基本数据类型转换的注意事项
JAVA中基本数据类型:
| 类型: | 字节: | 范围: | 默认值: |
| byte | 1 | -128~127 | 0 |
| short | 2 | -32768~32767 | 0 |
| char | 2 | 0~65535 | '\u0000' |
| int | 4 | -2147483648~2147483647 | 0 |
| long | 8 | -2^63~2^63-1 | 0L或0l |
| float | 4 | 3.402823e38~1.401298e-45 | 0.0F或0.0f |
| double | 8 | 1.797693e308~4.9000000e-324 | 0.0D或0.0d |
| boolean | 1 | false 或 true | false |
所以,基本数据类型的精度(亦称容量大小)排序为(从小到大):(byte->short->char)->int->long->float->double
向下转换:(强制类型转换)
当精度高的类型转到精度低的类型时叫做向下转换,向下转换需要强制转换,即使用 (类型名) 运算符,可能会导致精度降低或溢出。
向上转换:(隐式类型转换)
当精度低的类型转到精度高的类型时叫做向上转换,向上转换一般直接由编译器完成,当几个基本数据类型参与运算时,计算结果的类型是参与运算中精度最高的那个运算数的类型,其他运算数的类型将被自动转为精度最高的那个运算数的类型。
之所以要给byte,short,char三个类型加上括号,是因为,当它们参与运算时首先会被提升为int类型,也就说明他们之间不会发生隐式类型转换。
另外,boolean类型不会发生类型转换,即(boolean)运算符无意义,并且boolean类型只能被关键字 true 和 false,以及逻辑运算符的结果赋值。
例如:
byte a;
short b;
char c;
int d;
long e;
a = a+a;//错误,a + a的类型为int,因为在计算时,byte类型的a变量被自动提升为int类型
a = 'A';//正确,'A'是字符字面量,是一个常量,值为65,在byte范围内
a = 12;//正确,可能会问,12这个字面量在java中是int类型,但是 a 是byte类型,为什么不报错呢,因为,编译器知道12在byte范围内,所以自动转为(short)12,但如果赋值的是a = 200,那就错误了,因为编译器知道200是超出byte范围的(在编译的时候,编译器只知道常量的值,知道它是否超出范围,编译器不知道变量的值,所以无法判断一个变量是否超出范围,因为变量的值是在运行的时候确定的) a = Byte.MAX_VALUE +1;//报错
b = Short.MAX_VALUE +1;//报错
c = Char.MAX_VALUE +1;//报错
//上述三行报错原因是因为,byte,short,char三个类型参与计算时首先会提升为int类型,但在C语言当中(char和short类型)参与计算时不会被提升,所以在C语言中值为 -1
d = Integer.MAX_VALUE +1;//值为-1
e = Long.MAX_VALUE +1;//值为-1L
//因为int和long类型不存在提升,所以会出现-1或-1L
JAVA基本数据类型转换的注意事项的更多相关文章
- Java基本数据类型转换及运算符
上次我们说到完了Java中的基本数据类型,今天我们来说说Java中的基本数据类型转换和Java中的运算符 基本数据类型转换 java中可以从任意基本数据类型转型到外的基本数据类型 注意:(boolea ...
- Java基本数据类型转换
一:Java的基本数据类型和引用数据类型 1:基本数据类型 2:引用数据类型 二:基本数据的类型转换 基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型 ...
- java基本数据类型转换成byte[]数组
import java.io.UnsupportedEncodingException; public class ConToByte { /** * double转换byte ...
- java基本数据类型转换溢出问题
java的基本数据类型有(int.byte.double.float.char.boolean.long.short):这里介绍整型数据 示例1: public class H_Z01 { publi ...
- java基本数据类型转换之向上转型和向下转换
向上转换: 整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型可自动转换为容量大的数据类型: byte,short,char → int → long → float ...
- Java 基本数据类型转换
1. Integer/int 转 String Integer a = 1; (int a = 1) String b = Integer.toString(a); 2. float 转 Strin ...
- Java基本数据类型转换二
public class TestConvert2 { /** * @param args */ public static void main(String[] args) { // TODO Au ...
- Java基本数据类型转换一
public class TestConvert { /**容量小的类型自动转化为容量大的类型数据类型按容量大小排列 * byte,short,char -> int ->long-> ...
- java基本数据类型转换字符串
1.基本数据类型转换为字符串 int t1 = 2; String t2 = Integer.toString(t1); 2.字符串转换为基本数据类型 int t3 = Integer.parseIn ...
随机推荐
- React Native未来导航者:react-navigation 使用详解
该库包含三类组件: (1)StackNavigator:用来跳转页面和传递参数 (2)TabNavigator:类似底部导航栏,用来在同一屏幕下切换不同界面 (3)DrawerNavigator:侧滑 ...
- BZOJ 1108: [POI2007]天然气管道Gaz 性质分析_小结论_巧妙
Description Mary试图控制成都的天然气市场.专家已经标示出了最好的天然气井和中转站在成都的地图.现在需要将中转 站和天然气井连接起来.每个中转站必须被连接到正好一个钻油井,反之亦然. M ...
- vim/vi编辑器挂到后台ctrl + z
vim/vi编辑器通过CTRL+z将文件挂在到后台后,如果要再次进入,需通过jobs查看文件的序号,然后通过fg 序号进入文件进行编辑 (BaiduPictureToWord) [master@ins ...
- html第九节课
正则表达式和marquee 1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4 ...
- Hexo系列(三) 常用命令详解
Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...
- php实现网站访客数量统计的方法(简单实现,不能防刷新)
方法一: <?php function Counter()//定义函数 { $five = "00000";//声明变量,$five,$four等变量表示零的个数,放在数字前 ...
- CodeForces 551E GukiZ and GukiZiana
GukiZ and GukiZiana Time Limit: 10000ms Memory Limit: 262144KB This problem will be judged on CodeFo ...
- Java 学习(8):java 方法
Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 命名规则: 1. 必须以 字母.'_'或'$'开头. ...
- 使用Neo4j和简单分词算法实现菜品推荐系统
背景:本推荐系统基于一款硬件产品--旺小宝桌牌.客人按下点餐按钮,扫码进入点餐界面,然后开始点自己喜欢的菜,在手机端下单.目前在成都已有近200家合作餐饮商家. 菜品推荐功能: 当客人在某商家使用桌牌 ...
- mysql绑定多个ip地址
http://jpuyy.com/2013/07/mysql-bind-multi-address.html mysql绑定多个ip地址 发表于2013 年 7 月 1 日 my.cnf中有选项bin ...