2024年Java 最常见的 面试题
1、java中Static关键字有哪些特点??? 答:
1)、static成员变量
静态变量:属于类,内存中只有一个复制,所有实例都指向同一个内存地址,只要类被加载,静态变量就会本分配空间,调用方式有两种。类.静态变量 和 对象.静态变量
实例变量:属于对象,只有对象被创建,实例对象才会被分配空间,调用方式:对象.实例变量 2)、static成员方法
静态方法:属于类,不需要创建对象,就可以被调用。调用方式:类.静态方法 和 对象.静态方法
非静态方法:属于对象,只能在对象被创建出来之后才可以被使用。
注意:static方法中,不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量和静态成员方法。
2、java中length属性与length()方法有什么区别??? 答:length属性属于数组,用来获取数组的长度;而length()方法属于String 用来计算字符串长度。 3、java中Collections框架是什么???
答:Collection是整个集合框架的基础,它里面存储了一组对象,用于表示不同类型的Collections.主要有一下三种,其特点如下。
1)、set 主要特点集合中元素不能重复。
2)、list有序的Collection,按照对象的进入顺序保存对象,可以重复。
3)、map提供了从键映射到值得数据结构,值可以重复单键必须唯一。
4、java中ArrayList 、Vector 、LinkedList有什么区别??? 答:ArrayList 、Vector 、LinkedList类均在java.util包,均为可伸缩数组,即可以动态改变长度的数组。
ArrayList 、Vector 都是基于数组来实现的,数据存储是连续的,支持下标访问元素,查询快,插入慢。
区别在于:ArrayList提供的方法都不是同步的,且线程不安全,但效率高。Vector大部分方法都是同步的,且线程安全,效率低。
LinkedList 采用双向链表来实现,因此访问效率低,插入效率高,且该容器是非线性安全的。
5、java中HashTable与HashMap有什么区别??? 答:
1、父类不同:
HashMap是继承自AbstractMap类,而HashTable是继承自
Dictionary。但都是实现了Map方法。 2、null值不同:
HashMap可以允许存在一个为null的key和任意个null的value,但是HashTable中的key和value都不允许为null。 3、线程安全性:
hashtable是线程安全的,hashmap不之初线程同步,不是线程安全的
11、同步与异步的区别???
答:所谓的同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不会放回,或继续执行后续操作。简单来说,同步就是必须一件一件的来做,等前一件事做完了,才能做下一件事。
6. throw 和 throws 的区别?
throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。
75. final、finally、finalize 有什么区别?
final可以修饰类、变量、方法,修饰类表示该类不能被继承、