【Java基础笔记】类型转换

本文是Java基础自学笔记,探讨了类型转换,包括自动类型转换和强制类型转换。自动类型转换允许范围小的变量赋值给范围大的变量,而强制类型转换则需要显式进行,但可能造成数据溢出。浮点数转换为整数时,小数部分会被丢弃,使用Math.round()方法可以进行浮点数的舍入运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

类型转换(基本数据类型)

引用数据类型的类型转换 --> 多态下引用数据类型的类型转换

  • 不同类型的变量赋值给其他类型的变量

1.自动类型转换

  • 类型范围小的变量,可以直接赋值类型范围大的变量
  • 自动类型转换的底层原理:
	byte a = 12;
	int b = a; // a=12

自动类型转换的底层原理

  • 自动类型转换的其他形式:

自动类型转换的其他形式

  • 表达式的自动类型转换:

    • 在表达式中,小范围类型的变量会自动转换成当前最大范围的类型再运算
      表达式的自动类型转换
  • 注意事项:

  • 表达式的最终结果类型由表达式中的最高类型决定
	int i = 10;
	long l = 100L;
	long rs = i + l; // int + long结果为long,由最高类型long决定
  • 在表达式中,byte、short、char直接转换成int类型参与运算的
	byte b = 1;
	short s = 2;
	int rs = b + s; // byte + short = int,在表达式中,byte、short、char直接转换成int类型参与运算

2.强制类型转换

  • 类型范围大的数据或者变量,不能直接赋值类型范围小的变量
  • 可以强行将类型范围大的变量、数据赋值给类型范围小的变量:
数据类型 变量2 = (数据类型)变量1、数据
  • 强制类型转换底层原理:
	int a =  20;
	byte b = (byte)a; // b=20

强制类型转换底层原理

  • 注意事项
  • 强制类型转换可能造成数据(丢失)溢出
	int i = 1500;
	byte j = (byte)i; // j=-36

溢出

  • 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
	double d = 1.95;
	int i = (int)d; // i=1

浮点数舍入运算: 使用Math.round()方法(round方法返回值为long类型)
int i = (int) Math.round(9.997); 结果为i=10

boolean类型强转为int类型: boolean ? 1 : 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值