/** * 变量演示,数据类型转换 * <p> * Created by Karen Chia on 2018/11/8 */ public class VariableDemo {
public static void main(String[] args) { byte a = 1; //错误: 不兼容的类型: 从int转换到byte可能会有损失 //a定义为变量,编译检测:假设a取byte数据类型中的最大值时,与1做加运算将超出byte数据类型的取值范围,造成精度损失 //byte b = a + 1; int b = a + 1; System.out.println("b = " + b);
short c = 1; //short d = c + 2; //short在运算时自动提升数据类型为int int d = c + 2; System.out.println("d = " + d);
char e = 'a'; //char类型数据在参与运算时,每一个char类型的数据都对应一个数值类型的ASCII码,参与计算的是字符对应的ASCII码 int f = e + 1; System.out.println("f = " + f);
//short、byte与char任意类型组合运算,自动提升为int int g = a + c; System.out.println("g = " + g); } }
int在与其他数据类型的数据计算达到溢出时,直接返回溢出后的数据值
package blog.csdn.net.karen.javasedemo;
/** * 变量演示,数据类型转换 * <p> * Created by Karen Chia on 2018/11/8 */ public class VariableDemo {
/** * 变量演示,数据类型转换 * <p> * Created by Karen Chia on 2018/11/8 */ public class VariableDemo {
public static void main(String[] args) { byte number1 = 1; long number2 = 2; //错误: 不兼容的类型: 从long转换到byte可能会有损失,也就是说 number1 + number2 的结果为long数据类型 //byte result = number1 + number2; long result = number1 + number2; System.out.println(result); } }
常量在做运算时,只要不超出定义的数据类型的范围就不会出错,也不会发生类型的自动提升
小数类型的自动转换
package blog.csdn.net.karen.javasedemo;
/** * 变量演示,数据类型转换 * <p> * Created by Karen Chia on 2018/11/8 */ public class VariableDemo {
public static void main(String[] args) { float a = 1.2f; //float类型与常量计算,不会出现类型自动提升 float b = a + 1; System.out.println(b);
//float与float计算,不会出现类型自动提升 float c = a + b; System.out.println(c);
byte byteValue = 1; short shortValue = 1; int intValue = 1; long longValue = 1; //float类型和所有整数类型计算都会转换成float float d = a + shortValue; System.out.println(d);
//double类型同理
//double 与 float 计算,类型自动转换成 double } }
==总结:不同数据类型参与计算后,结果自动向大的一个数据类型转换==
强制类型转换
占用内存大空间数据类型 向 小空间数据类型 转换
语法:(目标数据类型) 转换的变量;
整数类型的强制转换
==强制类型转换可能存在损失精度的情况:转换的数值超出目标转换类型==
package blog.csdn.net.karen.javasedemo;
/** * 变量演示,数据类型转换 * <p> * Created by Karen Chia on 2018/11/8 */ public class VariableDemo {
public static void main(String[] args) { int number = 100; //short result = number; //将int强制类型转换为short short result = (short) number; System.out.println(result);