Java
文章平均质量分 64
Java相关
sherlock221c
这个作者很懒,什么都没留下…
展开
-
HashMap、TreeMap、ConcurrentMap、HashTable笔记(会不断更新)
Map集合类 key value HashMap 允许为null 允许为null TreeMap 不允许为null 允许为null ConcurrentMap 不允许为null 不允许为null HashTable 不允许为null 不允许为null原创 2021-03-07 14:49:49 · 131 阅读 · 0 评论 -
【面试题】Java ClassLoader(Java类加载器)
1.什么是类加载器?类加载器负责加载所有的类,其为所有被载入内存中的类生成一个java.lang.Class实例对象。一旦一个类被加载如JVM中,同一个类就不会被再次载入了,实现这个动作的代码模块称为“类加载器”。2.有哪些类加载器,分别加载哪些类?根类加载器(Bootstrap ClassLoader):它用来加载 Java 的核心类,是用原生代码来实现的,并不继承自 java.lang.ClassLoader(负责加载$JAVA_HOME中jre/lib/rt.jar里所有的clas...原创 2021-03-06 23:23:53 · 504 阅读 · 1 评论 -
【面试题】Java当中==和equals的区别
==: 它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。equals(): 它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。equals()方法存在于Object类中,而Object类是所有类的直接或间接父类。equals()...原创 2021-03-05 21:51:02 · 232 阅读 · 2 评论 -
Java内部类
1.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响1.1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:(1)、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。(2)、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。(3)、创建内部类对象的时刻并不依赖于外围类对象的创建原创 2021-03-04 17:46:49 · 134 阅读 · 1 评论 -
【面试题】String类、包装类的不可变性
不可变类的意思是创建该类的实例后,该实例的实例变量是不可改变的。Java提供的8个包装类和String类都是不可变类。因此String和8个包装类都具有不可变性。就拿String类来说,通过阅读String类的源码我们可以发现其实整个String类是被final所修饰,而其用来存储值的底层实际上是一个私有final类型的字符数组,因此在JVM运行的时候是把“hello”当成常量存储在运行...原创 2020-05-06 18:37:42 · 1031 阅读 · 1 评论 -
【面试题】Java类初始化和实例初始化的顺序
一、类初始化1、一个类要创建实例需要先加载并初始化该类(1)main方法所在的类需要先加载和初始化2、一个子类要初始化需要先初始化父类3、一个类初始化就是执行<clinit>()方法(1)<clinit>()方法由静态类变量显示赋值代码和静态代码块组成(2)...原创 2020-05-04 14:51:22 · 320 阅读 · 1 评论 -
【面试题】Java单例设计模式-饿汉式枚举(enum)单例
一、enum关键字enum关键字是在Java1.5也就是Java SE5之后引入的一个新特性:它通过关键字enum来定义一个枚举类,这个被定义的枚举类继承Enum类,这个枚举类算是一种特殊类,它同样能像其他普通类一样拥有构造器、方法,也能够实现接口,但是它不能再继承其他别的类,因为它的直接父类是Enum类。在枚举类出现之前Java是将常量放在接口或是放在普通类当中,然后使用public、s...原创 2020-04-29 14:42:04 · 720 阅读 · 0 评论 -
【面试题】从JVM的角度去理解i++和++i
public class Main { public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i*i++; System.out.println("i="+i); System.out.print...原创 2020-04-28 17:17:51 · 449 阅读 · 0 评论