美文网首页
Java 编程思想-第二章 对象的引用

Java 编程思想-第二章 对象的引用

作者: hexiaosa | 来源:发表于2017-05-17 18:21 被阅读8次

    1. 用句柄操作对象

    句柄,也做“引用”,例:
    String s = new String("a");
    s 即称为句柄,通过 s 来操作 new 出来的对象。

    2. 对象的创建

    (1) 特殊情况—基本数据类型

    基本数据类型,书中也称作主(主要)数据类型,有以下几种:
    boolean, char, byte, short, int, long, float, double
    基本数据类型有各自对应的封装类。

    注:BigInteger 和 BigDecimal 可以划分为封装类,但没有对应的基本数据类型。它们精度高,但是使用需要调用方法,不能直接使用运算符,并且消耗的内存较高。

    (2) 存储位置

    1. 寄存器
      由于位于处理器内部,最快的保存区域,但是寄存器的数量十分有限。
    1. 堆栈
      位于 RAM(随机访问存储区域),存取速度仅次于寄存器。

    2. 同样位于 RAM 中,其中保存了 Java 对象(new 出的对象),在堆内分配内存会花费较长的时间。
    3. 静态存储
      静态指固定的存储位置(RAM 中)。在程序的运行期间,随时等待被调用。
    4. 常量存储
      通常置于程序内部,因为是不可变的。有时候为了保护,可考虑置于只读存储器中。
    5. 外部存储
      位于程序之外,就算程序没有运行或者被移除,外部存储依然不受影响。

    3. 对象的销毁

    (1) 作用域

    如下面代码:
    {
    String s;
    }
    //unreached s

    注:Java 中已有的全局变量命名,不可在局部变量中再次用该名称命名。

    (2) 对象的销毁

    {
    String s = new String("a");
    }
    当出来作用域时,句柄 s 已经被销毁,new 的对象存放在堆中,在 Java 中被垃圾收集器来回收,查找已经 new 的对象,看哪些不再被引用就回收。

    4. 新建数据类型—类

    类,包含字段和方法。字段又称为数据成员(属性),方法又称为成员函数。

    (1) 字段

    字段可以是对象,也可以是基本数据类型。
    字段有默认值,如果是对象,则默认 null,如果是基本数据类型,默认值如下:
    boolean : false
    char : '\u0000' (null)
    byte : (byte)0
    short : (short)0
    int : 0
    long : 0L
    float : 0.0f
    double : 0.0d

    注:局部变量没有固定的默认值,会随机一个值。

    (2) 方法

    类的方法包含:返回值,方法名,自变量(参数),方法体。
    这里面值得一提的是自变量,自变量如果不是基本数据类型,则传递的是句柄,指向对象的句柄,改变自变量的指向并不会改变原本数据 的变化,如以下代码:
    void change(String s) {
    s = new String("b");
    }
    在 main 函数中一段代码:
    String s = new String("a");
    change(s);
    System.out.println(s);
    此时输出的是 a,原因就是上述所说,change 方法中的 s 是新的句柄指向了 main 中的 s 指向的对象。

    5. 构建 Java 程序

    (1) 使用其它组件

    Java 中使用其它库的文件如以下格式:
    import java.util.Vector;
    或者:
    import java.util.*;
    后者省去多次导包的麻烦。

    注:Java 本身已经引入一个默认的 java.lang 包

    (2) 使用 static 关键字

    首先来说明 static 关键字修饰的存放在静态存储区,下面用代码来说i明:
    class Test {
    static int i = 1;
    }
    不管有几个对象句柄引用 i 这个静态变量,句柄指向的都是同一个位置,比如:
    Test t1 = new Test();
    Test t2 = new Test();
    t1.i++;
    System.out.println(t2.i);
    结果是 2,因为 t1.i 和 t2.i 引用的是同样的内存区域。

    static 一般用 Test.i 这样的方法来调用,这也是 static 的一个特点,不用创建新的对象就可以直接调用。

    6. 其它

    (1) '+' 连接符

    如下:
    System.out.println(3 + 5 + "7");
    输出结果是87
    System.out.println("3" + 5 + 7);
    输出结果是357
    也就是 '+' 是自动类型转换。

    (2) 注释

    注释方法:

    • // 这是注释
    • /* 这是注释 */

    (3) 编码格式

    例:
    class BookStore() {
    }
    BookStore bookStore = new BookStore();

    相关文章

      网友评论

          本文标题:Java 编程思想-第二章 对象的引用

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