1.什么是重载和重写?
Java 里方法的重写(Overriding)和重载(Overloading)就是指的 java 里多态。
重写就是父类与子类之间的多态,重载是在一个类中多态对的体现 :
(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
2.String 中的==和 equals 的区别?
== 比 较 的 是 内 存 地 址 , equals 比 较 的 是 内 容:
String a="abc" String b="abc" System.out.println(a==b) 输出的是 false.
3.Final 关键字
其实 final是一个安全修饰符,就是用 final 修饰的类不能被继承,用 final 声明的方法不能被重写,使用 final 声明的变量就相当于常量,不能被修改。
4.final 和 finally 的区别?
finally是在异常里经常用到的, 就是 try 和 cach 里的代码执行完以后,必须要执行的方法,我们经常在 finally 里写一些关闭资源的方法,比如说关闭数据库连接,或者关闭 IO 流什么的.-->Java自我进阶知识整理1:使用try-with-resources优雅关闭资源
5.HashMap 和 Hashtable 的区别
这两个都是是 Map 接口下的实现类,我们开发的时候经常用的是 HashMap 虽然 HashMap不是线程安全的但是他的存储效率比较高,Hashtable 是线程安全我们看过他底层的 put 方法前面加的 synchronized关键字,但是他的效率太低,我们开发很少用.为什么说 hashTable是线程安全的? 因为看源码的时候里面的 put 方法前面加了 synchronized 关键字,什么情况下用 hashMap? 我们有时候在自定义返回 json 字符串的时候,封装到 List 中进行返回.
6.int 和 Integer 的区别?
Int 是基本数据类型呀 Integer 是 java 为 int 提供的封装类,是引用数据类型;
Int 的默认值为 0,而 integer 的默认值为 null
7.Java 的三大特性
这个 java 的三大特性无非就是封装,继承,多态嘛 封装体现到我们把方法和变量都封装到一个类里,直接用对象调用就可以了
继承的体现是我们可以复用父类里的代码,我们在项目中可以把公有的方法写到 base 的一个类中,让其他类继承就可以了. 多态就是 Java 里的继承,重写,重载,都是多态,如果两边是数字的化,那就是一 个运算符,如果两边是字符串的话,那他就是个连接符.
8.ArrayList 与 LinkedList 区别
ArrayList 使用数组方式存储数据,所以根据索引查询数据速度快,而新增或者删除元素时需要设计到位移操作,所以比较慢。
LinkedList 使用双向链接方式存储数据,每个元素都记录前后元素的指针,所以插入、删除数据时只是更改前后元素的指针指向即可,速度非常快,然后通过下标查询元素时需要从头开始索引,所以比较慢,但是如果查询前几个元素或后几个元素速度比较快。开发中什么时候到 ArrayList?,我们在做查询的时候把查询出来的数据经常存到 arraylist 里.
9.在 Java 中要想实现多线程代码有三种手段?
一种是继承 Thread 类
另一种就是实现 Runnable 接口
最后一种就是实现 Callable 接口(第四种也是实现 callable 接口,只不过有返回值而已)
10.线程的状态
其实线程一般具有五种状态,即创建、就绪、运行、阻塞、终止。(这个可以去找一下图,有助于理解)