1、自动类型转换java
一、java中不一样类型的数据在计算时,为保证数据的精度,数据的类型会以大容量的类型为主;spa
二、自动类型转换的排序:code
char、byte、short -> int -> long -> float -> double
三、字符串和任意类型的数据进行链接运算(+),都会自动转换为字符串;对象
四、赋值运算时常量能够进行自动类型转化,变量不能够,例如:blog
int a=1; byte b=1; System.out.println(a+b); // 结果:2 byte a=1; a=a+1; //结果:java: 不兼容的类型: 从int转换到byte可能会有损失
//缘由:byte 在进行计算时会自动转换为int类型,这时就会变成 byte=int+int int类型被要求转换为byte,致使产生上面的错误。
五、在进行加运算的时候比int小的数据类型(char、byte、short)之间的运算都会自动转化成int的加运算,例如:排序
byte a = 1; byte b = 2; a = b + a; System.out.println("b="+a);
// 结果:java: 不兼容的类型: 从int转换到byte可能会有损失
// 缘由:b+a 数据类型自动转化为int了,不能赋值给byte类型的a
byte a = 1;
byte b = 2;
int c = b + a;
System.out.println(c);
// 结果:3
2、强制类型转换继承
一、将容量大的数据类型转换为容量小的数据类型,强制类型转换可能会形成精度的下降或者溢出;字符串
二、强制类型转换符(),括号里为要强制转换为何类型,例如:io
double a = 1.91; int b = (int) a; System.out.println(b); // 结果:1 // 这里的 a 被强制转换为int类型,小数点被强制去了
三、字符串不能直接转换为基本数据类型,但能够经过基本类型的封装类型进行转换,例如:ast
String s = "12"; int a = Integer.parseInt(s); System.out.println(a); //结果:12
四、boolean类型和字符串的类型转换;
//boolean 转 String boolean f = true; String s = f + ""; System.out.println(s); //结果:true //String 转 boolean String s = "true"; boolean f = Boolean.parseBoolean(s); System.out.println(f); //结果:true
五、在继承中,子类能够自动转型为父类,可是父类强制转换为子类时只有当引用类型真正的身份为子类时才会强制转换成功,不然失败;
class Father {} class Son extends Father {} //Father 是 Son的父类 Father father = new Son(); Son son = (Son) father; //father虽然是Father类型的数据,可是它指向的实际上是 Son对象 //因此 (Son) father 是可行的 Father father1 = new Father(); Son son1 = (Son) father1; //father指向的是 Father对象 //因此 (Son) father 是不可行的 //这将会报错 java.lang.ClassCastException