Java深入解析:透析Java本质的36个话题
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 基本概念

话题1 开门见山——测试你的Java水平

抛砖引玉:

在本书初始,笔者准备了若干个Java题目,旨在测试读者的Java水平。请读者认真阅读并给予回答。

重点摘要:

· 对自身能力进行权衡。

测试自己的水平

1.float类型在Java中占用4字节,long类型在Java中占用8字节,为什么float类型的取值范围比long类型的取值范围还大?

2.使用“+”可以连接两个字符串(String对象),那么,是怎样进行连接的?

3.构造器是否创建了对象?该怎样来证明这一点?

4.如果没有在类中显示声明构造器,则编译器会自动生成一个无参的构造器,那么编译器为什么要自动生成这个无参的构造器呢?有什么作用?

5.i++与++i到底有什么不同?仅仅是先加与后加的区别吗?

6.移位运算:5 << 35,会首先进行35 % 32的求余运算吗?如果是这样,那么5 << −2的结果是多少呢?

7.如果重写了equals方法,为什么还要重写hashCode方法?如果没有重写hashCode方法,会有什么问题?

8.从JDK1.7起,switch语句可以支持String类型,那么在底层是如何实现的?

9.静态方法是否可以重写?方法重写与方法隐藏有什么不同?

10.为什么不能在静态方法中使用this?this指代的是当前对象,但是,这个所谓的“当前对象”到底在哪里?

11.在Java中,类型会在什么时间、什么条件下由JVM加载?加载后一定会初始化吗?

12.比起C / C++中的枚举,Java中的枚举有什么不同(优势)?枚举是怎样实现的?

13.为什么要为String对象建立常量池?String常量池有什么好处?

14.每个基本数据类型都对应一个包装类型,这些包装类型有什么用?

15.内部成员类是如何绑定外围类对象的?

对于以上问题,如果你能回答0~5个,那说明你是一个Java新手,处于学习阶段,对Java语言有初步的了解。

如果你能回答6~10个,那你属于Java中级水平,处于成长阶段,具有一定的Java功底。

如果你能回答11~14个,你属于Java中高级水平,处于成熟阶段,对Java有着较为深入的理解。

如果你能回答全部问题,并且理解透彻,那想必你一定已经从事Java研究多年,是一个经验丰富的“高手”。

不过,不管你处在什么水平,都可以进行下面的阅读,因为以上仅仅是冰山一角,本书所阐述的话题还不仅于此。对于初、中级学者,本书的内容可以令你快速成长,对Java语言理解更加透彻,从而在以后的学习中事半功倍;对于“高手”而言,本书的内容也可以令你温故而知新,使你“百尺竿头,更进一步”!

以上问题都可以在本书中找到答案,下面,就开始我们真正的Java话题吧。