目 录CONTENT

文章目录

基本数据类型

FatFish1
2025-01-24 / 0 评论 / 0 点赞 / 60 阅读 / 0 字 / 正在检测是否收录...

八种数据类型:byte、int、short、long、float、double、char、boolean

聊一些基本数据类型中有意思的事情

观点1、基本数据类型是互通的

基本数据类型本质上都是字节,是01组成的数据

为什么基本数据类型是互通的,因为在不考虑精度的情况下,除了boolean类型,基本数据类型是可以直接强转输出的

怎么证明这一点呢?

// 精度相同的场景下:
System.out.println((byte) 98);
System.out.println((byte) 'b');

在精度相同的场景下,将int类型的98和char类型的'b'转为byte类型输出,得到的结果都是98

一方面是PrintStream输出流方法的逻辑,另一方面说明了将98转为二进制数据,这个数据可以代表int 98,也可以代表char 'b' ,当然它也可以代表那一串byte数据

// 不同精度的场景下:
System.out.println((byte) 2.1f);
System.out.println((byte) 2.1d);

而在不同精度的场景下,虽然也能把float、double转为byte,但是会损失精度

其实本质上是先把float和double转成了int,再进一步转成byte

当然,剩下的boolean是无法和int互转的,因此就无法和byte、char互转

那么基本数据类型的互转有什么用呢?

利用字节流读取文件的时候,读取到的都是byte数据,可以直接利用基本数据类型的互通性进行数据转换

FileInputStream fis = new FileInputStream("C:\\Users\\g30038553\\Desktop\\temp\\tag加密\\tag65536特殊字符.txt");
byte[] bytes = fis.readAllBytes();
// 直接读全文,如果是读中文,增加标准字符集转码
String origin = new String(bytes, StandardCharsets.UTF_8);
System.out.println(origin);
// 如果想遍历做处理,也可以转char处理
for (byte : bytes) {
    char c = (char) byte
    // dosomething
}
// 也可以利用String#charAt方法遍历
for (int i = 0; i < origin.length(); i++) {
    String word = String.valueOf(origin.charAt(i));
    // dosomething
}

0

评论区