Java 基本数据类型转换

Java 基本数据类型转换


在赋值运算或算术运算时,要求数据类型相同,否则就要进行类型转换。
转换的方式:
自动类型转换(隐式)
强制类型转换(显示)
基本数据类型的转换主要包含:byte、short、int、long、float、double和char,不包含boolean类型。

1.1自动类型转换

自动类型转换(隐式类型转换)指的是容量小的数据类型可以自动转换为容量大的数据类型。
由低字节向高字节的转换 byte->short-> char –>int->long->float->double
【赋值运算中的类型转换案例】

  public static void main(String[] args) {
	// 把int类型的值赋值给double数据类型(符合低字节向高字节转换)
	double num = 32;  
	// 把整数常量赋值给byte、 short和char类型变量(不符合低字节向高字节转换)
	byte b = 123;
	short s = 123;
	byte by = 1234; // 错误,整数常量不能操出其类型的表数范围
}

把整数常量(int类型)赋值给byte、short和char类型变量,属于自动类型转换的特例,只要不超出其表数范围即可。

算数运算中的类型自动转换原则:
如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型,结果为double类型。
否则,如果其中一个操作数是float类型,另一个将会转换为float类型,结果为float类型。
否则,如果其中一个操作数是long类型,另一个会转换为long类型,结果为long类型。
否则,两个操作数都转换为int类型,结果为int类型。
【算数运算中的类型转换案例】

public static void main(String[] args) {
	int num1 = 5; // int类型
	double num2 = 7.34; // double类型
	// 此处的num1会被提升为double类型
	double sum = num1 + num2; // num1和num2的和为double类型
}
/*
1.为什么需要学习数据类型的转换???
  因为Java是强类型的语言,因此参与“赋值运算”和“算数运算”的时候,要求参与运算的数据类型必须保持一致,否则就需要做数据类型转换。
2.基本数据类型转换的方式有哪些???
  a)隐式类型转换(自动)
  b)强制类型转换(手动)
3.哪些基本数据类型可以相互转换???
  除了boolean类型之外,其余的基本数据类型都可以相互转换!  
4.
*/  
/*隐式类型转换(自动)???
  原则:低字节向高字节自动提升。
	byte --> short --> int --> long --> float --> double
    char --> int
  赋值运算 
	原则:低字节向高字节自动提升。
    特例:把int类型的常量,赋值给byte、short和char类型的变量或final修饰的常量时,则就属于隐式类型转换的特例, 
          只需赋值的数据没有超出其数据类型的表示范围即可。
		  --> 赋值的数据应该是什么???赋值的数据应该是int类型的常量!
          --> 赋值数据的大小是什么???赋值数据的大小不能超出其数据类型的表示范围。		  
  算数运算 
	原则:两个操作数做运算,如果其中一个操作数为double类型,则另外一个操作数也会隐式转化为double类型,最终计算结果就是double类型;
	      否则,如果其中一个操作数为float类型,则另外一个操作数也会隐式转化为float类型,最终计算结果就是float类型; 
	      否则,如果其中一个操作数为long类型,则另外一个操作数也会隐式转化为long类型,最终计算结果就是long类型; 
		  否则,这两个操作数都会隐式转化为int类型,最终计算的结果就是int类型。 
	*/
public class DataTypeDemo02 {
	public static void main(String[] args) {
		byte num1 = 123;	
		int num2 = 100;	
		int sum = num1 + num2;
		System.out.println(sum); // 输出:223
		
	
		/*
		byte num = 123;	
		// 此处num会从byte类型隐式转化为int类型,最终运算的结果就是int类型
		int sum = 100 + num;
		System.out.println(sum); // 输出:223
		*/
		
		/*
		// 此处100会从int类型隐式转化为long类型,最终运算的结果就是long类型
		long sum = 100 + 123L;
		System.out.println(sum); // 输出:223
		*/
		
		/*
		// 此处100会从int类型隐式转化为float类型,最终运算的结果就是float类型
		float sum = 100 + 3.14F;
		System.out.println(sum); // 输出:103.14
		*/
		
		/*
		// 此处100会从int类型隐式转化为double,最终运算的结果就是double类型
		double sum = 100 + 3.14;
		System.out.println(sum); // 输出:103.14
		*/
		
		/*
		byte num = 127; // 特例
		System.out.println(num); // 输出:127
		*/
		
		/*
		int num = 100;
		// 此处num会从int类型隐式转化为long类型,然后再做赋值操作
		long result = num;
		System.out.println(result); // 输出:100
		*/
		
		/*
		// 此处100会从int类型隐式转化为double类型,然后再做赋值操作
		double num = 100;
		System.out.println(num); // 输出:100.0
		*/
		
		/*
		// 此处'a'会从char类型隐式转化为int类型,然后再做赋值操作
		int num = 'a';
		System.out.println(num); // 输出:97
		*/
	}
}
package 数据类型的转换.隐式类型的转换;

public class DataTypeTransform {

	public static void main(String[] args) {
		final byte v1 = 5;
		final short v2 = 5;
		final char v3 = 97;
		
		//int v4 = 100;
		//final byte v5 = v4;//报错:Type mismatch: cannot convert from int to byte
		final int v6 = 100;
		final byte v7 = v6;
		System.out.println("v7="+v7);
		
		
		final byte v8 = 127;
		//final byte v9 = 128;//报错:超出了byte的精度范围
		
		System.out.println("v1=" + v1);
		System.out.println("v2=" + v2);
		System.out.println("v3=" + v3);
	}

}

1.2 强制类型转换

强制类型转换(显示类型转换),主要用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
语法格式:目标类型 变量 =(目标类型)源类型变量或常量
【示例】

public static void main(String[] args) {
	float a = 123.23f;
	byte b = (byte)a;   // 注意:强转之后有可能会丢失精度
	System.out.println(b); // 输出:123
	// 注意:原类型数据被强转后数据是不会变化。
	System.out.println(a); // 输出:123.23   
}

使用强制类型转换的时候,一定要明确需要强转的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FBI HackerHarry浩

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值