![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础面试题
整理Java面试题,冲击大厂高薪!!!
千寻万里
一个喜欢阅读、喜欢学习、喜欢coding。正在努力变强的一个帅气Coder.
展开
-
Java泛型
Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。常用的通配符为:T, E, K, V, ? 。?:表示不确定的Java类型。T(type):表示具体的一个Java类型。K V(key value):分别代表Java键值中的key、value。E(element):代表...原创 2022-03-10 16:51:40 · 78 阅读 · 0 评论 -
Java中的序列化和反序列化
序列化:将数据结构或对象转化成二进制字节流的过程。反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。对于不想进行序列化的变量,使用transient关键字修饰。transient关键字的作用:阻止实例中那些用次关键字修饰的变量序列化,当对象被反序列化时,被transient修饰的变量值不会被持久化和恢复。关于transient还有几点注意:1. transient只能修饰变量,不...原创 2022-03-10 16:49:57 · 355 阅读 · 0 评论 -
构造方法有哪些特点?是否可被override?
1. 名字与类名相同。2. 没有返回值,但不能用void声明构造函数3.生成类的对象时自动执行,无需调用。4. 构造方法不能被override(重写),但是可以overload(重载)定义格式:修饰符 方法名称(参数列表) {方法体}...原创 2022-03-10 16:48:23 · 254 阅读 · 0 评论 -
什么是双亲委派机制?
1.什么是类加载通过javac将.java文件编译成.class字节码文件后,则需要将.class加载到JVM中运行,哪么是谁将.class加载到JVM的呢?那就是类加载器啦。2.类加载器类型Bootstrap ClassLoader(启动类加载器):该类加载器由C++实现的。负责加载Java基础类,对应加载的文件是%JRE_HOME/lib/ 目录下的rt.jar、resources.jar、charsets.jar和class等。 Extension ClassLoader(标准扩展类原创 2022-03-10 09:56:45 · 959 阅读 · 0 评论 -
静态代码块和普通代码块的区别
1. 格式不同,静态代码块 static {},普通代码块{};2. 静态代码,在虚拟机加载类的时候就会加载执行,而且只执行一次;非静态代码,在创建对象的时候(即new 一个对象的时候)执行,每次创建对象都会执行一次。3. 执行顺序,静态代码块 -> 非静态代码块 -> 构造方法。...原创 2022-03-09 17:09:27 · 1775 阅读 · 0 评论 -
使用递归有什么注意事项?
1. 递归的效率比较低,因为方法需要不断的进栈和出栈。2. 递归的算法比较浪费栈内存的空间,栈内存本身比较小,很容易将栈内存的内存空间耗尽,那么程序就无法继续执行下去,报出一个错误:StackOverflowError 栈内存移除3. 递归一定要有出口,否则就是死递归。4. 构造方法不能递归使用。5. 递归算法的好处:思路比较简单,假设简单问题解决了。6. 所有的递归算法,都有非递归的解决方式,只不过非递归的算法设计比较困难。...原创 2022-03-09 17:08:40 · 1279 阅读 · 0 评论 -
ConcurrentModificationException 并发修改异常的出现原因以及避免方法?
并发修改异常(ConcurrentModificationException)出现原因:在使用迭代器遍历集合的同时,使用集合对象增加集合的元素;迭代器是依赖集合而存在的,在判断成功后,集合中新增加了元素,而迭代器却不知道就报错了。/** * 迭代器遍历 + 集合添加 * @param data */public static void mixture(List<Integer> data) { for(Integer number : data) {原创 2022-03-09 17:07:10 · 410 阅读 · 0 评论 -
Collection和Collections有什么区别?
Collection:java.util.Collection是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口的意图是为各种具体的集合提供最大化的统一操作方式。Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。...原创 2022-03-09 17:03:50 · 151 阅读 · 0 评论 -
接口和抽象类的异同?
相同点:1.都是上层的抽象层2.都不能被实例化3.都能包含抽象的方法,用于描述类具备的功能,但是不提供具体的实现。不同点:1:实现抽象类的子类使用extends来继承;接口必须使用implements来实现接口。2. 构造函数抽象类可以有构造函数,接口不能有。3. main方法:抽象类可以有main方法,并且我们能运行它;接口不能有main方法。4.实现数量类可以实现很多个接口,但是只能继承一个抽象类。5.访问修饰符接口中方法默认使用public修饰;原创 2022-03-09 16:56:44 · 163 阅读 · 0 评论 -
Java中操作字符串都有那些类?它们之间有什么区别?
操作字符串的类有:String、StringBuffer、StringBuild区别:String声明的是不可变的对象,每次操作都会生成新的String对象。然后将指针指向新的String对象,而StringBuffer、StringBuild可以在原有对象的基础上进行操作,所以在频繁修改字符串内容的情况下最好不要使用String。StringBuffer和StringBuild最大的区别在于,StringBuffer是线程安全的,而StringBuilder是非...原创 2022-03-09 16:55:57 · 2673 阅读 · 0 评论 -
静态变量和非静态变量的区别
1.成员变量有两种一种是被static关键字修饰的变量,叫类变量或者静态变量。另一种没有static修饰,为成员变量。类的静态变量在内存中只有一个,Java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期与类的生命周期一样。而成员变量取决于类的实例。每创建一个实例,Java虚拟机就会为实例变量分配一次内存,实例变量位于堆内存中,其生命周期取决于实例的生命周期。...原创 2022-03-09 15:23:30 · 404 阅读 · 0 评论 -
成员变量和局部变量的区别
1. 在类中的位置不同:成员变量:类中方法外局部变量:方法定义中或者方法声明上(方法中)2. 在内存中的位置不同:成员变量在堆中局部变量在栈中3. 生命周期不同:成员变量:随着对象的创建而存在,随着对象的消失而消失;局部变量:随着方法的调用而存在,随着方法的调用完毕而小时。4. 初始化值不同:成员变量:有默认值局部变量:没有默认值,必须定义,赋值,然后才能使用。默认值:布尔值:Boolean false字节型:byte 0短整型:short 0原创 2022-03-09 15:21:40 · 431 阅读 · 0 评论 -
== 号和equal方法的区别
== 是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值。equal方法:Object内的equals方法比较的是是否为同一个对象,但是重写的equals方法比较的是引用数据类型的值。...原创 2022-03-09 15:20:11 · 166 阅读 · 0 评论 -
重载与重写的区别
重载(Overload):在同一个类中,方法名称相同,参数列表不同,与返回值类型无关重写(Override):在继承关系中,方法名称相同,参数列表不同,与返回值类型有关。重写,使用新的的方法实现,将父类方法中旧的方法实现覆盖掉。总结:方法的重载和重写都是实现多态的方式,区别在于重载实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容...原创 2022-03-09 15:18:06 · 87 阅读 · 0 评论