java技术面试宝典2020版.doc
《Java技术面试宝典2020版》是为准备Java面试的开发者提供的一份全面指南,涵盖了Java语言的基础知识到高级特性的诸多问题。以下将详细解释其中的部分知识点: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公开的(public)类,且该公开类的名称必须与文件名相同。其他非公开类(如private、protected或默认访问权限的类)可以在同一文件中定义。 2. **goto关键字**:Java语言中不支持goto关键字,它被设计为无副作用的面向对象语言,提倡使用结构化编程思想,避免了goto可能导致的混乱控制流。 3. **&和&&的区别**:&是位运算符,用于按位进行与操作;在逻辑表达式中,&也是逻辑与,但不论左右两边的操作数如何,整个表达式都会被执行。而&&是短路与,如果左侧表达式为假,右侧就不会执行,因为它已经确定整个表达式为假。 4. **switch语句的使用**:switch语句可以作用于byte、char、short和int类型的值,以及枚举类型(enum)。在Java 7之后,还可以用于String类型,但不适用于long或其他非基本类型。 5. **short变量的自增问题**:在Java中,直接赋值s1 = s1 + 1可能会超出short的范围,因为这会先将short提升为int类型计算,然后赋值回short时可能会丢失数据。而s1 += 1是合法的,因为这个操作会自动处理类型转换。 6. **char型变量与中文汉字**:char变量可以存储一个Unicode字符,因此可以存储中文汉字,但要注意一个char变量只能存储一个字符,如果是多字节编码的汉字,需要使用String来存储。 7. **高效计算2的幂**:使用位移运算符可以高效地计算2的幂。例如,2乘以8可以用2 << 3表示,这比使用乘法更快,因为在计算机底层,位移运算通常比乘法更快。 8. **final关键字的使用**:final修饰变量时,如果是基本类型,变量的值不能改变;如果是引用类型,引用本身不能改变,但引用的对象的属性可以改变。如果引用的是不可变对象(如String),则对象内容也不能改变。 9. **"=="与equals方法**:"=="是Java中的比较运算符,比较的是两个对象的引用是否指向同一块内存空间;而equals方法是Object类的一个方法,用于比较对象的内容是否相等。若重写了equals方法(如String、Integer等类),则会比较对象的实际值是否相等。 10. **静态变量与实例变量**:静态变量属于类,所有类的实例共享同一份静态变量,它们在内存中只有一份。而实例变量属于每个具体的对象,每创建一个新的对象,都会为实例变量分配新的内存空间。 11. **静态方法与非静态方法**:静态方法不能直接访问非静态成员(包括实例变量和非静态方法),因为静态方法属于类,而非静态成员属于类的实例。要在静态方法中调用非静态方法,需要先创建实例对象,然后通过对象调用。这些知识点只是Java面试宝典中的冰山一角,深入理解并掌握这些概念对于Java开发者来说至关重要,能够帮助他们在面试中展现出扎实的技术基础。为了成功通过面试,还需要对异常处理、多线程、集合框架、IO流、JVM原理、设计模式等多个领域有深入理解和实践。
用户评论