美文网首页
(二)Java 数据类型

(二)Java 数据类型

作者: 蓝笔头 | 来源:发表于2019-05-09 14:59 被阅读0次

数据类型 在计算机语言里面,可以理解为针对 内存 的一种抽象的表达方式。

所有的计算机编程语言,都会存在 数据类型 的概念,各种数据类型都需要在 学习初期 去了解。数据类型 可以说是计算机编程语言中最基本的单元。

在 Java 里面,本质上讲将 数据类型 分为两种:基本类型引用类型

  • 基本类型:基本类型是不能简化的、内置的数据类型、由编程语言本身定义。在 Java 语言中存在 byteshortintlongfloatdoublebooleanchar 八种 基本类型

  • 引用类型不是 基本类型数据类型 就是 引用类型,所以在 Java 中,除开上面所述的八种 基本类型 都是 引用类型

基本类型

基本类型,或者叫做内置类型。Java 中的八种基本类型分为四类。

  • 整数类型,也叫整型

    • byte8 bit,取值范围是 [-(2^7), 2^7-1],默认值是 0
    • short16 bit,取值范围是 [-(2^15), 2^15-1],默认值是 0
    • int32 bit,取值范围是 [-(2^31), 2^31-1],默认值是 0
    • long64 bit,取值范围是 [-(2^63), 2^63-1],默认值是 0
  • 浮点数类型,也叫浮点型

    • float32 bit、符合 IEEE 754 标准 的浮点数。默认值是 0.0f
    • double64 bit、符合 IEEE 754 标准 的浮点数。默认值是 0.0d
  • 逻辑类型,也叫布尔类型

    • boolean:只有两个取值:truefalse。默认值是 false
  • 字符类型

    • char16 bit,采取的 Unicode 的编码方式。默认值是 '\u0000'

我们把上面的取值范围和默认值都打印一下,代码清单如下所示。

public class Demo1 {

    /**
     * 成员变量不初始化就会赋默认值
     */
    static byte byteDefaultValue;

    static short shortDefaultValue;

    static int intDefaultValue;

    static long longDefaultValue;

    static float floatDefaultValue;

    static double doubleDefaultValue;

    static boolean booleanDefaultValue;

    static char charDefaultValue;


    public static void main(String[] args) {

        System.out.println("2^7 = " + pow(2, 7));
        System.out.println("2^15 = " + pow(2, 15));
        System.out.println("2^31 = " + pow(2, 31));
        System.out.println("2^63 = " + pow(2, 63));


        System.out.println("byte 占 " + Byte.SIZE + "(bit)" + "--------" + "byte 的默认值:[" + byteDefaultValue + "] byte 的数据范围:[" + Byte.MIN_VALUE + ", " + Byte.MAX_VALUE + "]");

        System.out.println("short 占 " + Short.SIZE + "(bit)" + "--------" + "short 的默认值:[" + shortDefaultValue + "] short 的数据范围:[" + Short.MIN_VALUE + ", " + Short.MAX_VALUE + "]");

        System.out.println("int 占 " + Integer.SIZE + "(bit)"  + "--------" +  "int 的默认值:[" + intDefaultValue + "] int 的数据范围:[" + Integer.MIN_VALUE + ", " + Integer.MAX_VALUE + "]");

        System.out.println("long 占 " + Long.SIZE + "(bit)" + "--------" + "long 的默认值:[" + longDefaultValue + "] long 的数据范围:[" + Long.MIN_VALUE + ", " + Long.MAX_VALUE + "]");

        System.out.println("float 占 " + Float.SIZE + "(bit)" + "--------" + "float 的默认值:[" + floatDefaultValue + "]");

        System.out.println("double 占 " + Double.SIZE + "(bit)" + "--------" + "double 的默认值:[" + doubleDefaultValue + "]");

        System.out.println("boolean 的默认值:" + booleanDefaultValue);

        System.out.println("char 占 " + Character.SIZE + "(bit)" + "--------" + "char 的默认值:[" + charDefaultValue + "]");

        System.out.println("char 的默认值是 '\\u0000': " + (charDefaultValue == '\u0000'));

    }

    /**
     * 计算 a^n 的值
     * 
     * @param a
     * @param n
     * @return
     */
    public static long pow(int a, int n) {
        if (n == 1) {
            return a;
        }
        long result = 1;
        for (int i = 0; i < n; i ++) {
            result = result * a;
        }
        return result;

    }
}

运行结果如下图所示:

image.png

引用类型

在 Java 中,引用类型的变量非常类似于 C/C++指针引用类型指向一个对象,指向对象的变量是 引用变量

  • 对象数组 都是 引用数据类型

  • 所有 引用类型默认值 都是 null

下面讲解一下常用的引用类型。

  • String:字符串类型。
char a = 'c';  // char 字符常量用单引号 ' '
String b = "c"; // String 字符串常量用双引号包裹 " "
  • 包装类型

    • Bytebyte 的包装类型。
    • Shortshort 的包装类型。
    • Integerint 的包装类型。
    • Longlong 的包装类型。
    • Floatfloat 的包装类型。
    • Doubledouble 的包装类型。
    • Booleanboolean 的包装类型。
    • Characterchar 的包装类型。
  • BigDecimal:大数类型。

装箱和拆箱

  • 装箱:自动把 基本类型 转换为对应的 包装类型
  • 自动拆箱:顾名思义,跟装箱对应,就是自动将 包装类型 转换为 基本类型
Integer a = 10; // 装箱
int b = a; // 拆箱

内存分配

假设计算机有 10 个的 内存区域 可以被分配,如下图所示。

内存.png

分别定义一个 基本类型变量 和一个 引用类型变量 并进行赋值。

int a = 4;
Integer b = 3;

简单的内存分配示意图如下所示。

内存分配示意图.png
  • 基本类型 变量 a 在内存地址 a1 分配了值 4。可以简单的表示为 基本类型变量 --> 实际值
  • 引用类型 变量 b 在内存地址 a3 分配了值 a6,这里的 a6 是一个 内存地址,可以用来引用 内存地址 a6 中的值 3。可以简单的表示为 引用类型变量 --> 引用地址 --> 实际值

(正文完)

相关文章

网友评论

      本文标题:(二)Java 数据类型

      本文链接:https://www.haomeiwen.com/subject/ursioqtx.html