摘要: 源码: 执行结果: 特别留意最后一行里的ready,值为 true。while进入循环的条件明明是ready = false,但是最后一个输出结果怎么是true? ps. 不是每次输出结果都会像上面那样。 原因分析: while循环最后1秒的时候,主线程里的, ready = true; 这行代码先 阅读全文
posted @ 2018-06-02 23:23 梁桦 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 当switch-case和if-else可互换时,应当优先采用switch-case。因为switch-case的效率更高(详情下回分解)。 阅读全文
posted @ 2018-05-24 08:24 梁桦 阅读(700) 评论(0) 推荐(0) 编辑
摘要: A:final类不一定是不可变类,因为对于final类的某个成员变量,若存在对该成员变量的访问器并且该成员变量(对象)存在修改器,那么该final类就不是不可变类。 B:简单的Enum类型是线程安全的枚举类型,但是如果Enum中嵌套了非线程安全的内容时,就不是线程安全的(下次举详细的例子,最近项目中 阅读全文
posted @ 2018-05-24 08:22 梁桦 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 假设一个项目中,A、B两个类是调用链的关系(如,A中方法调用B中方法): 那么,假如B的方法中需要的参数,既可以从A中调用时传入,也可以直接从B中插入,那么该参数应当尽量从A中调用时传入,而应当避免直接在B中突兀的插入。 因为:尤其是当该参数在多个调用链中存在时,我们可以将多个调用链的相同部分抽象出 阅读全文
posted @ 2018-05-24 08:15 梁桦 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 10.1创建内部类 ·内部类:将一个类的定义放在另一个类的定义内部 ·外部类中使用内部类: ·实例成员中使用内部类:和使用普通类没差别 ·静态成员中使用内部类:要指明对象的类型,OuterClassName.InnerClassName 10.2链接到外部类 ·内部类可以访问外部类的所有成员 ·迭代 阅读全文
posted @ 2018-03-07 15:45 梁桦 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 9.1抽象类和抽象方法 ·抽象方法:仅有声明,没有方法体(这种方法是不完整的) ·抽象类:包含抽象方法的类叫抽象类(更准确地说,用abstract修饰的类) ·如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的(没有抽象 方法也是可以限定为抽象类的)。 ·因为抽象方法不完整,所以包含抽象方法的 阅读全文
posted @ 2018-03-07 00:54 梁桦 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 向上转型 泛型 分离接口和实现 ·【类与类耦合视角】多态:<分离>做什么~接口|怎么做~实现 ·好处: ·更可读:<改善>(代码的)组织结构和可读性 ·更可写:<创建>(可扩展的)程序 ·作用:<消除>(类型之间的)耦合关系 ·接口级别的代码复用 ·别名:动态绑定||后期绑定||运行时绑定 ·【类( 阅读全文
posted @ 2018-03-06 22:45 梁桦 阅读(102) 评论(0) 推荐(0) 编辑
摘要: ·复用代码 ·复制代码,并加以改变 ·代码重用机制~组合(功能)、继承(功能 & 形式) 7.1 组合语法 ·组合:将对象引用<置于>新类中即可 ·(对象类型)数据域初始化位置: 1.定义的地方——构造器被调用前初始化 2.构造器中 3.惰性初始化 4.使用实例初始化(实例代码块) 7.2 继承语法 阅读全文
posted @ 2018-03-06 15:28 梁桦 阅读(105) 评论(0) 推荐(0) 编辑
摘要: ·写完后发现不够完美 → 重构 → 服务端程序员修改代码不能影响客户端程序员的使用 → 访问权限修饰符 6.1 包:库单元 ·import导包(命名空间) ·编译单元:.java文件 ·最多有一个public类,其他类主要用来为public类服务。 ·Java解释器负责.class文件的查找、装载、 阅读全文
posted @ 2018-03-06 14:52 梁桦 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 【本章的 垃圾回收与finalize()方法部分,真的是讲的太烂了】 ·程序员 <初始化> ·编译器 <默认初始化> ·变量{字段,局部变量} <占用> ·垃圾回收器 <清理> ·资源{内存} ·安全问题 - 代价 ·特殊方法{构造器} <创建> 对象 ·垃圾回收器 <释放> 内存资源 5.1 用构 阅读全文
posted @ 2018-03-06 14:11 梁桦 阅读(103) 评论(0) 推荐(0) 编辑