北大慕课Java程序设计【五】深入理解Java语言(上)

目录

一、变量及其传递

1. 基本类型与引用类型

2. 字段变量与局部变量

3. 变量的传递

4. 方法的返回

二、多态

1. 多态的两种情况

2. 上溯造型与虚方法的调用

3. 动态类型的确定

4. 什么情况不是虚方法调用

三、构造方法

1. 对象构造与初始化

2. 构造方法的执行过程

四、对象清除与垃圾回收

1. 对象清除与 System.gc() 方法

2. finalize() 方法


一、变量及其传递

1. 基本类型与引用类型

① 基本类型:其值直接存储于变量中(在这里)

② 引用类型:变量占一定内存空间,引用的对象实体也占一定空间(在那里)

【说明】引用型变量用 new 来创建

【举例】MyDate 类演示基本类型与引用类型

class MyDate {
    private int day;
    private int month;
    private int year;

    public MyDate(int y, int m, int d) {
        year = y;
        month = m;
        day = d;
    }

    void addYear() {
        ++year;
    }

    public void display() {
        System.out.println(year + "-" + month + "-" + day);
    }

    public static void main(String[] args) {
        MyDate m = new MyDate(2003, 9, 22);
        MyDate n = m; // 引用到同一个对象,复制的是引用,不是对象实体
        n.addYear();
        m.display();
        n.display();
    }
}

2. 字段变量与局部变量

① 字段变量与局部变量的概念

        → 字段变量:在类中定义的变量

        → 局部变量:在方法中定义的变量或方法的参变量

② 从内存角度来看

        → 存储位置:字段变量为对象的一部分,存储于堆中;局部变量存储于栈中

        → 生命周期:字段变量随对象的存在而存在,局部变量随方法的调用而存在

        → 初始值:字段变量可以自动赋初值(new 对象的时候初始化),局部变量必须显式赋值

③ 从语法角度来看

        → 字段变量属于类,可以用 public,private,static,final 来修饰

        → 局部变量不能够被访问控制符以及 static 修饰

        → 都可以被 final 修饰

3. 变量的传递

→ 有调用对象方法时,要传递参数

① 在传递参数时,Java 是值传递,将表达式的值赋值给形式参数

对于引用型变量,传递的值是引用值,而不是复制对象实体,可以改变对象的属性

class TransByValue {
    final int c = 7;

    public static void modify(int a) {
        ++a;
    }

    public static void modify(int[] b) {
        ++b[0];
        System.out.println(b[0]);
        b = new int[5];
        ++b[0];
        System.out.println(b[0]);
    }

    public static void main(String[] args) {
        int a = 0;
        modify(a);
        System.out.println(a);
        int[] b = new int[1];
        modify(b); // 复制了一份引用过去过去
        System.out.println(b[0]);
        TransByValue transByValue = getNewObject();
        System.out.println(transByValue.c);
    }

    public static TransByValue getNewObject() {
        return new TransByValue();
    }

4. 方法的返回

① 返回基本类型

返回引用类型:可以存取对象实体

二、多态

多态(polymorphism):一个程序中相同的名字表示不同的含义的情况

→ 多态的特点:大大提高了程序的抽象程度和简洁性(面向对象的重要特性)

1. 多态的两种情况

编译时多态

        → 重载(overload)多个同名的不同方法,在编译时决定

运行时多态

        → 覆盖(override)子类对父类方法进行覆盖

        → 动态绑定(dynamic binding)虚方法调用,在运行时决定

        → 在调用方法时,程序会自动地确定调用子类对象的方法

2. 上溯造型与虚方法的调用

① 上溯造型(upcasting):把派生类当作基本类来处理

Person p = new Student();
void fun(Pe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值