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研究多年,是一个经验丰富的“高手”。