Java 基本数据类型转换

导读:本篇文章讲解 Java 基本数据类型转换,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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   
}

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/85614.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!