https://mp.weixin.qq.com/s/4w6wNh-5eZnQEtBYuzAkJw int [-128,127] == 都是true 的 但是 不能 试了几个 1 2 3 就确定 所以的 都用== 是ok的 ...
分类:
编程语言 时间:
2020-10-12 20:39:49
阅读次数:
28
在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。 8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种: 直接使用双引 ...
分类:
其他好文 时间:
2020-10-09 20:51:31
阅读次数:
25
常量池的项目类型 类 型 标 志 描 述 CONSTANT_Utf8_info 1 UTF-8编码的字符串 CONSTANT_Integer_info 3 整型字面量 CONSTANT_Float_info 4 浮点型字面量 CONSTANT_Long_info 5 长整形字面量 CONSTANT_ ...
分类:
其他好文 时间:
2020-09-10 22:32:26
阅读次数:
42
古时的风筝原创系列之前发过这篇文章,但是文中的例子有点错误,都是用的字面量当参数,虽然结论是没有问题的,但是根据例子推导结论其实是有问题的,这里重新把有问题的例子和图都替换了,因为已发送的文章只能修改几个字,所以这里重新发一遍。以免误人子弟。字符串问题可谓是Java中经久不衰的问题,尤其是字符串常量池经常作为面试题出现。可即便是看似简单而又经常被提起的问题,还是有好多同学一知半解,看上去懂了,仔细
分类:
编程语言 时间:
2020-08-28 14:51:33
阅读次数:
52
内存模型 方法区(Method Area):方法区是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。当方法区无法满足内存分配需求时,将抛出OutOfMemoryError 异常。方法区里存放着类的版本,字段,方法,接口和常量池。常量池里存储着字 ...
分类:
其他好文 时间:
2020-08-27 17:11:42
阅读次数:
67
上一篇:Java面试备战篇——JVM篇(一)11、Java对象创建过程1.JVM遇到一条新建对象的指令时首先去检查这个指令的参数是否能在常量池中定义到一个类的符号引用。然后加载这个类(类加载过程在后边讲)2.为对象分配内存。一种办法“指针碰撞”、一种办法“空闲列表”,最终常用的办法“本地线程缓冲分配(TLAB)”3.将除对象头外的对象内存空间初始化为04.对对象头进行必要设置12、类的生命周期类的
分类:
编程语言 时间:
2020-08-20 18:42:45
阅读次数:
70
JVM类加载 1. Java对象的创建过程 类加载检查 > 分配内存 > 初始化零值 > 设置对象头 > 执行init方法 1.1 类加载检查 虚拟机遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有 ...
分类:
其他好文 时间:
2020-08-12 15:40:12
阅读次数:
54
引言 重点讲讲普通的对象、数组对象以及class对象的创建过程。 对象通常由三个部分组成:对象头、实例数据喝对齐填充。 1. 普通对象创建过程 类加载 分配内存 初始化 设置对象头 执行init方法 1.1 类加载 JVM遇到new 关键字时,会去常量池中查看有无该类的符号引用,并检查其是否加载、解 ...
分类:
编程语言 时间:
2020-07-30 22:05:55
阅读次数:
73
StringTable String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为byte [] 字符串常量池中是不会存储相同内容的字符串的。 String的String Pool是一个固定大小的Hashtable,默认值大小长度是1009。如果放进 ...
分类:
其他好文 时间:
2020-07-29 15:20:56
阅读次数:
67
简介 String对象有个特殊的StringTable字符串常量池,为了减少Heap中生成的字符串的数量,推荐尽量直接使用String Table中的字符串常量池中的元素。 那么String.intern的性能怎么样呢?我们一起来看一下。 String.intern和G1字符串去重的区别 之前我们提 ...
分类:
其他好文 时间:
2020-07-28 10:15:18
阅读次数:
77