JAVA面试常见问题解析:访问修饰符、匿名内部类与更多

需积分: 3 9 下载量 166 浏览量 更新于2024-09-15 收藏 73KB TXT 举报
"JAVA面试题149例包含了一系列关于Java编程语言的关键知识点,包括访问修饰符的作用域、匿名内部类的特性、静态与非静态嵌套类的区别、逻辑运算符的使用、集合框架中的Collection和Collections的区别、断言的使用、字符串的创建、数学函数的运用、数据类型转换、跳转语句的缺失以及方法的重载和覆盖等。" 1. 访问修饰符的区别: Java中的访问修饰符有public、private、protected和friendly(默认)。public成员在任何地方都可访问;protected成员在同包和子类中可访问;friendly(默认)仅在同包内可访问;private成员仅在当前类中可访问。 2. 匿名内部类: 匿名内部类没有名字,它可以实现接口,但不能继承其他类。这种特性使得它常用于简洁地实现回调或事件监听器。 3. 静态与非静态嵌套类: 静态嵌套类(Static Nested Class)类似于普通类,可以直接通过类名访问,而无需外部类的实例。非静态嵌套类(Inner Class)与外部类有紧密的关联,需要外部类的实例才能创建。 4. 逻辑运算符: "&"表示按位与,用于处理二进制位;"&&"表示逻辑与,只有当两边的操作数都为真时,结果才为真。 5. Collection与Collections: Collection是Java集合框架的顶层接口,代表一组对象的集合,而Collections是针对集合操作的工具类,提供了各种实用方法,如排序、查找、填充等。 6. 断言(Assertion): 断言主要用于测试,通过`assert`关键字来检查程序状态。在默认情况下,断言是关闭的,需要通过启动参数开启。如果断言语句的条件为假,程序将抛出AssertionError。 7. 字符串创建: `new String("xyz")`会创建一个新的字符串对象,即使传入的字符序列已经在常量池中存在。而字符串字面量 `"xyz"` 是共享的,多次引用不会创建新对象。 8. Math.round方法: Math.round方法将浮点数四舍五入为最接近的整数。对于正数,Math.round(11.5)返回12,负数则返回其下界,即Math.round(-11.5)返回-11。 9. 数据类型的自动提升: 在进行短整型(short)变量加法时,`s1=s1+1`会导致中间结果转换为int类型,因此需要显式转换回short,即`s1=(short)(s1+1)`。而`s1+=1`则会自动处理类型提升。 10. Java中没有goto语句: Java设计时摒弃了goto,以支持更清晰、更安全的控制流。 11. length属性: 数组有length属性,字符串有length()方法。数组的length是属性,可以直接访问;字符串的length()是方法,需要调用。 12. 方法的重载(Overloading)与覆盖(Overriding): 方法重载发生在同一类中,通过不同的参数列表定义多个同名方法。方法覆盖发生在子类中,子类方法与父类方法具有相同的名称、返回类型和参数列表,且访问权限不低于父类。 这些面试题涵盖了Java编程的核心概念和技术,对于准备Java面试或深化对Java理解非常有帮助。