第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话题吧。