读《疯狂Java讲义》笔记总结三
来源:互联网 发布:关羽 知乎 编辑:程序博客网 时间:2024/06/06 08:50
1.初始化块
实际上初始化块是一个假象,使用javac命令编译Java类后,该Java类中的初始化块会消失——初始化块中代码会被 “还原” 到每个构造器中,且位于构造器所有代码的前面。
2.p125-p128 自动装箱,自动拆箱不太懂
3.包装类
4.单例类
实例:
//提供一个静态方法,用于返回Singleton实例 //该方法可以加入自定义控制,保证只产生一个singleton对象 public static Singleton getInstance() { //如果instance为null,则表明还不曾创建Singleton对象 //如果instance不为null,则表明已经创建了Singleton对象 //将不会重新创建新的实例 if (instance == null) { //创建一个Singleton对象,并将其缓存起来 instance = new Singleton (); } return instance; }
5.final修饰基本类型变量和引用类型变量的区别
当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变,但对于引用类型变量而言,它保存的仅仅是一个引用,final只保证这个引用类型变量所引用的地址不会发生改变,即一直引用同一个对象,但这个对象完全可以发生改变。
6.可执行“宏替换”的final变量
对于一个final变量来说,不管它是类变量、实例变量,还是局部变量,只要该变量满足三个条件,这个final变量就不再是一个变量,而是相当于一个直接量。
- 使用final修饰符修饰
- 在定义该final变量时指定了初始值
- 该初始值可以在编译时就被确定下来
final修饰符的一个重要用途就是定义“宏变量”。当定义final变量时就为该变量指定了初始值,而且该初始值可以在编译时就确定下来,那么这个final变量本质上就是一个“宏变量”,编译器会把程序中所有用到该变量的地方直接替换成该变量的值。
Java会使用常量池来管理曾经用过的字符串直接量,例如执行String a = "java";语句之后,常量池中就会缓存一个字符串“java”;如果程序再次执行String b = "java";,系统就会让b直接指向常量池中的“java”,因此a == b 就会返回true。
7.内部类
非静态内部类的子类不一定是内部类,它可以是一个外部类。但非静态内部类的子类实例一样需要保留一个引用,该引用指向其父类所在外部类的对象。也就是说,如果有一个内部类子类的对象存在,则一定存在与之对应的外部类对象。
8.effectively final
1 0
- 读《疯狂Java讲义》笔记总结三
- 读《疯狂Java讲义》笔记总结一
- 读《疯狂Java讲义》笔记总结二
- 疯狂Java讲义笔记
- 疯狂Java讲义笔记
- 《疯狂Java讲义》笔记
- 《疯狂Java讲义》学习笔记
- 疯狂JAVA讲义笔记--第一章
- 《OC疯狂讲义》笔记(三)
- 【Java】《Java疯狂讲义》自学笔记-第一章
- 李刚java疯狂讲义(笔记)
- 《疯狂JAVA讲义》学习笔记(一)
- 学习java疯狂讲义笔记(连载)
- 疯狂java讲义笔记——数据类型
- Java疯狂讲义第五章笔记
- 疯狂Java讲义-包装类学习笔记
- JAVA疯狂讲义笔记(一)
- java疯狂讲义笔记_java语言概述
- 关于C++二分搜索树的中序遍历和先序遍历
- 【C#】另一种mysql登录验证方法
- 关于商城购物车的总结---添加购物车
- 内存管理
- [BZOJ1009][HNOI2008]GT考试
- 读《疯狂Java讲义》笔记总结三
- C#精确判断一个人的年龄
- poj--3620--Avoid The Lakes(dfs)
- UIAlertController 和 UIAlertView的使用
- 5-5 UVA 10391 Compound Words复合词
- Windows下JDK安装环境变量配置
- 【J】Activity介绍
- Django中Request 对象介绍
- 去除透传,转义字符