【Java教程】Java的类型转换机制

类型转换分为两类:

  • 隐式类型转换
  • 强制类型转换

1 隐式类型转换

在一定条件下,自动执行。

1.1 触发条件

  1. 把一个表示数据范围小的变量赋值给另一个表示数据范围大的变量。
  2. 不同类型的数一起运算,会进行数据类型提升。
    • byteshortchar 变量参与运算,都将被提升到 int 类型。
    • 算式中,每个数都会转为数据范围最大的数据类型顺序:int < long < float < double

1.2 说明

  • boolean 类型不能与其他基本数据类型相互转换。

1.3 示例

double num = 10;             // 将 int 10 赋值给 double 类型
System.out.println(num);     // 输出 10.0

2 强制类型转换

把一个表示数据范围大的数值变量赋值给另一个表示数据范围小的变量,可能导致溢出或损失精度。
浮点数到整数会直接舍弃小数,不是四舍五入。

2.1 格式

目标数据类型 变量名 = (目标数据类型) 表达式;

2.2 示例

int a = (int) 5.5;

3 常量优化机制

在编译时,只有 int 常量的计算,结果会自动类型转换。
若不兼容则编译不通过。

3.1 示例

byte d = 3 + 4;  // 正确。常量优化机制。
byte a = 3;
byte b = 4;
byte c = a + b;  // 错误。包含 byte 变量,会提升为 int 类型。
byte e = a + 4;  // 错误。包含 byte 变量,会提升为 int 类型。
byte b2 = 50 + 50 + 50; // 报错,类型不兼容。

3.2 String 与基本类型的转换

3.2.1 基本类型→String

  • 方式一:直接在数字后加一个空串 ""
  • 方式二:String.valueOf(……)

3.2.2 String→基本类型

除了 Character 类之外,其他所有包装类都具有 parseXxx 静态方法可以将字符串参数转换为对应的基本类型:

  • static byte parseByte(String s):将字符串参数转换为对应的 byte 基本类型。
  • static short parseShort(String s):将字符串参数转换为对应的 short 基本类型。
  • static int parseInt(String s):将字符串参数转换为对应的 int 基本类型。

valueOf 方法则转为包装类:

  • static Integer valueOf(String s):将字符串参数转换为 Integer

3.2.3 注意

  • 如果字符串超过 3333 位,不能转化为 Integer
  • 如果字符串超过 6565 位,不能转化为 Long
  • 如果字符串超过 500000001500000001 位,不能转化为 BigInteger
  • 如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出 java.lang.NumberFormatException 异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值