摘要: Java 基本类型的包装类的大部分都实现了常量池技术, 即Byte,Short,Integer,Long,Character,Boolean; 这 5 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据, 但是超出此范围仍然会去创建新的对象。 两种浮点数类型的包装类 Float , 阅读全文
posted @ 2024-01-24 23:08 行行行行星 阅读(39) 评论(0) 推荐(0)
摘要: HotSpot 虚拟机 GC 分类 针对 HotSpot 虚拟机的实现,GC 可以分为 2 大类: 部分收集(Partial GC) 新生代收集(Minor GC / Young GC):回收新生代,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。 老年代收 阅读全文
posted @ 2024-01-24 23:07 行行行行星 阅读(39) 评论(0) 推荐(0)
摘要: 1、String 对象的两种创建方式 String str1 = "abcd"; String str2 = new String("abcd"); System.out.println(str1==str2); //false 这两种不同的创建方法是有差别的: 第一种方式是在常量池中获取对象("a 阅读全文
posted @ 2024-01-24 23:06 行行行行星 阅读(101) 评论(0) 推荐(0)
摘要: 垃圾收集 (Garbage Collection,GC) 垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。 判断一个对象是否可被回收 堆中几乎放着所有的对象实例,对堆垃圾回 阅读全文
posted @ 2024-01-24 23:04 行行行行星 阅读(29) 评论(0) 推荐(0)
摘要: String 概览 String 被声明为 final,因此它不可被继承。 内部使用 char 数组存储数据,该数组被声明为 final, 这意味着 value 数组初始化之后就不能再引用其它数组。 并且 String 内部没有改变 value 数组的方法,因此可以保证 String 不可变。 pu 阅读全文
posted @ 2024-01-24 23:03 行行行行星 阅读(29) 评论(0) 推荐(0)
摘要: HotSpot 虚拟机对象 对象的创建 对象的创建步骤: 类加载检查 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用, 并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。 如果没有,那必须先执行相应的类加载过程。 分配内存 在类加载检查通过 阅读全文
posted @ 2024-01-24 23:03 行行行行星 阅读(16) 评论(0) 推荐(0)
摘要: 运行时数据区域 程序计数器(Program Counter Register) 当前线程所执行的字节码行号指示器(逻辑) 通过改变计数器的值来选取下一条需要执行的字节码指令 和线程一对一的关系,即“线程私有” 对 Java 方法计数,如果是 Native 方法则计数器值为 Undefined 只是计 阅读全文
posted @ 2024-01-23 23:07 行行行行星 阅读(28) 评论(0) 推荐(0)
摘要: 线段树 什么是线段树 线段树(英语:Segment tree)是一种二叉树形数据结构,1977年由Jon Louis Bentley发明[1],用以存储区间或线段,并且允许快速查询结构内包含某一点的所有区间。 一个包含n个区间的线段树,空间复杂度为O(n),查询的时间复杂度则为O(logn+k)}, 阅读全文
posted @ 2023-12-14 22:34 行行行行星 阅读(135) 评论(0) 推荐(0)
摘要: 排序 常见的简单排序算法 I. 选择排序 选择排序思路:选择出数组中的最小元素,将它与数组的第一个元素交换位置。 再从剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。 不断进行这样的操作,直到将整个数组排序。 public void sort(int[] arr){ int N = a 阅读全文
posted @ 2023-12-14 22:05 行行行行星 阅读(36) 评论(0) 推荐(0)