1.数据类型
ps:char 字符型在计算机存储时是存储对应的码值,char型本质是整型。
2.自动类型转换
Java中进行运算、赋值时,系统会自动将精度小的数据转换为精度大的数据。
转换大小排序:
1.char-int-long-float-double
2.byte-short-int-long-float-double
自动转化的一些小细节:
1.多种类型混合运算时,系统会先统一将其转换为精度大的再计算。
int a = 5;
float b = a + 2.0f;
System.out.println(b);//7.0 float
2.精度小的转换为精度大的会报错,反之则是自动转换
//int num3 = 20L;//long -> int 报错
long num4 = 20;//int -> long
System.out.println(num4);
3.byte short char 之间不会相互转换
byte num5 = 50; //对于byte short型 系统会先判定常量是否超范围
//不超过则可以赋值 但不能将变量赋值给它
4.byte short char 进行运算时,会先转换为int型再进行运算
short num6 = 70;
int num7 = num5 + 'a' + num6; // + 有一边是字符串则是拼接 是字符是整型加
System.out.println(num7); // 50 + 97 + 70
// short num8 = num6 + num5; int->short 报错
// byte num9 = num5 + num5; byte + byte = int 报错
5.boolean不参与转换
3.强制转换
若要将精度小的转换为精度大的,则可以使用强制转换,但可能会出现溢出或者精度丢失
int a = (int)1.7; // 1
4.字符串和基本数据的转换
//将基本数据类型转换为字符串
float n1 = 10.0f;
int n2 = 100;
double n3 = 12.2;
boolean n4 = true;
String s1 = n1 + "";
String s2 = n2 + "";
String s3 = n3 + "";
String s4 = n4 + "";
System.out.println(s1 + " " + s2 + " " + s3 + " " + s4);
System.out.println("=========================================");
//将字符串转换为基本数据类型
String s5 = "51";
int num1 = Integer.parseInt(s5);
byte num2 = Byte.parseByte(s5);
short num3 = Short.parseShort(s5);
double num4 = Double.parseDouble(s5);
float num5 = Float.parseFloat(s5);
boolean b = Boolean.parseBoolean(s5);
System.out.println(num1+1);
System.out.println(num4);
System.out.println(b);
5.一些小细节
常量可以直接赋给byte short char ,但是变量不行
无论是什么字符,在计算机中,其实也是以数字(本质为一个二进制数)的形式存储的,因此,在java中,无论是一个字符,还是一个字符型变量,实则也是一个数字,所以,可以直接将一个(不超过char的范围的)数字赋值给一个char变量,但是将int型变量赋给char不行,因为可能会产生精度损失。
如:int i = 47;
char j = i + 1 ; // int ->char 可能会出现精度损失