类的方法中的局部变量是建立在栈里还是堆里?如:
class Test
{
public void fun()
{
int a; //这个a建立在栈里还是堆里?
}
}
class Test
{
public void fun()
{
int a; //这个a建立在栈里还是堆里?
}
}
解决方案 »
- 怎么用java解密 C# 写的3DES加密 我想用java解密 关键是Key 又被MD5加密 哈稀了~
- String s1=new String("hello");String s2=new String("hello");创建对象问题
- 求助 关于线程的SCJP试题!!
- 接口内常量调用的问题~~~~~~~~~~高手帮忙解释一下~~~ 先谢谢了~~~~
- 请问这个添加JLabel组件的方法哪有错?
- 那里有免费下载教JAVA的课堂录音
- 帮忙呀,怎么求两个集合的交集呀
- 简单问题
- 一个傻问题??
- 我运行jdk1.3执行程序时出现以下错误:
- 哪里有做也做不完的java题 ??
- 引用,对象 的一个小问题。非常简单 但是我不明白。。。求指点
也就是说new的时候,new的是值类型,这个值类型就放在栈里
如果new的是引用类型,那么放在栈里的就是指针,具体信息在堆里
{
public void fun()
{
int a; //a局部变量,所以建在栈里
}
}
Java把内存划分成两种:一种是栈内存,一种是堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。
当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
堆内存用来存放由new创建的对象和数组。
在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。
引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象