合集-Java基础
摘要:hashcode()/equals()/== == 当 == 左右两边是基本类型的时候,比较的是数值是否相等; 当 == 左右两边是对象(引用)类型的时候,比较的是p和p2这两个对象所指向的堆中的对象地址 对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用
阅读全文
摘要:Collection 和 Collections 有什么区别 Collection接口 是Java集合框架的核心接口,它提供了一组标准的方法来操作各种类型的集合元素。它被一些集合类实现,比如ArrayList、LinkedList和HashSet等。这些实现提供了集合的基本操作,例如添加、删除、清空
阅读全文
摘要:Collection 和 Collections 有什么区别 Collection接口 是Java集合框架的核心接口,它提供了一组标准的方法来操作各种类型的集合元素。它被一些集合类实现,比如ArrayList、LinkedList和HashSet等。这些实现提供了集合的基本操作,例如添加、删除、清空
阅读全文
摘要:ArrayList ArrayList是List接口的实现类,它是支持根据需要而动态增长的数组。java中标准数组是定长的,在数组被创建之后,它们不能被加长或缩短。这就意味着在创建数组时需要知道数组的所需长度,但有时我们需要动态程序中获取数组长度。ArrayList就是为此而生的,但是它不是线程安全
阅读全文
摘要:HashMap 建议使用不可变对象作为Key,终极目的就是避免hashcode的改变 HashMap的数据结构 HashMap是:数组+链表/红黑树(JDK1.8增加了红黑树部分) 数据底层具体存储的是什么? Node<k,v> 数据结构 // 默认初始容量(数组默认大小):16,2的整数次方 st
阅读全文
摘要:HashMap 数据结构 HashMap是:数组+链表/红黑树(JDK1.8增加了红黑树部分) 数据底层具体存储的是Node<k,v> 这样的存储方式有什么优点呢? // 默认初始容量(数组默认大小):16,2的整数次方 static final int DEFAULT_INITIAL_CAPACI
阅读全文
摘要:Java switch case 语句 switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。 switch case 语句语法格式如下: switch(expression){ case value : //语句 break; //可选 case value :
阅读全文
摘要:Set集合有什么特点?如何实现key无重复的? set集合特点:Set集合中的元素是唯一的,不会出现重复的元素。 set实现原理:Set集合通过内部的数据结构(如哈希表、红黑树等)来实现key的无重复。当向Set集合中插入元素时,会先根据元素的hashCode值来确定元素的存储位置,然后再通过equ
阅读全文
摘要:https://javabetter.cn/collection/PriorityQueue.html
阅读全文
摘要:为什么有了hashmap还要有treemap HASHMAP的特性和适用场景 HashMap是基于哈希表的Map接口实现。这使得它在插入和查询键值对时能够保持平均常数时间的性能。由于这个特性,它特别适用于需要快速存取键值对的场景。 HashMap的特性: 操作性能:HashMap提供了O(1)时间性
阅读全文
摘要:String 常量池/运行时常量池 java类编译之后生成的.class文件包含三部分信息, 类的基本信息,常量池,方法的定义 通过javap -v xxxx.class命令可以看到 Constant pool: #1 = Methodref #2.#3 // java/lang/Object."<
阅读全文
摘要:为什么String要设计成不可变的 线程安全:不可变对象天生就是线程安全的:因为不可变对象不能被改变,所以他们可以自由地在多个线程之间共享。不需要任何同步处理。 hashmap需要: 加快字符串处理速度由于String是不可变的,保证了hashcode的唯一性,于是在创建对象时其hashcode就可
阅读全文
摘要:finally 中的代码一定会执行吗 通常在面试中,只要是疑问句一般答案都是"否定"的,因为如果是"确定"和"正常"的,那面试官就没有必要再问了。 典型回答 正常运行的情况下,finally 中的代码是一定会执行的,但是,如果遇到以下异常情况,那么 finally 中的代码就不会继续执行了: 程序在
阅读全文
摘要:反射 获取任意对象的数据 对对象一无所知的情况下 public class Student { private String name; private Integer age; public Student(String name, Integer age) { this.name = name;
阅读全文
摘要:拷贝类型 引用拷贝,浅拷贝,深拷贝 引用拷贝 在Java中,对象的引用拷贝是指将一个对象的引用赋值给另一个变量。通过引用拷贝,两个变量将指向同一个对象,它们共享同一块内存空间。当修改其中一个变量指向的对象时,另一个变量也会受到影响。 下面是一个简单的示例代码,演示了对象引用拷贝的概念: public
阅读全文
摘要:面向对象 访问控制修饰符 Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。 public : 对所有类可见。使用对象:类、接口、变量、方法 protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部
阅读全文
摘要:Throwable 是 Java 语言中所有错误与异常的超类。 Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。 Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取
阅读全文
摘要:Class对象 class对象通常存放在方法区 在程序运行期间,Java运行时系统始终为所有对象维护一个运行时类型标识。这个信息会跟踪每个对象所属的类。虚拟机利用运行时类型信息选择要执行的正确的方法。不过,可以使用一个特殊的Java类访问这些信息。保存这些信息的类名为Class,这个名字有些让人困惑
阅读全文
摘要:数据类型 Java的数据类型包括基本数据类型和引用数据类型: 基本数据类型: 整形:byte, short, int, long 浮点型:float, double 字符型:char 布尔型:boolean 引用数据类型:class, interface, array。
阅读全文
摘要:Interface Interface 的设计初衷是面向抽象,提高扩展性。这也留有一点遗憾,Interface 修改的时候,实现它的类也必须跟着改。 为了解决接口的修改与现有的实现不兼容的问题。新 interface 的方法可以用 default 或 static 修饰,这样就可以有方法体,实现类也
阅读全文
