file-type

Java面试必知2017:Java基础知识点全解析

5星 · 超过95%的资源 | 下载需积分: 22 | 147KB | 更新于2025-05-28 | 11 浏览量 | 155 下载量 举报 收藏
download 立即下载
【Java基础知识点】 1. **类的定义限制**:在Java中,一个".java"源文件可以包含多个类,但只有其中的一个类可以是public类,并且文件名必须与该public类的名称完全一致。 2. **goto关键字**:Java语言中没有goto关键字。Java设计者认为goto语句会导致程序代码可读性差,难以维护,因此没有引入。 3. **逻辑运算符区别**:&是逻辑与操作符,用于整型或布尔运算,会计算两边的表达式;&&是短路逻辑与操作符,如果第一个表达式为false,那么第二个表达式将不会被执行。 4. **跳出多重循环**:在Java中,可以使用break语句来跳出当前循环,但要跳出多层循环,则需要使用标签(label)。 5. **switch语句的数据类型**:switch语句可以作用于byte、short、char、int等基本数据类型,但不能作用于long或String类型。不过,从Java 7开始,可以使用String类型在switch中。 6. **类型提升与溢出**:short s1 = 1; s1 = s1 + 1;会报错,因为赋值时发生了类型提升,应使用s1 += 1;,这是因为+=操作符会将结果转换回short类型,从而避免溢出。 7. **char变量存储**:char型变量可以存储一个中文汉字,因为Java使用Unicode编码,一个char类型占16位,可以表示一个Unicode字符。 8. **算术运算优化**:最有效率的方法是直接使用位运算。例如,2乘以8可以通过左移3位来实现,即2 << 3。 9. **大数计算器设计**:设计一个能够处理一百亿以上数值的计算器,需要使用Java中的BigInteger类,这个类支持任意精度的整数运算。 10. **final关键字**:final关键字修饰的变量表示引用本身不能变,即变量不能再指向另一个对象;但如果是对象的话,对象的内容是可以改变的。 11. **"=="和equals方法区别**:"=="用于比较两个变量的值是否相等,对于基本数据类型来说比较的是值,对于引用类型比较的是对象的内存地址。equals方法用于比较两个对象的内容是否相等,需要在类中重写此方法。 12. **变量的区别**:静态变量属于类,实例变量属于对象。静态变量被类的所有对象共享,而实例变量在创建对象时被分配空间,每个对象都拥有自己的一份拷贝。 13. **static方法与非static方法**:不能从一个static方法内部直接调用非static方法,因为static方法属于类,而非static方法属于对象,static方法调用前对象可能还不存在。 14. **Integer与int的区别**:Integer是int的包装类,int是基本数据类型。Integer可以赋值为null,而int不能,因为int是基本类型。 15. **Math.round()方法**:Math.round(11.5)返回12,Math.round(-11.5)返回-11,因为round方法总是向最近的整数舍入。 16. **代码审查问题**:未给出具体的代码段,无法进行知识点分析。 17. **作用域的区别**:public表示公有,任何其他类都可以访问;private表示私有,只有同一个类中的方法可以访问;protected表示受保护的,同一个包内的类和所有子类都可以访问;不写时,默认是包内访问权限。 18. **Overload与Override**:Overload是方法重载,表示同一个类中多个同名方法;Override是方法重写,表示子类对父类方法的实现。重写的方法不可以改变返回值类型,但可以抛出新的或更广泛的异常。 19. **构造器的重写**:构造器不能被override(重写),但可以被overload(重载)。 20. **接口与类的继承实现**:接口可以继承多个接口,抽象类可以实现接口,但不可以继承具体类(final类除外),抽象类中可以有静态main方法。 21. **clone()方法实现**:在实现clone()方法时,通常需要调用super.clone(),这是Object类中的clone方法。 22. **面向对象的特征**:面向对象的三大特征是封装、继承和多态。 23. **多态的实现机制**:Java实现多态的机制主要是通过方法重载(overloading)和方法重写(overriding)实现的。 24. **abstract class与interface区别**:abstract class可以有成员变量和具体的成员方法,而interface只能有抽象方法和常量(Java 8之后可以有默认方法和静态方法)。 25. **abstract方法的特性**:abstract方法不能同时是static或native方法,但可以同时是synchronized方法。 26. **内部类的定义**:内部类是指定义在另一个类的内部的类。Static Nested Class(静态内部类)与普通类几乎一样,而Inner Class(内部类)是非静态的,它可以访问外部类的成员。 27. **内部类的成员访问**:内部类可以直接访问外部类的成员,包括私有成员,这是内部类的一个特性。 28. **匿名内部类**:匿名内部类可以实现接口或继承一个类。在实现接口时,可以在创建对象时直接实现接口中的方法。 29. **super.getClass()方法调用**:通过super.getClass()可以获取到父类的Class对象。 30. **String不是基本类型**:String不是基本数据类型,它是一个final类,位于java.lang包下。 31. **String对象不可变性**:String s = "Hello"; s = s + " world!";这行代码执行后,会创建一个新的String对象,原始的String对象不会改变。 32. **String类不可继承**:String类被声明为final,不能被继承。 33. **String对象创建**:String s = new String("xyz");这句话创建了两个String对象,一个是常量池中的"xyz",一个是堆内存中的新对象。 34. **String与StringBuffer区别**:String对象是不可变的,每次修改都会生成新的对象。而StringBuffer是可变的,对StringBuffer对象进行修改时,不会生成新的对象。 这些知识点都是Java基础中非常重要的概念,对于准备Java面试的人来说,掌握这些知识是基础也是必要的。

相关推荐