美文网首页
(二)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