Contents
  1. 1. 基本类型数据
  2. 2. String 类型

https://blog.csdn.net/u010697982/article/details/45696989

基本类型数据

  • 普通方法里面申明的基本类型变量的字面量和值都存在栈区,并且会复用。
    int a=5; int b=5; 则会在 JVM栈里指向同一个值 5

String 类型

Sring str2 = “abc”; String str3 = new String(“abc”);

编译器的处理是这样的: 先遇到String str1 = “abc”; 首先在栈中建立一个str1的引用,然后在栈中查找是否存放为”abc”的地址(“abc”存放在常量池中,引用在栈中),找到就指向它,没有就在常量池中造一个,然后也指向它。接着Sring str2 = “abc”; 因为常量池有了”abc”,所以str2就也指向它,最后到了String str3 = new String(“abc”); 先在栈中建立一个引用str3,然后去常量池中查找是否有“abc”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此“abc”对象的拷贝对象,所以,对于String str=new String(“abc”),如果常量池中原来没有”abc”则产生两个对象,否则产生一个对象

Contents
  1. 1. 基本类型数据
  2. 2. String 类型