Java面试必备知识:基础到高级

需积分: 0 0 下载量 16 浏览量 更新于2024-07-25 收藏 546KB DOC 举报
"JAVA面试宝典,适用于JAVA面试者和初学者,涵盖JAVA基础及SSH框架" 以下是基于给定文件信息的详细知识点解析: 1. **Java基础** - Java源文件可以包含多个类,但只能有一个公开的(public)类,其他类可以是非公开的(非public)。 - Java语言中没有`goto`语句,它遵循结构化编程原则,鼓励使用流程控制结构如`if`、`for`、`while`等。 - `&`和`&&`的区别在于:`&`是逻辑与运算符,无论两侧表达式是否为真都会进行计算;而`&&`是短路与运算符,当左侧表达式为假时,不会评估右侧表达式。 - 要跳出多重嵌套循环,可以使用`break`语句配合标签(label)来指定跳出的循环层级。 - `switch`语句可以作用于`byte`、`char`、`short`、`int`以及枚举类型,但在Java 7以后也可以作用于`String`。 2. **数据类型与变量** - `short s1=1; s1=s1+1;`错误是因为表达式`s1+1`的结果是`int`类型,需要显式转换为`short`才能赋值给`s1`。 - `char`型变量可以存储Unicode字符,因此可以存储中文汉字。 3. **效率与优化** - 计算2乘以8最有效率的方式是直接写`2 * 8`。 - 设计一个能处理一百亿的计算器要考虑数值类型的选择,可能需要使用`BigInteger`类。 4. **关键字与访问权限** - `final`关键字修饰的变量,其引用一旦赋值后不能改变,对于基本类型,值也不能改变;对于对象,对象的引用不可变,但对象内部的状态可以变。 - `==`比较的是两个变量的值是否相等,`equals()`方法比较的是对象的内容是否相等。 - 静态变量属于类,而实例变量属于类的实例,静态变量可以被类的所有实例共享,实例变量只能通过对象访问。 - 不能从静态方法内部直接访问非静态方法或非静态变量,因为静态方法不依赖任何实例。 5. **数据类型转换与运算** - `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 - 代码中的不妥之处可能涉及类型转换、异常处理、逻辑错误等,需要具体代码分析。 6. **访问修饰符** - `public`、`private`、`protected`分别代表公共、私有和受保护的访问级别,不写默认为包内可见。 7. **方法重载与覆盖** - 方法重载(Overload)允许在同一类中定义多个同名方法,但参数列表必须不同;不能仅通过返回值类型的不同来重载方法。 - 构造器(Constructor)不能被重写(Override),但可以被重载。 8. **接口与抽象类** - 接口可以继承接口,抽象类可以实现接口,但不能继承具体类。 - 抽象类中可以有静态的`main`方法,但静态方法不能被覆盖。 9. **克隆与多态** - 实现`Cloneable`接口并重写`clone()`方法时,通常会调用`super.clone()`来创建对象的副本。 - 面向对象的特征包括封装、继承、多态和抽象。 - Java通过方法的动态绑定实现多态,即子类对象可以调用父类中声明的抽象方法。 10. **抽象类与接口的区别** - 抽象类可以有非抽象方法和字段,可以有构造器,可以被实例化(除非全是抽象方法);接口则只能声明方法(默认为抽象方法),没有构造器,不能被实例化。 - 抽象方法可以是`static`、`native`或`synchronized`,但不能同时是这三者。 11. **内部类与匿名内部类** - 内部类可以访问外部类的成员,包括私有成员,但静态内部类(StaticNestedClass)不能直接访问外部类的非静态成员。 - 匿名内部类是一种没有名称的内部类,通常用于快速实现接口或抽象类的一个简单实现。 以上是JAVA面试宝典中涉及的部分核心知识点,涵盖了Java的基础语法、数据类型、面向对象特性、方法重载与覆盖、接口与抽象类的使用等多个方面。掌握这些知识对于JAVA面试者来说至关重要。