java基本数据类型自动转换规则

一、java基本数据类型

Java提供了八种基本类型,其中包括六种数字类型(四个整数型,两个浮点型),一种字符类型和一种布尔型。 
整型: short, int, long, byte; 
浮点型:float, double; 
字符型:char; 
布尔型:boolean. 
Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或操作系统的改变而改变。



二、非赋值运算,自动转换规则

1)布尔型不参与转换

2)规则: byte/char/short -> int ->  long -> float -> double

2.1)例子:

public class Test {
	public static void main(String[] args) {
		short a = 1;
		byte b = 2;
		char c = 3;
		
		//三个输出都是 class java.lang.Integer
		System.out.println(getType(b+a));
		
		System.out.println(getType(b+c));
		
		System.out.println(getType(a+c));
		
	}
	
	public static String getType(Object o){
		return o.getClass().toString();
		}
}
2.2)规则具体讲解

(2.2.1)如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。 
(2.2.2)如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。 
(2.2.3)如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。 
(2.2.4)如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。 


3)对比一下C语言



三、赋值运算,自动转换规则

将小范围类型变量转换成大范围类型的变量。Java会自动扩宽类型

看上面那张图,各个基本数据类型的取值范围都有了,如果一个取值范围包括了另一个的,那么赋值时,小的可以自动转换成大的

例子:     long d = 333;   float e = d; //可以

short a = 1; char b = a; //不行,因为取值范围不是包含,而是交叉

int a = 1; byte b = a; //不行,大的转成小的,要强制类型转换,byte b = (byte) a;


四、一些值得注意的地方

当运算符为取正运算符(+)。取负运算符(-)或按位取反运算符(~)时,如果操作数为byte、char或short,则先被转换为int,再参与运算



  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值