随笔分类 -  java基础

摘要:对象的创建过程 ①类加载检查②分配内存③初始化零值④设置对象头⑤执行init方法 类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符合引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过;如果没有必须先执行相应的类加载过程。 分配内存 在类 阅读全文
posted @ 2022-03-04 20:07 时光不染-^^- 阅读(54) 评论(0) 推荐(0)
摘要:HashMap多线程操作可能导致死循环问题 主要原因在于并发下的Rehash会造成元素之间形成一个循环链表。不过jdk1.8后解决了这个问题,但还是不建议在多线程下使用HashMap,因为多线程下使用HashMap还是会存在其他问题比如数据丢失。并发环境下推荐使用ConcurrentHashMap。 阅读全文
posted @ 2022-03-02 22:36 时光不染-^^- 阅读(247) 评论(0) 推荐(0)
摘要:乐观锁和悲观锁 悲观锁:总是假设最坏的情况(数据已经被修改,适用于经常写的情况),每次去拿数据的时候都会认为别人修改,所以,每次在拿数据时都会上锁,这样别人想拿这个数据就会阻塞,直到它拿到锁(共享资源每次只给一个线程使用,其他线程阻塞,用完后再把资源转让给其他线程),传统的关系型数据库里面就用到了很 阅读全文
posted @ 2022-03-01 23:24 时光不染-^^- 阅读(278) 评论(0) 推荐(0)
摘要:/** * 要分配的最大数组大小 */ private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; /** * ArrayList扩容的核心方法。 */ private void grow(int minCapacity) { / 阅读全文
posted @ 2022-02-26 00:11 时光不染-^^- 阅读(403) 评论(0) 推荐(0)
摘要:System.arraycopy()和Arrays.copyOf()方法 { public static void main(String[] args) {​ systemArrayCopyTest(); arrayCopyTest(); }​ private static void arrayC 阅读全文
posted @ 2022-02-25 22:40 时光不染-^^- 阅读(130) 评论(0) 推荐(0)
摘要:hashCode与equals 为什么重写equals时必须重写hashCode? hashCode(): hashcode()的作用是获取哈希码,也称为散列码;它实际上是返回int整数,这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()定义在JDK的Object.java中,这 阅读全文
posted @ 2022-02-22 22:57 时光不染-^^- 阅读(114) 评论(0) 推荐(0)
摘要:1.接口的方法默认是public,所有方法在接口中不能有实现(java8开始接口方法可以有默认实现), 而抽象类可以有非抽象的方法; 2.接口中除了static、fianl变量,不能有其他变量,而抽象类中则不一定; 3.一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过extends 阅读全文
posted @ 2022-02-22 22:04 时光不染-^^- 阅读(52) 评论(0) 推荐(0)
摘要://数组的两种初始化方式:动态初始化和静态初始化//动态初始化:用户赋予长度,系统赋初值int[] array1 = new int[5];//静态初始化:用户赋值,系统计算长度int[] array2 = new int[]{1, 2, 3, 4, 5};//简写int[] array3 = {1 阅读全文
posted @ 2021-12-15 16:12 时光不染-^^- 阅读(74) 评论(0) 推荐(0)
摘要:构造器特性: 1.和类名相同 2.没有返回值,但不能用void声明构造函数 3.生成类的对象时自动执行,无需调用作用: 1.new本质是再调用构造方法 2.初始化对象的值注意点: 定义有参构造之后,如果想要使用无参构造,需要显式定义无参构造 Alt+Insert快捷键可以生成有参和无参构造 构造器: 阅读全文
posted @ 2021-11-05 16:59 时光不染-^^- 阅读(128) 评论(0) 推荐(0)