Java面试必备:基础题解析

需积分: 33 1 下载量 72 浏览量 更新于2024-07-19 收藏 2.14MB PDF 举报
"Java基础知识面试题" 在Java面试中,面试官经常关注候选人的基础知识掌握程度和技术区别的理解。以下是一些常见的Java基础面试问题及其解答: 1. 一个`.java`源文件中是否可以包括多个类(不是内部类)?有什么限制? Java源文件可以包含多个类,但只能有一个公开类(public class),该公开类的名称必须与文件名相同。其他非公开类(非public)不受此限制。 2. Java有没有goto? Java语言中没有goto关键字,它鼓励使用结构化的控制流程,如if、while、for和switch。 3. 说说&和&&的区别。 & 是位运算符,用于进行按位与操作,也可在布尔表达式中作为逻辑与;而&&是逻辑与运算符,只有当两边的操作数都为真时,结果才为真,它具有短路特性,仅在必要时评估第二个操作数。 4. 在JAVA中如何跳出当前的多重嵌套循环? 可以使用break语句,配合标签(label)来跳出特定层次的循环。例如: ```java outer: for (...) { inner: for (...) { if (someCondition) { break outer; } } } ``` 5. switch语句能否作用在byte上,能否作用在long上,能否作用在String上? switch语句可以作用于byte、char、short、int、枚举类型(enum)以及Java 7引入的String类型。 6. shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错? 第一句会因为s1+1的结果默认为int类型,导致编译错误。第二句使用了复合赋值运算符,自动处理类型转换,因此没有错误。 7. char型变量中能不能存贮一个中文汉字?为什么? 可以,因为一个char在Java中占用两个字节,可以存储Unicode编码,包括中文字符。 8. 用最有效率的方法算出2乘以8等于几? 直接使用`2 << 3`,利用位移运算符进行计算。 9. 请设计一个一百亿的计算器:这涉及到大数计算,可以使用BigInteger类来处理大整数运算。 10. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? final修饰的变量一旦初始化后,其引用不能改变,但引用的对象内容可以改变,除非对象本身也是final的。 11. "=="和equals方法究竟有什么区别? "=="比较的是变量的值,对于基本类型是直接比较值,对于对象则是比较内存地址;equals方法是Object类中的方法,用于比较对象的内容,子类可以通过重写equals方法实现自定义的比较逻辑。 12. 静态变量和实例变量的区别? 静态变量属于类,不依赖于任何实例,可以直接通过类名访问;实例变量属于对象,需要先创建对象才能访问。 13. 是否可以从一个static方法内部发出对非static方法的调用? 不可以,因为static方法不依赖于对象,无法直接调用非static方法,需要先创建对象实例再调用。 14. Integer与int的区别? Integer是int的包装类,支持对象操作,如装箱、拆箱、比较等;int是原始数据类型,不支持对象特性。 15. Math.round(11.5)等于多少?Math.round(-11.5)等于多少? Math.round(11.5)等于12,Math.round(-11.5)等于-11,round方法将浮点数四舍五入到最接近的整数。 16. 下面的代码有什么不妥之处? 需要提供具体代码才能分析。 17. 请说出作用域public,private,protected,以及不写时的区别。 public:所有类都可以访问。 private:仅在同一个类中可见。 protected:在同一包内及子类中可见。 没有指定:在同一包内可见。 18. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? Overload(重载)是指在同一个类中定义多个同名方法,但参数列表不同。Override(重写)是在子类中重新定义父类中的方法。Overloaded方法不能改变返回值类型,但可以改变参数列表。 19. 构造器Constructor是否可被override? 构造器不能被覆盖,但可以被重载。 20. 接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法? 接口可以继承接口。抽象类可以实现接口。抽象类可以继承具体类。抽象类中可以有静态的main方法。 21. 写clone()方法时,通常都有一行代码,是什么? 通常是`super.clone()`,用来调用Object类的clone方法复制对象。 22. 面向对象的特征有哪些方面? 封装、继承、多态。 23. java中实现多态的机制是什么? 多态是通过接口、抽象类和方法的重写来实现的,使得不同的子类对象可以对同一消息作出不同的响应。 24. abstractclass和interface有什么区别? 抽象类可以有方法实现,可以包含非抽象方法、构造器、静态方法和字段;接口只有抽象方法和默认方法,不能有构造器和字段(JDK 8后允许默认方法和静态方法)。 25. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 抽象方法不能是static或native,但可以是synchronized。 26. 什么是内部类?StaticNestedClass和InnerClass的不同。 内部类是定义在一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类像普通类一样,可以通过类名直接访问,不依赖于外部类的实例;而内嵌类需要外部类实例才能创建。 27. 内部类可以引用它的包含类的成员吗?有没有什么限制? 内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。 28. A类继承B类,B类继承C类,如果A类有一个方法m(),B类也有一个方法m(),那么在A类中如何调用B类的m()方法? 在A类中,可以使用super.m()来调用B类的m()方法,因为super代表B类的实例。