Java基础语法:数据类型转换

192 阅读2分钟

当数据类型不一样的时候,将会发生数据类型的转换

一、自动类型转换(隐式)

  1. 特点:代码不需要进行特殊处理,自动完成
  2. 规则:数据范围必须是从小到大

代码例子说明:

    public class Demo01DateType{
	public static void main(String [] args){
		
		//整数,默认类型为int
		System.out.println(100);
		
		//这是一个浮点数,默认类型为double
		System.out.println(3.14);
		
		//int类型=>long类型,符合从小到大规则,发生自动类型转换
		long num1 = 100;
		System.out.println(3.14);
		
		//float类型=>double类型,符合从小到大规则,发生自动类型转换
		double num2 = 2.5F
		System.out.println(2.5);
		
		//long类型=>float类型,符合从小到大规则,发生自动类型转换
		float num2 = 30L;
		System.out.println(30);
}

二、强制类型转换(显示)

  1. 特点:代码需要进行特殊的的格式处理,不能自动完成
  2. 格式:范围小的数据类型 范围小的变量名 = (范围小的数据类型)原本范围大的数据

注意:

  1. 强制转换一般不推荐使用,有可能损失精度、数据溢出
  2. byte/short/char这几种数据类型可以进行数学运算,如"+";
  3. byte/short/char这几种数据类型进行数学运算的时候,首先会被提升为int类型,然后再进行计算
  4. boolean不能进行数据类型转换

数据溢出的概念: 数据溢出 在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。 溢出原因 数据类型超过了计算机字长的界限就会出现数据溢出的情况

代码例子说明:

public class Demo02DateType{
	public static void main(String [] args){
		
		//Long类型强制转换成int类型   int类型数据100 本身没有超int的数据范围
		int num1 = (int)100L;
		System.out.println(num1);//输出100
		
		//Long类型强制转换成int类型   int类型数据60亿 本身超出int的数据范围,必须加后缀L,这种情况存在数据溢出的情况
		int num2 = (int)6000000000L;
		System.out.println(num2);
		
		//double类型强制转换成int类型,强制转换转换3.9变成了3,进度损失了
		int num3 = (int)3.9;
		System.out.println(num3);
		
		char num4 = 'A';
		System.out.println(num3+1);//输出66,字符A被当初了数字65,一旦char进行了数学运行,那么字符会按照一定的规则翻译成一个数字;
		
		
		byte num5 = 45;
		byte num6 = 45;
		int result = num5 + num6;//byte+byte首先会被提升为int类型  int + int==int;
		
		short num7 = 60;
		short result2 = (short)(num5 + num7);//int类型强制转换从short类型
		
		
	}
}