结论

引用类型,总是储存在堆上(数组同样属于引用类型,只不过他是使用c实现的);

基础类型,在方法中的局部变量储存在栈,对象实例中的实例字段则随对象一同存储在堆上;

线程享有自己的栈空间,因此局部变量是线程安全的;

例子
点击查看代码
public class Test{
	public static void main(String[] args){
		int i = 0;                   //栈;
		MyClass c = new MyClass();   //对象包括其实例字段都储存在堆上,变量c是一个局部变量,同上存储在栈上;
										//c是一个引用,其在栈上的空间储存了实际对象的堆空间地址;
		int[] arr = new int[]{1,2,3};//arr在栈上,数组内容在堆上;
	}
}

class MyClass{
	private int i;
	private String s;				 //无论是引用s还是String对象,都存放在堆中;
}
一些细节

java提供了一些基础类型的封装类,同样的这些类也属于引用类型;

另外有一种特殊情况,String类型往往不使用new关键字,他同样是存放在堆上的,严格来说,他存放在堆里面的字符串常量池里面;

原文地址:http://www.cnblogs.com/arvvio/p/16851776.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性