Java编程基础与面试必知必会

需积分: 0 0 下载量 174 浏览量 更新于2024-07-27 收藏 837KB DOC 举报
"这篇资料是关于Java编程的基础知识和常见面试题,涵盖了面向对象特性、数据类型、运算符、内存管理、字符串处理、类与对象、构造器、异常处理、编码输出、容器类等多个方面。" 以下是详细的知识点说明: 1. 面向对象的特征包括封装、继承和多态。 2. Java中的访问修饰符public表示全局可访问,private限制为同一类内访问,protected允许同包和子类访问,无修饰符则默认为包内访问。 3. String不是基本数据类型,它是对象,属于引用类型。 4. float型变量定义时应后跟f或F,所以float f = 3.4f是正确的,而float f = 3.4是错误的。 5. 语句`float f = 1.3;`会因为精度丢失导致编译失败,需要加上f或F。 6. short s1=1; s1=s1+1; 会因类型提升引发编译错误,需要强制转换。 7. Java中没有goto语句。 8. int是基本数据类型,Integer是int的包装类,它们之间有自动装箱拆箱转换。 9. &是位运算符,&&是逻辑运算符。前者总是执行两边的操作,后者在左操作数为假时,不会执行右操作。 10. 逻辑操作(&, |, ^)处理所有位,条件操作(&&, ||)只判断第一个操作数即可决定结果。 11. 堆(Heap)主要用于存储对象实例,而栈(Stack)存储基本类型的局部变量和方法调用。 12. Math.round(11.5)等于12,Math.round(-11.5)等于-11。 13. switch不能作用于byte、long,但在Java 7以后可以作用于枚举类型,Java 14以后可以作用于字符串(String)。 14. 最有效率的计算2乘以8的方法是直接写`int result = 2 * 8;`。 15. length()是方法,对于字符串String,有length()方法返回字符串长度。 16. 跳出多重嵌套循环可以使用break语句配合标签。 17. 构造器Constructor不能被重写(override),但可以重载(overload)。 18. 两个对象值相同(x.equals(y) == true),但哈希码可以不同,因为哈希码基于对象的内存地址生成,即使值相同,不同的对象也可能有不同的哈希码。 19. 不可以继承String类,因为String是final的。 20. 这里没有提供具体的语句,无法确定返回值。 21. Java中参数传递是值传递,但对象是引用类型,方法内部修改对象属性会影响原始对象。 22. 使用`new String("yourStr".getBytes("iso8859-1"))`可以输出指定编码的字符串。 23. String是不可变的,而StringBuffer和StringBuilder是可变的,线程安全上,StringBuffer在多线程环境下优于StringBuilder。 24. String是字符串常量,StringBuffer适合大量字符串拼接,StringBuilder是单线程下的优化版StringBuffer。 25. Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法。重载方法可以改变返回值类型,但重写不可以。 26. JVM加载class文件的原理涉及到类加载器(ClassLoader),它按照双亲委派模型进行工作,先尝试父类加载器,然后是当前类加载器,最后是系统类加载器。 27. char类型可以存储一个UTF-16编码的字符,包括中文汉字,因为它占两个字节。 28. abstract class用于创建抽象类,接口(interface)则更强调多继承和规范。 29. StaticNestedClass是静态嵌套类,与外围类的关系像普通类,不持有外围类实例引用;InnerClass是内部类,可以访问外围类的私有成员,持有外围类实例引用。 30. Java中存在内存泄漏问题,主要是由于程序员未正确管理对象引用导致的。例如,当不再需要对象时,如果其引用仍然存在,垃圾收集器就无法回收其占用的内存。 这些知识点是Java初学者和进阶者都需要掌握的基础内容,也是面试中常见的题目。理解并熟练运用这些知识,对于成为一名优秀的Java开发者至关重要。