数据类型转换

定义:

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

自动类型转换(隐式):

  1. 特点:代码不需要进行特殊处理,自动完成。
  2. 规则:数据范围从小到大。(与字节数没有特定关系)
public class Demo1DataType{
	public static void main(String[] args){
		System.out.println(1024);//这就是一个整数,默认就是int类型
		System.out.println(3.41);//这就是一个浮点数,默认就是double类型
		
		//左边是long类型,右边是默认的int类型,左右不一样
		//一个等号表示赋值,将右侧的int常量,交给左侧的long变量进行存储
		//int --> long 符合了数据范围从小到大的要求
		//这一行代码发生了自动类型转换
		long num1 = 100;
		System.out.println(num1);//100
		
		//左边是double类型,右边是float类型,左右不一样
		//float--> double,符合从小到大的规则
		//也发生了自动类型转
	    double num2 = 2.5;
		System.out.println(num2);
	
	//左边是float类型,右边是long类型,左右不一样
	//long-->float,范围是float更大一些,符合从小到大的原则
	//也发生了自动类型转换
		float num3 = 30L;
		System.out.println(num3);//30.0
		//浮点类型是有小数点的,本来30是整数,转换后自动加了点零成了30.0
	}
}

强制类型转换(显式):

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

例如

public class Demo02DataType{
	public static void main(String[] args){
		int num = 100L;
		System.out.println(num);
	}
} 

左边int类型,赋的值是long类型,不一样,long—>int,不是从小到大,不能发生自动转换输出也会报错。

应用强制转换的格式来写

即:

public class LianXi{
	public static void main(String[] args){
		int num1 = (int) 100L;
		System.out.println(num1);
	}
}

这样就把数据类型为long类型的‘100‘转换成了类型为int类型的’100‘

数据溢出

//需要转化的数值不能超过转化的数值类型的表示范围,否则会发生数据溢出。输出的结果就不是想要的到的结果。

public class Demo02DataType{
	public static void main(String[] args){
		int num = (int)3000000000 L;
		System.out.println(num);//输出1705032704
	}
} 

精度损失:

public class Demo02DataType{
	public static void main(String[] args){
		int num = (int)3.5
		System.out.println(num);//输出3
	}
} 

// 对于一个小数来说,如果强制转换为整数,那么小数部分会直接丢失,只保留整数部分(不是四舍五入),叫做精度损失

注意事项

  1. 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
  2. byte/short/char/这三种类型都可以发生数学运算例如加法“+”。
public class Demo02DataType{
	public static void main(String[] args){
		char zifu1 = 'A';//这是一个字符型变量,里面是大写字母A
		System.out.println(zifu1);//A
		System.out.println(zifu1 + 1);//66,也就是大写字母A被当做65处理。
		//计算机底层会用一个数字(二进制)来代表字符A,就是65
		//一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字
	}
} 
  1. byte/short/char这三中类型在发生运算时,都会首先被提升为int类型,然后在进行计算。
public class Demo02DataType{
	public static void main(String[] args){
		byte num1 = 40;
		byte num2 = 50;
		//计算之前会先提升为int,即:byte + byte--> int + int-->结果肯定是int
		int result1 = num1 + num2;
		System.out.println(result1);
		
		short num3 = 60;
		//byte + short-->int + int
		//一定要使用int接收
		int result2 = num1 + num3;
		System.out.println(result2);
		
		//也可以用强制类型转换
		/*
		short result = (short)(num1 + num3)	*/
	}
} 
  1. Boolean类型不能发生数据类型转换。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值