数据类型的转换(宽窄转换,数据类型的提升)

数据类型的转换

要了解数据类型的转换,我们先要了解一些基本基本概念:

一、数据类型按基本类型分为:

2大类4小类8种

2大类: boolean和数值类型

4小类: boolean、整型、浮点型(实型)、字符型

8种:

boolean(java官方没有指出boolean类型到底占多少字节 所以我们不讨论)

1字节:byte

2字节:char、short

4字节:int、float

8字节:long、double

二、按引用类型分:

字符串、数组、类、接口、抽象类、枚举…

  • boolean类型

boolean只能取值为true或false

  • char类型

char c = ‘中’(此时“中”占两个字节)

char c = ‘a’(此时“a”占两个字节)

  • 整型

byte、short、int、long(按表数范围从小到大排列)

注意的是:如果直接将一个较小的整数值(在 byte short 类型的表数范围内〉赋给 byte 或者short 变量系统会自动把这个整数值 byte 或者 short 类型来处理。

int类型

例子:int a = 1;

等号(=)左边称为左值
等号(=)右边称为右值
整型的右值默认为int型
转换分为宽转换和窄转换
宽转换: 表数范围小的值 赋值给表数范围大的数叫做宽转换
特点:安全的、自动的、不会发生精度丢失
窄转换: 表数范围大的赋值给表数范围小的叫做窄转换。
特点;不安全的、可能会发生精度丢失问题、编译不通过

例子:

long a =10; //宽转换

int b = a; //窄转换

可以把一个较小的整数值(在 int 类型的表数范围以 内)直接赋给一 个long 类型的变量,这并不是因为 Java 会把这个较小的整数值当成 long 类型来处理, Java 依然把这个整数值当成 int 类型来处理,只是因为 int 类型的值会自动类型转换到 long 类型。

  • long类型

long b = 10L;

如果使用 个巨大的整数值(超出了 int 类型的表数范围)时 ,Java 不会自动把这个整数值当成
long 类型来处理。如果希望系统把 个整数值当成 long类型来处理,应在这个整数值后增加 l 或者 L作为后缀 。通常推荐使用 L,因为英文字母 l 很容易跟数字 1搞混

数据类型的提升

public class Test1{
	public static void main(String args[]){
		byte x = 10;
		byte y = 20;
		byte z = x + y; 
		System.out.println(z);
	}
}

这个代码在编译的时候会报错,原因是byte short char 参与算数运算时会先提升成int

a+=2和a=a+2的区别

public class Test2{

	public static void main(String args[]){
		short a = 1;
		//a+=2 和 a=a+2 是否一样
		a+=2;   // 可以直接给byte short char 赋值
		a=a+2;  // 表达式类型的自动提升  int + int = int  ---->short 窄转换 可能会发生精度丢失
		System.out.println("a=" + a);
	}
}

这是因为使用a=a+2时,表达式的类型会自动提升,但是a+=2则不会

  • 浮点型(实型):float、double

定义double:

浮点型的右值默认为double

double a = 3.14

定义float:

float a = 3.14f; 或者
float a = (flaot)3.14;

注意的是:java语言中的浮点类型默认是double类型,如果希望java把一个浮点类型的值当成float类型来处理,应在这个浮点类型值后紧跟f或者F,或者使用强制转换(flaot)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值