JAVA常见面试题总结
程序员文章站
2024-01-11 16:02:22
基本功1.1.1 面向对象特征封装,继承,多态和抽象封装封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在 Java 当中,有 3 种修饰符:public,private 和 protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。下面列出了使用封装的一些好处: 通过隐藏对象的属性来保护对象内部的状态 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展 禁止对象之间的不良交互提...
基本功
1.1.1 面向对象特征
封装,继承,多态和抽象
-
封装
封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法
来改变它内部的数据。在 Java 当中,有 3 种修饰符:public,private 和 protected。每一
种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。
下面列出了使用封装的一些好处:
通过隐藏对象的属性来保护对象内部的状态
提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展
禁止对象之间的不良交互提高模块化 -
继承
继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在
不修改类的情况下给现存的类添加新特性。 -
多态
多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上
的操作可以应用到其他类型的值上面。 -
抽象
抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细
节来创建类。 Java 支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术
的主要目的是把类的行为和实现细节分离开。
1.1.2 final, finally, finalize 的区别 -
final
修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子类,不能作
为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为 final 的。将变量或
方法声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时
给定初值,而在以后的引用中只能读取,不可修改。被声明为 final 的方法也同样只能使
用,不能重载。
2 -
finally
在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的
catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 -
finalize
方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前
做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象
调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方
法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前
对这个对象调用的。
1.1.3 int 和 和 Integer 有什么区别
int 是基本数据类型;Integer 是其包装类,注意是一个类。
为什么要提供包装类呢?
一是为了在各种类型间转化,通过各种方法的调用。否则 你无法直接通过变量转化。比
如,现在 int 要转为 String:
int a=0;
String result=Integer.toString(a);
在 java 中包装类,比较多的用途是用在于各种数据类型的转化中。
我写几个 demo
//通过包装类来实现转化的
int num=Integer.valueOf(“12”);
int num2=Integer.parseInt(“12”);
double num3=Double.valueOf(“12.2”);
double num4=Double.parseDouble(“12.2”);
//其他的类似。通过基本数据类型的包装来的 valueOf 和 parseXX 来实现 String 转为 XX
String a=String.valueOf(“1234”);//这里括号中几乎可以是任何类型
String b=String.valueOf(true);
String c=new Integer(12).toString();//通过包装类的 toString()也可以
String d=new Double(2.3).toString();
再举例下。比如我现在要用泛型
List nums;
这里<>需要类。如果你用 int。它会报错的。
3
1.1.4 重载和重写的区别
override (重写) - 方法名、参数、返回值相同。
- 子类方法不能缩小父类方法的访问权限。
- 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
- 存在于父类和子类之间。
-
方法被定义为 final 不能被重写。
overload (重载) - 参数类型、个数、顺序至少有一个不相同。
- 不能重载只有返回值不同的方法名。
-
存在于父类和子类、同类中。
区别点 重载 重写(覆写)
英文 Overloading Overiding
定义 方法名称相同,参数的类型或
个数不同
方法名称、参数类型、返回值类型全部
相同
权限 对权限没要求 被重写的方法不能拥有更严格的权限
范围 发生在一个类中 发生在继承类中
本文地址:https://blog.csdn.net/zq2909848053/article/details/108239647