假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html
以前一直存在一个误区,就是引用数据类型放在堆中,比如说有一个student对象,引用和基本数据类型放在栈中,那其它的对基本数据类型和引用数据类型的操作的代码放在那里呢?
还有为什么会对堆设置的内存大的,不就是一个new student吗?全局的基本数据类型存放在哪里?现在我们来一一来分析这种看法:我们可能一直都在说基本数据类型是栈内存中的,也就是局部变量表,并且存储着对堆空间的引用。
现在我们再来仔细的品味这句话。
1,首先以student对象为例,它new出来的对象首先会在堆中,Student a=new
Student();这个a会在栈中,比如student里面有name age的属性,这个时候就会在堆内存中存储着这个对象,而在栈中的对a的所有的操作比如a.setage a.getage 都是对堆中 student的修改或者赋值,栈中的代码无非就是对对象的修改和赋值。
从这里我们可以看出为什么要把堆内存设置的特别大,因为它主要是放置对象的地方,多个对象是比较吃内存的,而栈中只不过是对堆内存引用对象的修改,操作的还是堆内存的。一旦方法执行完毕出栈的时候栈就释放内存了。
2,全局基本数据类型的数据类型放在那里?首先,全局基本数据类型一般不这样去设置的。因为全局的基本数据类型一般都会设置成常量的,这个时候是不允许修改的,否则每个方法都去修改的话就不知道全局基本数据类型到底是什么了。