Thinking in Java

《Thinking in Java》 10~

二次信任 提交于 2020-05-07 18:24:53
chapter 10 内部类(P191) 创建内部类 链接到外部类   内部类能访问器外围对象的所有成员,而不需要任何特殊条件。 使用.this与.new package cn.test; public class DotThis { void f() { System.out.println("DotThis.f()" ); } public class Inner{ public DotThis outer() { return DotThis.this ; } } public Inner inner() { return new Inner(); } public static void main(String[] args) { DotThis dt = new DotThis(); DotThis.Inner dti= dt.inner(); dti.outer().f(); } } package cn.test; public class DotNew { public class Inner{} public static void main(String[] args) { DotNew dn = new DotNew(); DotNew.Inner dni = dn.new Inner(); } } 为什么需要内部类 为了实现多重继承。 情形1

对Java Serializable(序列化)的理解和总结(转)

狂风中的少年 提交于 2020-04-24 17:02:21
转自: https://www.cnblogs.com/qq3111901846/p/7894532.html 1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候; 3、当对一个对象实现序列化时,究竟发生了什么? 在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如: java 代码 Foo myFoo = new Foo(); myFoo .setWidth( 37); myFoo.setHeight( 70); 当 通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。 java

阿里P8大牛推荐Java程序员必看的 13 本 Java 书籍

只愿长相守 提交于 2020-04-19 22:13:55
关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是: 多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单。 在下面这 13 本书籍中小编还是要建议大家可以先去关注英文原版,毕竟翻译的书籍中都有一定的语法错误。 入门 《Head First Java》 作者: Kathy Sierra / Bert Bates 简介: 《Head First Java》是一本完整地面向对象(object-oriented,OO)程序设计和Java的学习指导用书,根据学习理论所设计,你可以从程序语言的基础开始,到线程、网络与分布式程序等项目。重要的是,你可以学会如何像一个面向对象开发者一样去思考,而且不只是读死书。 作为一本入门书,它是绝对出色的。一个星期就能让你明白怎么用Java写程序了。尤其是你有其它语言基础的情况下,这本书能迅速让你明白java的特质。 缺点是,它真的只是入门书。你必然还需要一本Java大字典,比如《Thinking in Java》,以便查阅Java在细节上的更多东西。关于这一点,书中附录B也说得很清楚了。 《Java 核心技术:卷1 基础知识》 作者:Cay S. Horstmann / Gary Cornell 译者: 杜永萍 / 邝劲筠 / 叶乃文 简介: 《JAVA核心技术(卷1)

阿里P8大牛推荐Java程序员必看的 13 本 Java 书籍

…衆ロ難τιáo~ 提交于 2020-04-18 19:46:16
关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是: 多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单。 在下面这 13 本书籍中小编还是要建议大家可以先去关注英文原版,毕竟翻译的书籍中都有一定的语法错误。 入门 《Head First Java》 作者: Kathy Sierra / Bert Bates 简介: 《Head First Java》是一本完整地面向对象(object-oriented,OO)程序设计和Java的学习指导用书,根据学习理论所设计,你可以从程序语言的基础开始,到线程、网络与分布式程序等项目。重要的是,你可以学会如何像一个面向对象开发者一样去思考,而且不只是读死书。 作为一本入门书,它是绝对出色的。一个星期就能让你明白怎么用Java写程序了。尤其是你有其它语言基础的情况下,这本书能迅速让你明白java的特质。 缺点是,它真的只是入门书。你必然还需要一本Java大字典,比如《Thinking in Java》,以便查阅Java在细节上的更多东西。关于这一点,书中附录B也说得很清楚了。 《Java 核心技术:卷1 基础知识》 作者:Cay S. Horstmann / Gary Cornell 译者: 杜永萍 / 邝劲筠 / 叶乃文 简介: 《JAVA核心技术(卷1)

【JDK源码分析】浅谈HashMap的原理

末鹿安然 提交于 2020-03-07 13:44:00
在 HashMap 中存放的一系列键值对,其中键为某个我们自定义的类型。放入 HashMap 后,我们在外部把某一个 key 的属性进行更改,然后我们再用这个 key 从 HashMap 里取出元素,这时候 HashMap 会返回什么? 1. 特性 我们可以用任何类作为HashMap的key,但是对于这些类应该有什么限制条件呢?且看下面的代码: public class Person { private String name; public Person(String name) { this.name = name; } } Map testMap = new HashMap<>(); testMap.put(new Person("hello"), "world"); testMap.get(new Person("hello")); // ---> null 本是想取出具有相等字段值Person类的value,结果却是null。对HashMap稍有了解的人看出来——Person类并没有override hashcode方法,导致其继承的是Object的hashcode(返回是其内存地址),两次new出来的Person对象并不equals——这也是为什么在工程项目中常用不变类(如String、Integer等)做为HashMap的key的原因。那么