Java教程

Java 之 数据类型

本文主要是介绍Java 之 数据类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java 之 数据类型

在了解数据结构之前需要先了解一下容量单位是怎么回事

bit 是计算机最小的容量单位往上还有 byte K M G 等等,他们之间的单位转换分别是:

1byte = 8bit

1K = 1024byte

1M = 1024K

1G = 1024M

先有了这个概念,才能明白 Java 的设计者为什么要设计这么多种数据类型

image-20220403215609538

Java数据类型分为两大类, 基本类型引用类型

基本数据类型又分为三类 分别为

整数类型 字符类型 布尔类型

在Java中每一种数据都定义了明确的数据类型,在内存中分配了不同大小的空间(bytes)

整数类型

  1. Java各整数类型有固定的范围和字段程度,不受具体操作系统的影响,以保证Java程序的可移植性。
  2. ⭐Java的整数常量默认为 int 类型,声明 long 型常量必须后加 lL
  3. Java程序中变量通常声明为 int 类型,除非不足以表示大数,才使用 long
  4. bit 计算机中的最小储存单位。
  5. byte 计算机中基本储存单元, 1byte = 8bit
  • byte 字节类型

    • byte 类型占用字节为 1 bytes 即 1 字节
    • 存放范围 -128 ~ 127
  • short 短整型

    • short 类型字节占用为 2 bytes 即 2 字节
    • 存放范围 -2^15 ~ 2^15 - 1
  • int 整型

    • int 类型字节占用为 4 bytes 即 4 字节
    • 存放范围 -2^31 ~ 2^31 - 1
  • long 长整型

    • long 类型字节占用为 8 bytes 即 8 字节
    • 存放范围 -2^63 ~ 2^63 - 1
  • 解释占用空间:

    • 假设我现在分别使用 byte 类型 和 short 类型用来存储整数 5

    • public class Dateail {
          public static void main (String[] args) {
              // 声明变量类型
              byte b_num;
              short s_num;
              // 给变量赋值
              b_num = 5;
              s_num = 5;
          }
      }
      
    • 在我们看来这是一样的,但是计算机存储这两个数的方式却不一样。

    • 计算机会先把 整数 5 转换为二进制 00000101 存储到对于的储存空间 如图:

    • image-20220403221952838

    • 它尽管 5 这个数字不需要 2个字节的空间,但是 Java 依旧会按照你指定的类型开辟出相对于的空间存储 5 这是为了防止以后 需要储存的值小于或大于这个类型的存储范围。

  • 注意事项

    1. 占用空间小的类型可以转换成占用空间大的类型,反之不行。
    2. Java 整型常量默认是 int 类型 声明 long 类型最好在值后面加上lL

浮点类型

  1. 与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受具体操作系统影响。

  2. Java的浮点类型常量默认为double型,声明float型常量,须后加 fF

  3. 浮点类型常量有两种表示形式

    十进制数形式:如 5.12 512.0f .512 (必须带有小数点)

    科学计数法形式:如 5.12e2 [5.12 * 10^2] 5.12E-2 [5.12 / 10^2]

  4. ⭐通常情况下,应该使用double型,因为它比float型更精确。

  5. ⭐浮点类型存在陷阱,下面注意事项讲解

浮点数在计算机中的存放方式: 浮点数 = 符号位 + 指数位 + 尾数位

**注意: **

浮点数陷阱:

​ ⭐当我们使用运算结果是小数的数进行相等判断时,要小心

double number1 = 2.7;
double number2 = 8.1 / 3;

// 得出的结果是
// number1 2.7
// number2 2.6999999999999997

解决方法:

​ 要对运算结果是小数的结果与其他数值进行比对,一个使用这两个数值相减的绝对值取某一精度进行比对。例如:

if (Math.abs(number1 - number2) < 0.000001) {
    System.out.println("误差值小于0.000001");
}

​ 这样只要误差值小于我们设置的值该条语句就会执行。

​ 浮点数的尾数部分可能丢失,造成精度损失(小数都是近似值)

  • float 单精度
    • float 类型字节占用为 4 bytes
    • 存放范围 -3.403E38 ~ 3.403E38
  • double 双精度
    • double 类型字节占用为 8 bytes
    • 存放范围 -1.798E308 ~ 1.798E308

字符类型

  1. char 类型占用 2个字节 可存放汉字
  2. ⭐字符常量是用单引号 '' 括起来的单个字符。例如 char c1 = 'a' char c2 = '1' char c3 = '發'
  3. Java中还允许使用转义字符 \ 来将其后的字符转变为特殊字符型常量。例如 char c1 = '\t'
  4. 在Java中,char本质是一个整数,默认输出的是unicode 码对应的字符。
  5. 可以直接给char赋一个整数,然后输出时,它会按照对应的Unicode字符输出。
  6. char类型是可以进行运算的,相当于一个整数,因为它都有对应的Unicode码。

重点:

char 在 Java 中的保存与加载顺序:(以字母 a 举例)

​ 保存: 'a' ===> Unicode 码值 97 ===> 二进制 1100001 ===> 存储

​ 加载: 读取 ===> 二进制 1100001 ===> Unicode 码值 97 ===> 'a'

布尔类型

  1. boolean 只有两种状态 true false
  2. boolean 类型占用 1 个字节
  3. boolean 类型适用于逻辑运算, 一般用于程序流程控制

注意:

​ Java 不可用除了falsetrue之外的任何数字或字符表示

这篇关于Java 之 数据类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!