深入理解Java 第五讲

5.1 变量及其值传递
传值 基本数据类型传的都是值
传引用 数组等数据结构是对象,所以传的是引用
在进行对象赋值的时候传的都是引用。

局部变量和成员变量,局部变量必须赋初值,成员变量不用,因为其在实例化的时候会调用构造函数自动赋初值。
局部变量只能被final修饰。

5.2 多态及虚方法调用
upcasting (用父类对象进行声明)
Java中普通的方法都是虚方法,其实例调用哪个方法和对象有关,属于动态编译。
重载是静态编译。

static private final 这三个修饰的方法是非虚方法,调用时只跟对象的声明有关,和实例无关。
编译的时候翻译成的指令不同。invokevitual/invokestatic

5.3 对象构造及初始化
先调用父类构造方法,如果不用super,就是其默认构造方法,所以所有类都最好要写无参构造函数。然后初始化本类成员变量(即整形变量赋0等),最后调用构造函数中的其他执行语句,如赋值等。

构造函数尽量简单点,尽量不要调用任何构造方法,能让程序初始化跑起来就好。不要写非final类型的方法,因为调用其他成员方法极有可能造成动态绑定,使得程序运行结果不可控。

5.4对象清除和垃圾回收
try用于关闭打开的文件,清除非内存资源
finalize 系统默认调用的类似析构函数
system.gc 内存清除建议,不能强制清除内存
Java虚拟机内存回收线程进行管理的:它可以实时监控每个对象的引用计算,当值为0时进行回收。—》其使得返回临时对象可行。

5.5匿名类和内部类
内部类依托于外部类,依托于外部类实例,外部类先创建对象,内部类在基于外部类创建对象。外部类创建对象的时候需要指明内部类的对象是哪一个。

内部类在定义时,可以访问外部类所有的成员,但是当内部类和外部类存在同名的成员时,内部类调用应该用 外部类名.this.成员名。

static声明的内部类,其不依托于外部类,所以在其生成对象时不需要指明外部类实例,new前不需要带实例。

5.6 匿名类
进行对象返回,return一个临时对象(匿名),一般是重写某个接口。
作为方法的参数。创建临时对象进行使用,实现某个接口。具体怎么使用有点懵圈》》》》

5.9 Java是没有指针的语言
引用实质就是指针,可以通过引用进行链表操作,值交换,函数指针实现(接口,lambda)。

Java的==
基本类型是指值相等,引用类型是指引用相同。
但是有例外:
整数转换后比较,浮点数等不要用"==",因为根据计算机底层原理,是有误差的。
boolean无法与int比较。

装箱对象问题:-128~127进行装箱

引用类型,枚举类型
枚举类型可以直接用==判断是否相等;引用类型如果要判断内容是否相等,用equals方法。

字符串常量
用equals方法判断内容是否相等。
==是指是否引用了该常量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值