Java基础面试必备:作用域、匿名内部类与静态嵌套类解析

需积分: 10 1 下载量 79 浏览量 更新于2024-09-17 收藏 56KB DOC 举报
"Java基础方面经典面试题整理" Java语言的基础知识是面试中常见的考察点,以下是对这些面试题的详细解答: 1. **作用域public,private,protected,以及不写时的区别** - `public`:任何地方都可以访问,无论是在哪个包内还是包外。 - `private`:只能在定义它的同一个类内部访问,其他地方都无法访问。 - `protected`:可以在同一包内的任何类、同一包内子类以及不同包的子类中访问。 - `friendly`(也称为包级私有):默认作用域,仅在同一包内的类可以访问。 - 不写作用域修饰符时,默认为`friendly`。 2. **匿名内部类** - 匿名内部类是没有名字的类,可以实现接口或继承抽象类。但要注意,它不能直接继承一个非抽象类,因为非抽象类要求有具体实现,而匿名内部类通常用在需要快速定义一个实现了特定接口或继承了特定类的临时对象的地方。 3. **StaticNestedClass和InnerClass的区别** - 静态内部类(Static Nested Class)与普通内部类(Inner Class)的主要区别在于静态内部类不持有对外部类的引用,因此可以像普通类一样实例化,而无需外部类对象。另一方面,普通内部类会隐含地持有一个对其外部类的引用,因此需要先创建外部类对象才能创建内部类对象。 4. **&和&&的区别** - `&`是位运算符,用于进行二进制位的“与”运算,适用于整型和布尔类型的位操作。而在逻辑表达式中,`&`也常被用来进行短路与运算,即只有当左操作数为真时,才会计算右操作数。 - `&&`是逻辑运算符,它也进行短路与运算,但仅在必要时才评估右侧表达式,这有助于提高效率并防止不必要的计算。 5. **Collection和Collections的区别** - `Collection`是所有集合类的父接口,包括`Set`和`List`等。它定义了集合的基本操作,如添加元素、删除元素等。 - `Collections`是一个工具类,提供了对集合的各种实用静态方法,如排序、查找、线程安全化操作等。 6. **使用assert的关键时刻** - `assert`用于在代码中插入断言,用于在开发和测试阶段验证代码的正确性。断言的目的是确保某些条件始终为真,如果条件为假,则表明程序可能有错误。在生产环境中,通常会禁用断言以优化性能。 7. **Strings=new String("xyz");创建了几个StringObject** - 这行代码创建了两个`String`对象。首先,字符串常量池中会创建一个包含"xyz"的`String`对象。然后,`new String("xyz")`会创建一个新的`String`对象,它在堆上创建,引用的是池中已存在的"xyz"的副本。 8. **关于`Math`类的使用** - `Math`类是Java标准库中的一个类,提供了各种数学运算方法,如平方根、最大值、最小值等。在处理数学计算时,我们经常使用`Math`类提供的静态方法。 以上知识点涵盖了Java基础中的类、接口、作用域、内存管理、集合框架和调试技巧等多个方面,这些都是面试中常见的问题,理解和掌握它们对于成为一名合格的Java开发者至关重要。