结论
引用类型,总是储存在堆上(数组同样属于引用类型,只不过他是使用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. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性