
java基础
文章平均质量分 61
猫猫呀。
趁现在。还年轻。多吃苦!
展开
-
深拷贝与浅拷贝的区别?
深拷贝与浅拷贝在面试中也是较为高频的考点,而在Java设计模式中的原型模式就能很好的体现深拷贝以及浅拷贝的区别?浅拷贝概念:在对对象就行拷贝时,如果对象的属性时基本数据类型,而不是引用数据类型的话,那么会在栈内直接为其开辟内存空间,同时为其赋值,源对象的属性发生改变时,拷贝对象的属性并不会发生改变。但是如果过对象的属性时引用数据类型时,拷贝对象的引用数据类型会直接指向源对象的内存空间,如果源对象发生改变的话,拷贝对象会发生改变。有关图例如下:其中age为int类型,birtday是Date引用类型。原创 2021-07-19 18:40:48 · 155 阅读 · 0 评论 -
详解HashMap的put方法
关于HashMap,在面试中几乎是必问的考点,记得我第一次面试,面试官上来就是说一下HashMap的put方法。不过当时还好做好了准备,这些也是能够轻松回答出来。值得注意的是,从JDK1.7到JDK1.8HashMap做了大量的改进。如果在回答有关HashMap问题时,能够分别说出1.7和1.8的区别的话,那么能够为你面试加一点分的。put方法的流程如下:进入到put方法之后,首先会将你给定的key通过hash算法以及与运算的方法将其运算得出数组的下标如果数组的下标位置元素为空,则将对应的key v原创 2021-07-15 11:23:54 · 3976 阅读 · 0 评论 -
ArrayList和LinkedList的区别
关于List中的常用集合框架的具体实现类无非就是ArrayList以及LinkedList。而关于两者的区别也是在面试中较为高频的考点。区别如下:两者的底层数据结构不同,ArrayList的底层数据结构使用的是数组,而LinkedList的底层数据结构使用的是链表。LinkedList还实现了Deque接口,说明LinkedList还可以作为队列使用。需要注意的是。这个队列还是双端队列。public class LinkedList<E> extends AbstractSe原创 2021-07-15 10:51:46 · 117 阅读 · 0 评论 -
Java不同锁的基本原理
深入理解Java中的多种锁乐观锁与悲观锁独占锁与共享锁互斥锁与读写锁公平锁与非公平锁可重入锁自旋锁分段锁乐观锁与悲观锁悲观锁悲观锁顾名思义,对应的是十分悲观的东西,这个锁无论对任何东西进行操作,都会认为会有人进行插队,所以这个锁会进行上锁。那么其他人只能在对象等待池里进行等待,这种状态也就是阻塞了。进入到java代码世界中,也就是说只要有对象被悲观锁进行占有,那么其他想要对这个对象进行操作的锁都会在外面进行 等待那就只能阻塞了。在对应的java语言中对应的悲观锁即为关键字Sy原创 2021-07-14 18:19:39 · 190 阅读 · 0 评论 -
sleep和wait的区别?
面试对于每个人来说都是必不可少的一条路,而关于sleep和wait的一些区别我们也是有必要做深入研究的。今天写一遍文章简单说明一下sleep和wait的区别。1、方法所属的对象不同我们可以通过查看sleep和wait的源码可以看到两者的附属不同。sleep是属于Thread线程类的方法。而wait是Object类的方法2、可调用方法的位置不同sleep方法可以不在synchronized块的方法内进行调用,而wait必须在synchronized的块内方法调用。3、使用该方法之后对象的锁状原创 2021-06-14 01:27:23 · 252 阅读 · 0 评论 -
synchronized与Lock的区别
谈及juc编程中的重点,毫无疑问的是synchronized以及lock是非常常见且面试高频的问点。这两者都是可以解决并发问题中。但是这两者的区别在哪里呢?1、首先synchronized是一个关键字,而Lock是一个接口(类)。因为我们都使用他的实现类,所以可以说是一个类。2、synchronized会自动释放锁。而Lock需要手动加锁以及关闭锁。如果不手动可能死锁3、synchronized可重入锁、不可中断、非公平的,Lock可重入锁,可判断锁,可以自动设定锁的是否公平。4、synchroni原创 2021-06-10 21:28:48 · 654 阅读 · 0 评论 -
集合为什么要拥有迭代器Iterator
关于集合中的知识可能对于大部分人而言都耳熟能详了,但是对于一部分人而言,对于集合为什么又迭代器Iterator可能一时半会还说不出个所以然来。对于迭代器而言,它是一种设计模式,设计模式存在的意义就是为了简化代码以及提高效率。什么是迭代器?在jdk的定义中,Iterator是一个接口。他提供了如下方法:提供了一个boolean返回值的方法,该方法定义的是下一个值是否还有值,使用迭代器的基本方法就是通过该方法判断下个值是否还有值然后进行迭代获取值。提供了一个从集合中移除元素的方法,remove()。使原创 2021-06-10 17:03:00 · 1031 阅读 · 0 评论 -
乐观锁CAS实现机制以及synchroized介绍
前言:关于并发编程中的问题,几乎是面试必问的知识点,而关于锁也是花样百出的在进行各种变换的提问。比如最基本的就是乐观锁CAS以及优化机制和synchroized在新版jdk中的优化在讲关于这些之前,我觉得有必要说一下乐观锁以及悲观锁的基本概念以及区别在哪里?悲观锁:悲观锁顾名思义,这个锁十分的悲观,当这个线程进入之后,总是认为会有其他线程会进入堆内存中拿到自己所操作的变量,造成并发问题的产生。所以每次都会都对对象进行上锁。但是这个上锁以及解锁的过程会耗费相当一部分资源以及时间。所以从性能上来说,在悲原创 2021-06-06 20:47:33 · 215 阅读 · 0 评论 -
String、StringBuffer、StringBuilder三者的区别
在日常的学习中,我们不可避免的需要接触字符串相关的知识,但是对于初学者而言可能接触的更多的是String类型,对于StringBuffer、StringBuilder的存在可能还不是很清楚,而在面试中,关于这三者的联系与区别也基本是必问的知识点。String 类型对于String的源码查看我们可以知道,这个类的底层实现原理就是一个final型的字符数组。 /** The value is used for character storage. */ private final char原创 2021-06-04 00:36:15 · 177 阅读 · 1 评论 -
equals与==的区别
对于初学者而言,一开始可能并不会接触到equals的使用,在之后的字符串以及引用类型的判断的阶段可能会接触到equals与==两者究竟有什么区别?对于==来说,如果是对于基本数据类型而言进行比较的话,它比较的是数据类型值是否相等。 int a=1,b=1; System.out.println(a==b);显然运行结果为true,类似的还有char 、float、double等八大基本数据类型的==都是判断值是否相等而==对于引用类型的话,这个就是判断引用类型的地址是否相同。因为字符串常量池的原原创 2021-06-02 23:41:53 · 132 阅读 · 0 评论 -
HashMap负载因子为什么是0.75?
HashMap负载因子为什么是0.75?什么是负载因子?当负载因子为1时情况如何?当负载因子为0.5的时候情况如何?总结在看一些面试的经典考察题目中,我总结得出了,hasmmap几乎是面试必问的考点,而其中问的方式又是千奇百怪,前前段时间看到了关于hashmap中扩容时的负载因子为什么默认时0.75,后面对其进行了源码上的探索以及相关资料的查询得出了以下原因。什么是负载因子? /** * The load factor used when none specified in cons原创 2021-06-02 14:09:04 · 751 阅读 · 0 评论