java基础之类型转换
2015-07-20 22:13
387 查看
在说类型转换之前,必须先说说java语言的数据类型。Java语言有7中数据类型,每一种数据类型都在内存中分配了不同的内存空间。
具体分配空间如下:
Byte :1个字节
Char:2个字节
Short:2个字节
Int:4个字节
Long:8个字节
Float:4个字节
Double:8个字节
在JAVA中,类型转换就是各种数据类型之间的相互转化。类型转换分为两种,自动类型转换和强制类型转换。
1. 自动类型转换,也称为隐式类型转换。
自动类型转换的前提是:(1)两种类型是彼此兼容的;(2)转换的目的类型占得空间范围一定要大于转化的源类型
例如:
2. 强制转换
强制转换的格式是将一个类型强制转换成另一种类型。一般是用于将父类转换为子类时或者将长数据类型变为短数据类型时。
例如:Class Student extends Person
在main中,可以这样进行强制转换:
Person p=new Person();
stu=(Student)p
又例如:
在上面的例子中,如果将b=(byte)(b+200)改成b=b+200将会出错,原因是当byte类型的变量提升为int类型与int类型的常量200相加后,结果还是int类型,再赋值给byte类型,会出现损失精度的错误。
下面再来看看在视频中出现的一道面试题:
我们可以看到,在编译时,b=3+7;,没有报错,原因是:3和7都是常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。而b = b1 + b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范围,因此就会报错。
具体分配空间如下:
Byte :1个字节
Char:2个字节
Short:2个字节
Int:4个字节
Long:8个字节
Float:4个字节
Double:8个字节
在JAVA中,类型转换就是各种数据类型之间的相互转化。类型转换分为两种,自动类型转换和强制类型转换。
1. 自动类型转换,也称为隐式类型转换。
自动类型转换的前提是:(1)两种类型是彼此兼容的;(2)转换的目的类型占得空间范围一定要大于转化的源类型
例如:
2. 强制转换
强制转换的格式是将一个类型强制转换成另一种类型。一般是用于将父类转换为子类时或者将长数据类型变为短数据类型时。
例如:Class Student extends Person
在main中,可以这样进行强制转换:
Person p=new Person();
stu=(Student)p
又例如:
在上面的例子中,如果将b=(byte)(b+200)改成b=b+200将会出错,原因是当byte类型的变量提升为int类型与int类型的常量200相加后,结果还是int类型,再赋值给byte类型,会出现损失精度的错误。
下面再来看看在视频中出现的一道面试题:
我们可以看到,在编译时,b=3+7;,没有报错,原因是:3和7都是常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。而b = b1 + b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范围,因此就会报错。
相关文章推荐
- 【iOS基础】KVC的特殊作用!原来它有Java反射的效果!
- Java 反射
- java中equals和==的区别
- Spring核心 AOP
- Spring核心 IOC DI
- MyEclipse10安装properties文件插件
- Java Synchronized 略解
- Java回调函数的理解
- Eclipse缺少字体解决办法
- 算法学习之java实现快速排序
- Eclipse 安装最新SVN插件
- Spring 下载
- 解压后的eclipse,把exe文件复制到桌面,但是不能打开?的解决之道
- 【JAVA基础】父类类型做形参
- JAVA基础之继承
- Java多线程使用Synchronized需注意锁的永远是对象
- 打包Java程序,jar转exe并且不依赖java环境
- JAVA实现二分查找
- java学习之旅67--常用类_Calendar和GregorianCalendar的使用_日期计算
- jar包命令行、eclipse下能运行但是双击不能运行,提示找不到main class