
yuque
眠秋雨
不要向前看,那里有怀疑;也不要向后看,那里有悔恨。
展开
-
Java并发-锁的对比与升级-轻量级锁
Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?原创 2022-06-09 12:33:44 · 324 阅读 · 1 评论 -
Java并发-synchronized实现原理与应用-概述
Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?原创 2022-06-09 12:33:08 · 302 阅读 · 0 评论 -
Java并发-线程间通信-等待/通知机制
Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?原创 2022-06-09 12:32:36 · 351 阅读 · 0 评论 -
线程池执行流程
Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?原创 2022-06-09 12:32:04 · 168 阅读 · 0 评论 -
面试:String、StringBuffer、StringBuilder
Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?原创 2022-06-09 12:30:46 · 230 阅读 · 0 评论 -
面试:什么是浅拷贝、深拷贝?
浅拷贝也会在堆上创建一个对象,但是如果原对象中有引用数据类型,那么拷贝的对象会直接复制其引用数据类型,也就是说,原对象和引用对象共用一个内部对象。深拷贝会完全复制整个对象,包括原对象中的内部对象。...原创 2022-06-09 12:30:19 · 108 阅读 · 0 评论 -
面试:了解装箱和拆箱操作吗?
● 装箱:基本数据类型->引用数据类型● 拆箱:引用数据类型->基本数据类型装箱其实就是调用包装类的valueof()方法,拆箱调用的是包装类的xxxValue()方法。频繁拆箱和装箱操作可能会引起性能问题。...原创 2022-06-09 12:28:59 · 87 阅读 · 0 评论 -
面试:为什么整数包装类尽量用equals()来比较大小
Byte、Short、Integer、Long这4种类型缓存了[-128,127]的相应缓存数据。第9行比较的其实是两对象的地址,注意这是一个坑。原创 2022-06-09 12:28:18 · 132 阅读 · 0 评论 -
面试:hashCode()和equals()
Q:hashCode()有什么用?hashCode()是Object类中定义的一个本地方法,返回该对象的哈希值,用于确定该对象在哈希表中的索引位置。Q:hashCode()怎么用?当向哈希表中插入数据时,会先计算该对象的哈希值来确定插入位置,如果该位置是没有元素,那么直接插入成功。如果有元素,哈希表会利用equals()方法与该位置的元素进行比较。如果待插入的元素与其equals()返回true,那么插入失败,如果返回false,那么哈希表会将其散列到其它位置或者使用拉链法加入其中。Q:为什么jav原创 2022-06-09 12:27:13 · 174 阅读 · 0 评论 -
面试:‘==‘与equals()之间的区别
==● 对于基本数据类型,==判断两个变量值是否相等● 对于引用数据类型,判断两个变量是否指向同一对象equals● equals()定义在Object类中,只能用于引用数据类型的比较● 如果一个类没有重写equals(),那么就是比较两个变量是否指向同一对象,等价于""● 重写了equals()方法:我们一般都重写equals()方法来比较两个对象中属性是否相等。若它们的属性相等,则返回true。...原创 2022-06-09 12:26:29 · 161 阅读 · 0 评论