A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鲸鱼先生. 中级黑马   /  2014-10-20 18:45  /  950 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 鲸鱼先生. 于 2014-10-20 21:02 编辑
  1. String str = "Hello";
  2.             int i = 0;
复制代码

这两个变量在内存中的存储位置有什么不同吗?

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

3 个回复

倒序浏览
是int i = 0;String都储存在栈区,而String有个地址指向储存在堆区的“Hello”吗?
回复 使用道具 举报
声明的变量是存在栈区。
但是String是属于引用类型的,它声明的变量是存在堆区的,但是,变量里面存的不是值!是引用,也就是JVM(Java虚拟机)开辟的内存地址,并且这个地址里的值是不能被改变的!

你记住除了8个基本类型,再的都是引用类型~
基础类型:int,double,float,long,short,byte,char,boolean。这8个,他们的声明的变量以及存的值都在栈区里~

希望能帮助到你~

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
wf111sxwf 来自手机 中级黑马 2014-10-20 22:41:58
板凳
这个str 储存在字符串常量池中,int i的位置就要看它是成员变量还是局部变量了,成员的话就在堆中,局部的话在栈中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马