在java中,内存分为三个部分栈区,代码区(数据区) 堆区。java
1.在一个程序中,好比一个类被编译后,就是放在代码区里的,放在代码去里的还有静态变量,静态方法。对象
2.当程序建立一个基本数据类型的变量的时候,直接把变量存放在栈区,内存
3.当程序new一个对象的时候。程序在栈区建立了一个变量的引用。在堆区开辟了一块内存。用这个引用指向这块内存。字符串
4.区别编译
String a = "abc"和String b = new String("abc")的区别变量
第一种,是直接在栈区存放变量。第二种是,在栈区建立一个变量,而后在堆区的字符串池建立一个变量。在堆区开盘一个内存。用栈区的引用直线字符串池的引用,字符串池的引用指向内存。当在来一个String c = new String(“abc”)时,会先去字符串池里查找,若是有的话会直接指向这个引用。而不开辟新的内存数据类型