9--基本数据类型之间的转换

Java是一个强制类型的语言,在定义变量时数据类型在就已经确定了,因此不能随意转换成其他数据类型,但是java允许有限度的做类型转换处理。Java中的数据类型转换分为“自动类型转”和“强制类型转换”。

自动类型转换

在程序中已经定义好了数据类型的变量,若想使用另一种数据类型表示时,Java如果满足以下条件时,就会自动的进行数据类型的转换:
1.转换前的数据类型范围比转换后的数据类型范围小
2.转换前的数据类型和转换后的数据类型兼容(除了boolean类型的其它7种基本数据类型)
实例:

public class Demo9_1{
    
    
	public static void main(String[] args){
    
    
		byte num1 = 12;
		//byte → int
		int num2 = num1;
	}
}

自动类型转换示意图
在这里插入图片描述

说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量。
特别注意:当byte、char、short三种类型的变量做运算时,结果为int型
错误实例:

public class Demo9_2{
    
    
	public static void main(String[] args){
    
    
		byte num1 = 12;
		byte num2 = 20;
		//编译失败: 错误: 不兼容的类型: 从int转换到byte可能会有损失
		byte rs= num1 + num2;
		System.out.println(rs);
	}
}

改正实例:

public class Demo9_2{
    
    
	public static void main(String[] args){
    
    
		byte num1 = 12;
		byte num2 = 20;
		int rs= num1 + num2;
		System.out.println(rs);
	}
}

实例:

public class Demo9_3{
    
    
	public static void main(String[] args){
    
    
		int num1 = 12;
		//int → float
		float num2 = num1;
		System.out.println(num2);
	}
}

总结

  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的 那种数据类型,然后再进行计算。
  2. byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型
  3. boolean类型不能与其它数据类型运算
  4. 当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类 型的值将自动转化为字符串(String)类型。

强制类型转换

自动类型转换的逆过程,将大范围数据类型转换为小范围的数据类型。在转换过程中可能丢失精度。虽然是强制类型的转换,但也必须满足类型的兼容(除了boolean类型之外的其它7中数据类型)。
注意:

  1. 使 用时要加上强制转换符:()
  2. 可能造成精度降低或溢出,格外要注意。
    实例:
public class Demo9_4{
    
    
	public static void main(String[] args){
    
    
		double num1 = 12.9;
		//精度损失
		int num2 = (int)num1;//截断操作
		System.out.println(num2);
		
		//没有精度损失
		long num3 = 123;
		short num4 = (short)num3;
		
		//精度损失
		int num5 = 128;
		byte num6 = (byte)num5;
		System.out.println(num6);//-128
	}
}

总结

  1. 自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使 用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意
  2. 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型
  3. boolean类型不可以转换为其它的数据类型

补充:字符串类型
1.String不是基本数据类型,属于引用数据类型
2. 使用方式与基本数据类型一致。例如:String str = “abcd”;
3. 所有的数据类型(基本数据类型和引用数据类型)遇到字符串,都会向字符串发生自动类型转换
4. 关于字符串的使用后期说明
实例:

public class Demo9_5{
    
    
	public static void main(String[] args){
    
    
		int num1 = 3;
		int num3 = 7;
		// 以下两个 +  表示连接符
		String str= "abc" + num1 + num3;
		System.out.println(str);//abc37
		//以下第一个 + 表示连接符,第二个 + 表示 加号
		String str2="abc" + (num1 + num3);
		System.out.println(str2);//abc10
	}
}

猜你喜欢

转载自blog.csdn.net/qwy715229258163/article/details/113705000