自动类型提升、强制类型转换、String类型
自动类型提升和强制类型转换都是针对于基本数据类型而言。首先,要把基本数据类型的种类及一些特性搞清楚、弄明白。、
基本数据类型
数值型 ①整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节) ②浮点类型:float(4字节)、double(8字节)
字符型:char(2字节)
布尔型:boolean(1字节)
注:
①java整型变量默认为int型,声明long型的一般后边要加"l"或"L",一般也不会声明为long型,除非储存的数值特别大
②浮点类型十进制表示方式必须有小数点。通常采用double双精度浮点型,精度是单精度float的两倍,声明为float类型,后面要加"f"或"F"
③定义char型变量,一般用**’’**定义,里边只写一个字符,两个字符编译就不通过;里边可以有转义字符char=’\t’;可以计算,因为字符对应的有Unicode编码;还有一种直接使用U你code值来表示字符型常量,但很少使用。例如:char=‘u\0043’ 对应字符c。
自动类型提升
自动数据类型只在除了boolean型之外的7中基本数据类型之间进行!也就是当容量小的数据类型的变量和容量大的变量做运算时,结果自动提升为容量大的数据类型。(此时的容量指的是,表示的数的范围的大和小;例如;容量float>容量long)
转换规则如下
char c =‘a’;
int i = 5;
fload d = .314F;
double result = c + i + d;//这个就是正确的,因为自动类型提升为double类型了
byte a = 1;
byte b = 2;
a = a+b; //编译出错,因为先自动类型提升成int,int不能转为byte,所以编译报错,这就需要用到强制类型转换了
a += b; //自加没有自动类型提升问题,+=就是一个操作符。
强制类型转换
强制类型转换就是自动类型提升的逆运算,还是只涉及七种数据类型,使用强转符,可能导致精度损失。
byte b1 = 2;
int i1 = 129;
byte b2 = (byte) (b1 + i1);
byte b1 = 2;
int i1 = 129;
byte b2 = b1 + i1; 这样会报错,因为没有使用强转符
注:
①byte、char、short三者不会进行相互转换,他们三者做运算时,首先转为int
②boolean类型不能与其它数据类型运算。
③当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类
型的值将自动转化为字符串(String)类型。
④赋值的时候要么满足类型相同,要么满足自动类型提升。
String类型
String类型是引用数据类型,进行连接运算。格式为String=“ ”;
例如:String = xx + xx + xx + xx;前边只要有一个String后边全是连接运算。
可以和8中基本数据类型进行运算。
g = xx + xx + xx + xx;前边只要有一个String后边全是连接运算。
可以和8中基本数据类型进行运算。