• Java 中的八大基本数据类型、类型转换


    目录

    1. ♥常见的数据类型

    2. 引用数据类型

    3. 类型转换

    4. 数值提升

    5. int 和 String 之间的相互转换


    1. 基本数据类型

    八大基本数据类型:

    • 整型:byte、short、int、long
    • 浮点型:double(双精度浮点型)、float(单精度浮点型)
    • 字符型:char
    • 布尔型:boolean

    字节:字节是计算机中表示空间大小的基本单位。计算机使用二进制表示数据.。我们认为 8 个二进制位(bit) 为一个字节(Byte)。我们平时的计算机为 8GB 内存, 意思是 8G 个字节。

    其中 1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB。
    所以 8GB 相当于 80 多亿个字节。

    2. 引用数据类型

    除了常见的八种数据类型还有一些引用数据类型:String类(字符串类型)、数组、类、接口等。

    总结:

    3. 类型转换

    Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验。

    小结:

     1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 比如 int 类型可以赋值给 long类型;

    2. 范围大的数据类型转为小的数据类型需要强制类型转换,但是会出现精度丢失问题;

    3. 强制类型转换不是一定能成功, 互不相干的类型之间无法强转,比如 int 类型和 boolean 类型;

    4. 使用字面值常量赋值的时候, Java 会自动进行一些检查校验, 判定赋值是否合理,比如 int 类型赋值给 byte 类型,byte 的数据范围是 -128 -> +127, 如果 byte a = 256 ;256已经超过范围。

    4.数值提升

    4.1 小范围提升大范围

    1. int a = 10;
    2. long b = 20;
    3. // int c = a + b; // 编译出错,long 转成 int 会丢失精度
    4. long d = a + b;

    当 int 和 long 混合运算的时候, int 会提升成 long, 得到的结果仍然是 long 类型, 需要使用 long 类型的变量来接收结果。如果非要用 int 来接收结果, 就需要使用强制类型转换。

    4.2 short、btye 提升 int 再运算

    1. byte a = 10;
    2. byte b = 20;
    3. byte c = a + b;
    4. System.out.println(c);

    上述代码中虽然 byte 和 byte 都是相同类型, 但是还是出现编译报错。原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int 类型, 再进行计算(因为计算机的CPU通常是按照4个字节为单位读写数据), 得到的结果也是 int 类型, 这时赋给 c, 就会出现上述问题。

    正确代码:

    1. byte a = 10;
    2. byte b = 20;
    3. byte c = (byte)(a + b);
    4. System.out.println(c);

    小结:

    1. 不同类型的数据混合运算, 范围小的会提升成范围大的。
    2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算。

    5. int 和 String 之间的相互转换

    1. // int -> String
    2. String str1 = num + "";
    3. String str2 = String.valueOf(num);
    4. // String -> int
    5. String str = "100";
    6. int num = Integer.parseInt(str);

     

  • 相关阅读:
    理解virt、res、shr之间的关系(linux系统篇)
    数据结构学习:Trie树
    DRM全解析 —— plane详解(1)
    「随笔」Vue技能树测评 # CSDN 技能树评测征文
    c++11:左值引用和右值引用《全家桶》
    嵌入式经典面试题
    算法学习 【第一周】 Ⅲ
    使用RestCloud ETL Shell组件实现定时调度DataX离线任务
    深入篇【C++】剖析C++11中右值引用与左值引用的区别以及应用价值
    LLMs: 近端策略优化PPO Proximal policy optimization
  • 原文地址:https://blog.csdn.net/AlinaQ05/article/details/125622706