java基础
мг丶one
这个作者很懒,什么都没留下…
展开
-
String、StringBuffer与StringBuilder之间区别(源码分析)
string:不可变字符串,每次修改都回生成一个新的变量,浪费内存 StringBuilder:可变字符串 线程不安全,单线程操作效率高 StringBuffer:可变字符串 线程安全 package com.example.spring; /** * @Author: hyh * @Date: 2022/2/22 14:57 **/ public class Test003 { public static void main(String[] args) {原创 2022-03-03 10:25:45 · 157 阅读 · 0 评论 -
对象在内存中的存储布局
对象在堆内存中的存储布局分为三个部分:对象头,实例数据,对齐填充 对象头分为两个部分: 一:MarkWord: 记录了对象的 哈希码 GC分代年龄,锁信息等 二:类型指针,即对象指向它的类型元数据指针,如果对象是一个Java数组,那在对象头中还必须有一块用于记录数组长度的数据(4个字节) 在32位系统下,类型指针大小是4字节,MarkWord是4字节,对象头为8字节。 在64位系统下,类型指针大小是8字节,MarkWord是8字节,对象头为16字节。 在64位开启指针压缩的情况下 -XX:+UseComp原创 2022-02-26 09:37:03 · 978 阅读 · 0 评论 -
ArrayList 和 LinkList 区别(源码分析)
ArrayList 底层时动态数组 查找数据比较快,当执行 get(index)方法时,直接返回数组对应下表的元素 数组在内存存储时是一块连续的空间,知道首地址,当要查找第几个元素时,通过计算就能一次定位到该元素的地址 LinkList 底层实现是双向链表,增加和删除元素比较快,链表的节点除了存储当前节点值外还存储上一个节点和下一个节点对象 当执行get(index)方法时,首先会判断 查找索引在前半段还是后半段,如果前半段,那就从第一个位置开始找,反之从最后一个找。 // ArrayList //.原创 2022-02-24 16:46:08 · 493 阅读 · 0 评论 -
effective-java-day001
考虑使用静态工厂方法替代构造方法 下面是一些静态工厂方法的常用名称。以下清单这是列出了其中的一小部分: // from —— 类型转换方法,它接受单个参数并返回此类型的相应实例,例如: Date d =Date.from(instant); //of —— 聚合方法,接受多个参数并返回该类型的实例,并把他们合并在一起,例如: Set<Rank>faceCards = EnumSet.of(JACK, QUEEN, KING); //valueOf —— from 和 to 更为详细的替代.原创 2021-09-10 17:20:20 · 101 阅读 · 0 评论