最近在网上看到一些Android的面试题,关于String和Integer常量池的,就总结了一下,暂时先记录下来,以后说不定能用到 在上面我们看到Integer在-128~127之间是使用常量池的,如果不在这个区间就不会使用,其实是重新new了一个Integer,我们看一下源码 我们看到如果i >= ...
分类:
编程语言 时间:
2018-04-23 21:41:07
阅读次数:
195
1.字符串 String 字符串常量, 常量池中 final类型,每次改变都是重新分配对象,因此频繁的改变String类型会导致过多的无用对象,引起频繁的GC; 不经常修改的变量可以使用String,比如model类属性; ==String好处== 实现常量池:相同字串相同常量,节省了空间;对比St ...
分类:
编程语言 时间:
2018-04-21 14:33:00
阅读次数:
202
"讲的太好了博文" 简述 java序列化是将堆内存中存放的java对象放在存放在硬盘或者以字节流的方式在网络中传输。另一种表述:序列化是将结构化的对象数据以非结构的字节流形式存放在本地或者在网络中传输。 【注】:java对象存放在堆内存中,基本数据类型存放在更快的栈内存中,常量存放在常量池中。 与反 ...
分类:
其他好文 时间:
2018-04-21 14:25:21
阅读次数:
157
1 string a = "abc"; 2 string b = "abc"; 3 a==b;//true 4 a.equals(b);//true "abc" 存在常量池中,a,b都指向同一对象,当然他们都是一样的值 “==”判断符号左右两个变量(Object)是否指向同一内存地址; “equal ...
分类:
其他好文 时间:
2018-04-21 12:46:30
阅读次数:
147
有的项目引用了太多的jar包,或者反射生成了太多的类,异或有太多的常量池,就有可能会报java.lang.OutOfMemoryError: PermGen space的错误, 我们知道可以通过jvm参数 -XX:MaxPermSize=256m来配置这部分堆内存的大小。 在eclipse中如何配置 ...
分类:
编程语言 时间:
2018-04-15 16:24:27
阅读次数:
227
并不是所有数据类型都可以指定直接量,通常只有三种类型可以指定。具体而言,java支持8种类型的直接量 int:在程序中直接给出的整型数值,可分为二进制(0b或0B开头),十进制,八进制(0开头),十六进制(0x或0X开头)4种 long:整型数值后添加l或L就变成long类型的直接量,例如3L,0X ...
分类:
其他好文 时间:
2018-04-15 13:33:54
阅读次数:
148
前言 首先看下下面代码结果是什么? 在看这个代码结果是什么? 第一个例子其结果为false 第二个例子其结果为true 为什么会这样? 下面看下内存分布图: 最后得出的结论: 1、+运算符如果一边是变量的话就会 先查找常量池中有没有拼接完的 如果有常量池就不会在新建 否则会新建一个常量 最后会在堆中 ...
分类:
编程语言 时间:
2018-04-12 23:31:52
阅读次数:
333
字符串常量池:字符串常量池在方法区中 为了优化空间,为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池。如果字符串已经存在池中,就返回池中的实例引用。如果字符串不在池中,就会实例化一个字符串并放到池中。Java能够进行这样的优化是 ...
分类:
编程语言 时间:
2018-04-10 21:48:23
阅读次数:
247
一、概述 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 二、类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verifica ...
分类:
编程语言 时间:
2018-04-09 23:09:34
阅读次数:
281
本周教材内容学习总结 第八章 ->stinrg类 Java中专门提供用来处理字符的类(不能有之类,包含于java.lang包中) 常量池 在程序运行期间不能允许得到改变 类似于C语言前的 #define N 20; 构建字符串的两种方式 String: String s = new String(" ...
分类:
其他好文 时间:
2018-04-08 21:13:21
阅读次数:
102