Java 类型转换细节

780 阅读2分钟

Java 类型转换细节

这里介绍的是在 Java 中不同数据类型之间转化的一些比较基本的,但是又不容易确定的问题。

这里以 byte 类型为主,很多方法其实通用于 int long 这种类型。

一些非常简单,没有迷惑性的东西,这里就跳过了,这篇主要讲的是在转化中比较容易迷惑的问题。

String 类型转 Byte 类型

我们都知道 String 类型的转换其他任意的基本数据类型,基本都有一个 XXX.valueOf() 方法。通过这个方法就可以把 String 类型转化为 XXX 类型了。以 Byte 类型为例。

使用这个方法要注意:

  • String 类型要符合数据类型
  • String 的数不能超过 byte 类型的取值范围(-128 -127)超过这个范围就会抛出异常了。
  • Byte.valueOf(String string,int radix) 这个方法,这个方法的意思是,string 被当做是 radix 进制的数。比如 Byte.valueOf("10",16) 结果是 16
  • Byte.decode(String nm) 方法,这个方法是自动识别 nm 的进制的。nm 是 ox 、oX、# 开头就认为是 16 进制的数。 0 开头就认为是 8 进制的数值

长类型转短类型(保留低字节)

以 int 转 short 为例子:我们知道 int 是 4 个字节,shor 是 2 个字节。

我们又知道这些数值在计算机中都是以二进制来储存的。

假如 int a = 65535 那么在计算机中的存储方式就是:0000FFFF(这里方便起见用 16 进制表示)

short s = (shor)a 这样强制转换,Java 会把 a 的高 2 个字节删除,保留低 2 个字节给 s 于是 s 在计算机中就变成了 FF ,就是 -1 了。