数据结构-堆栈内存

37 阅读1分钟

1.什么是堆内存?

  • 存放new创建的对象和数组

2.什么是栈内存

  • 引用变量

3.区别

  • 栈的速度要快
  • 栈的数据可以共享,主要存基本数据类型
  • 例如:int a=3; //在栈中创建变量a,然后给a赋值,先不会创建一个3而是先在栈中找有没有3 如果有直接指向,没有就加一个3进来。int b=3;b这个时候是直接指向3而不会创建。

4.案例

  • String str1 = "abc"; String str2 = "abc"; System.out.printin(str1==str2); //true
  • String str1 = "abc"; String str2 = "abc";str1 = "bcd";
  • System.out.printin(str1 + "." + str2);//bcd,abc
  • System.out.printn(str1==str2);//false 虽然最开始 str1和str2都指向同一个变量abc但str1引用变化后不会改变str2的
  • String str1 = "abc"
  • String str2 = "abc"
  • str1 = "bcd"
  • String str3 = str1:
  • System.out.printin(str3); //bcd
  • String str4 = "bcd";
  • System.out.printin(str1 == str4);//true
  • String str1 = new String("abc");
  • String str2 = "abc";
  • System.out.printn(str1==str2);//false new在堆内存中新开了一个对象
  • String s1 = "ja";
  • String s2 = "va";
  • String s3 = "java";
  • String s4=s1+s2;/java注意这个+号,java里面重载了+,其实调用了strngBuild,会new对象,
  • System.out.printin(s3 == s4);//false
  • System.out.printn(s3.equals(s4)); //true 只是比较值