📜  Java中的数据类型

📅  最后修改于: 2020-02-12 14:38:35             🧑  作者: Mango

主要有两种类型的语言。

  • 第一种是静态类型的语言,其中每种变量和表达式类型在编译时都是已知的。变量一旦声明为某种数据类型,便无法保存其他数据类型的值。
    示例: C,C++,Java。
  • 另一种是动态类型语言。随着时间的推移,这些语言可以接收不同的数据类型。
    示例: Ruby,Python

Java是静态类型的,也是一种强类型的语言,因为在Java中,每种类型的数据(例如整数,字符,十六进制,压缩十进制等)都被预定义为编程语言的一部分,并且为a定义了所有常量或变量。给定程序必须用一种数据类型来描述。
Java中的数据类型

Java有两类数据:

  • 原始数据类型:例如布尔值,char,int,short,byte,long,float和double
  • 非原始数据类型或对象数据类型:例如字符串,数组等。

原始数据类型

原始数据只是单个值,没有特殊功能。

8种原始数据类型

  1. 布尔值:布尔值数据类型仅表示 true或false的一小部分信息,但是布尔值数据类型的大小取决于虚拟机。布尔类型的值不会隐式或显式(使用强制转换)转换为任何其他类型。但是程序员可以轻松地编写转换代码。语法: 
    boolean booleanVar;

    大小:

    虚拟机相关


    true, false


    默认值

    false

    例子:

    // Java代码展示布尔值类型
    class 芒果文档 {
        public static void main(String args[])
        {
            boolean b = true;
            if (b == true)
                System.out.println("Hi 芒果");
        }
    }/* Your code... */

    输出

    Hi 芒果
  2. byte:字节数据类型是8位带符号的二进制补码整数。字节数据类型对于在大型数组中保存内存很有用。语法:
    byte byteVar;

    尺寸:

    1字节(8位)

    值:

    -128至127

    默认值:

    0

     

    // Java代码展示字节类型
    class 芒果文档 {
        public static void main(String args[])
        {
            byte a = 126;
            // 一个字节是8比特
            System.out.println(a);
            a++;
            System.out.println(a);
            // 这里溢出了,因为字节只能存储 :-128到127
            a++;
            System.out.println(a);
            // 把数值范围调整到合法
            a++;
            System.out.println(a);
        }
    }

    输出:

    126
    127
    -128
    -127

     

  3. short: short数据类型是一个16位带符号的二进制补码整数。与字节类似,在实际节省内存的情况下,请使用short以大数组形式保存内存。语法:
    short shortVar;

    尺寸:

    2字节(16位)

    值:

    -32768至32767(含)

    默认值:

    0

     

  4. int它是一个32位带符号的二进制补码整数。语法:
    int intVar;

    尺寸:

    4字节(32位)

    值:

    -2147483648至2147483647(含)

    默认值:

    0

    注意:在Java SE 8和更高版本中,我们可以使用int数据类型表示一个无符号32位整数,其值在[0,2 32 -1] 范围内。使用Integer类可将int数据类型用作无符号整数。

  5. long: long数据类型是64位二进制补码整数。语法:
    long longVar;

    尺寸:

    8字节(64位)

    值:

    -9223372036854775808
              至
    9223372036854775807
          (包括)

    默认值:

    0

    注意:在Java SE 8和更高版本中,可以使用long数据类型表示无符号的64位long,其最小值为0,最大值为2 64 -1。Long类还包含compareUnsigned、divideUnsigned等方法,以支持无符号long的算术运算。

  6. float: float数据类型是单精度32位 IEEE 754浮点。如果需要将内存保存在大的浮点数数组中,请使用浮点数(而不是双精度数)。语法:
    float floatVar;

    尺寸:

    4字节(32位)

    值:

    最多7个十进制数字

    默认值:

    0.0

     

  7. double: double数据类型是双精度64位IEEE 754浮点。对于十进制值,此数据类型通常是默认选择。语法:
    double doubleVar;

    尺寸: 

    8字节(64位)

    值: 

    最多16个十进制数字

    默认值: 

    0.0

    注意: float和double数据类型都是专门为科学计算而设计的,在这种情况下,近似误差是可以接受的。如果最关注精度,那么建议不要使用这些数据类型,而应使用BigDecimal类。

  8. char char数据类型是单个16位Unicode字符。语法:
    char charVar;

    尺寸:

    2字节(16位)

    值:

    '\ u0000'(0)至'\ uffff'(65535)

    默认值:

    '\ u0000'

     

    // // Java代码展示char类型
    class 芒果文档 {
        public static void main(String args[])
        {
            // 声明字符
            char a = 'G';
            // 用整数类型声明数字
            int i = 89;
            // 使用byte或short如果消耗的内存是固定的
            byte b = 4;
            // 这将会报错,因为数字超过了byte的范围
            // byte b1 = 7888888955;
            short s = 56;
            // 这将会报错,因为数字超过了short的范围
            // short s1 = 87878787878;
            // 小数在Java中一般用double来表示
            double d = 4.355453532;
            // 对float,使用'f'作为后缀
            float f = 4.7333434f;
            System.out.println("char: " + a);
            System.out.println("integer: " + i);
            System.out.println("byte: " + b);
            System.out.println("short: " + s);
            System.out.println("float: " + f);
            System.out.println("double: " + d);
        }
    }

    输出:

    char: G
    integer: 89
    byte: 4
    short: 56
    float: 4.7333436
    double: 4.355453532

    非原始数据类型或参考数据类型

    参考数据类型将包含变量值的一个存储器地址,因为该引用类型将不在存储器中直接存储变量值。它们是字符串对象,数组等。

    • 字符串:字符串定义为字符数组。字符数组和字符串之间的区别是字符串以特殊字符’\ 0’终止。以下是使用Java编程语言声明字符串的基本语法。语法:
        = “";

      例:

      // 声明String ,没使用new关键字
      String s = "芒果文档";
      // 声明String ,使用new关键字
      String s1 = new String("芒果文档");
      • :类是用户定义的蓝图或原型,从中可以创建对象。它表示一种类型的所有对象共有的一组属性或方法。通常,类声明可以按顺序包括以下组件:
        1. 修饰符  :一个类可以是公共的,也可以具有默认访问权限
        2. 类名:  名称应以首字母开头(按惯例大写)。
        3. 超类(如果有):类的父类(超类)的名称(如果有的话),以关键字extends开头。一个类只能扩展(子类)一个父级。
        4. 接口(如果有):由类实现的接口的逗号分隔列表(如果有的话),其后为关键字Implements。一个类可以实现多个接口。
        5. 正文由括号{}包围的班级正文。
      • 对象:它是面向对象编程的基本单元,代表现实生活中的实体。典型的Java程序会创建许多对象,您知道这些对象通过调用方法进行交互。一个对象包括:
        1. 状态:它由对象的属性表示,它还反映了对象的属性。
        2. 行为:它由对象的方法表示,它还反映了一个对象对其他对象的响应。
        3. 身份:它为一个对象赋予唯一的名称,并使一个对象能够与其他对象进行交互。
      • 接口与类一样,接口可以具有方法和变量,但是在接口中声明的方法默认情况下是抽象的(仅方法签名,没有主体)。  
        • 接口指定类必须执行的操作,而不指定方法。这是该课程的蓝图。
        • 接口是关于功能的,例如Player可能是接口,任何实现Player的类都必须能够(或必须实现)move()。因此,它指定了类必须实现的一组方法。
        • 如果类实现了一个接口并且没有为该接口中指定的所有功能提供方法主体,则必须将类声明为抽象的。
        • 一个Java库示例是Comparator Interface。如果一个类实现了此接口,则可以使用它对集合进行排序。
      • 数组数组是一组由通用名称引用的相似类型的变量.Java中的数组与C / C++中的数组工作方式不同。以下是有关Java数组的一些要点。
        • 在Java中,所有数组都是动态分配的(下面讨论)。
        • 由于数组是Java中的对象,因此我们可以使用成员长度来找到它们的长度。这与C / C++不同,在C / C++中,我们使用sizeof查找长度。
        • 像其他变量一样,也可以在数据类型后使用[]声明Java数组变量。
        • 数组中的变量是有序的,每个变量的索引都从0开始。
        • Java数组也可以用作静态字段,局部变量或方法参数。
        • 数组的大小必须由int值指定。
        • 数组类型的直接超类是Object
        • 每种数组类型都实现Cloneable和java.io.Serializable接口。