内容简介:从深入理解Java虚拟机一书来说,是不存在这个说法的。从大部分百度而来的结果,就是说如下:123,这个数字存在哪里? 这个从JVM来说,它是存在常量池中的。按照缓存池的说法,int的缓存范围是-128~127,那我们用220来测试下结果。
1.数据类型
1.1装箱和拆箱问题
1.2 缓存池
从深入理解 Java 虚拟机一书来说,是不存在这个说法的。从大部分百度而来的结果,就是说如下:
123,这个数字存在哪里? 这个从JVM来说,它是存在常量池中的。
按照缓存池的说法,int的缓存范围是-128~127,那我们用220来测试下结果。
private void cachePool(){ Integer a = Integer.valueOf(220); Integer b = Integer.valueOf(220); AppLog.i(String.valueOf(a == b)); Integer c = Integer.valueOf(123); Integer d = Integer.valueOf(123); AppLog.i(String.valueOf(c == d)); Integer e = 220; Integer f = 220; AppLog.i(String.valueOf(e == f)); Integer g = 123; Integer h = 123; AppLog.i(String.valueOf(g == h)); }
结果是false,true,false,true。
这里的理解是有误的。首先常量池存的是字符串,比如“abc”,abc存在常量池里面。s = "abc",这个时候,s并不在常量池。
在会过来说缓存池。在java中,当int的范围是【-128,127】时,JVM事先把这个范围内的数值,先存放在堆里面。所以对123的使用,缓存池的地址。
基本类型对应的缓冲池如下:
- boolean values true and false
- all byte values
- short values between -128 and 127
- int values between -128 and 127
-
char in the range \u0000 to \u007F
1.3 常量池
常量池只要针对字符串常量,这个上文有说到,字符串会在使用的时候,存放到常量池中。
String s1 = "abc"; String s2 = "abc"; AppLog.i(String.valueOf(s1 == s2));
结果是true,更进一步,把s2换成“abc”,还是true。也就是s1和s2都是常量池一个地址的引用。
1.4 String
最重要的是不可变性:
String 由final char[]value,由于final修饰,所以value不能指向其他数组,并且string内部没有修改value的方法,所以String是不可修改的。
hashcode可以缓存,应为不变。
StringPool机制,这个就是上面说的常量池。
String是线程安全的。
StringBuild不是线程安全
StringBuffer线程安全,内部有synchronized
String.intern(),这个方法会主动把字符串放入常量池。
1.5 精度问题
Java 不能隐式执行向下转型,因为这会使得精度降低。
short s = 1; /*1是int类型,所以+以后转换为int类型,强转为short型*/ s = (short) (s+1); /*支持隐私转换*/ s +=1;
1.6 static
1.6.1 static 变量
其他从JVM角度来讲,static的变量和类没有关系,类的实例是在java heap里面new出来的。而static 变量存在于方法区。类名只是为了找到这个全局变量的位置而已。(C++的说法,全局变量,功能类似)
1.6.2 static方法
静态方法也是独立于类的存在,所以静态方法必须实现。存在于JVM的方法区。
1.6.3 static代码块
- 首先这部分代码,只有在类使用的时候,才会被加载。
- 其次,它只会运行一次,或者说在类加载的时候,被运行。而不是new一个类的时候,所以它比new 更早。
-
构造代码块,也就是没有static,这个很显然,是在每次构造的时候调用。其次,每次都会调用。可以理解为是构造函数的一部分。
1.6.4 static内部类
从JVM的角度看,只是一个命名方式而已,跟外部类,是完全不想干的2个类。
以上所述就是小编给大家介绍的《Java知识点汇总》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 前端知识点汇总
- OSX 开发知识点汇总(一)
- OSX 开发知识点汇总(五)
- ES6面试、复习干货知识点汇总(全)
- Android复习资料——Java知识点汇总(一)
- Android复习资料——Android知识点汇总(一)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Node.js硬实战:115个核心技巧
【美】Alex R. Young、【美】Marc Harter / 承竹、慕陶、邱娟、达峰 / 电子工业出版社 / 2017-1 / 109.9
《Node.js 硬实战:115 个核心技巧》是一本面向实战的Node.js 开发进阶指南。作为资深专家,《Node.js 硬实战:115 个核心技巧》作者独辟蹊径,将着眼点放在Node.js 的核心模块和网络应用,通过精心组织的丰富实例,向读者充分展示了Node.js 强大的并发处理能力,读者从中可真正掌握Node 的核心基础与高级技巧。《Node.js 硬实战:115 个核心技巧》总共有三部分......一起来看看 《Node.js硬实战:115个核心技巧》 这本书的介绍吧!