本文目录一览:
java中栈内存是什么意思?
堆内存:保存对象的真正数据,都是每一个对象的属性内容 栈内存:保存的是一块堆内存的空间地址,可以把它想象成一个int型变量(每一个int型变量只能存放一个数值)所以每一块保留一块堆内存地址,但是为了方便理解,可以简单的讲栈内存之中保存的数据理解为对象的名称(Person per,保存的是per)
Java栈和本地方法栈方法调用栈,这些都是什么?
JAVA内存里面有一般有四个分类,堆,栈(堆栈),静态域,常量池。 栈:实际上是一个队列,遵循FILO的原则(后进先出),里面储存的是函数的参数值,局部变量,对象的引用(对象本身不在这里)等,因此在每调用一个函数时,堆栈都会分配一部分空间给它,函数返回时,被释放。 堆:储存静态变量、全局变量和用new创建的东西,栈中的内存是动态内存,其中的内存在不使用时随时可以被回收。 静态域:存放对象中static定义的成员。 常量池:存放常量。 根据以上解释回答你的问题: JAVA栈存的是函数的参数值,局部变量,对象的引用。 方法调用栈?没有这说法吧,方法的调用是存在栈中的。 本地方法栈,和JAVA中的栈一个作用,只是这个栈是属于本地的,不属于JAVA虚拟机,但受JAVA虚拟机的控制,因为是JAVA虚拟机简单地动态链接并直接调用指定的本地方法。可以把这看作是虚拟机利用本地方法来动态扩展自己。 局部变量和对象引用存在栈中,方法调用的栈帧也是在栈中。 以上是我自己查资料+自己的理解,有错望指出
java 栈、方法栈的区别?
栈与堆都是Java用来在Ram中存放数据的地方。
String a="a";
这样的创建形式,在栈中主要存放一些基本类型的和对象的句柄,栈有一个很重要的特殊性,就是存在栈中的数据可以共享。
String b = new String("b");
堆中主要存放java对象,同时可以在堆栈中创建一个对String类的对象引用变量,也就是说:Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配,也就是在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。
其中的区别包括:申请空间大小、效率、存储内容上的差异。
java如何自定义栈?
public class Stack {
int[] data;
int maxSize;
int top;
public Stack(int maxSize) {
this.maxSize = maxSize;
data = new int[maxSize];
top = -1;
}
// 入栈
public boolean push(int data) {
// 入栈先判断栈中是否已满
if (top + 1 == maxSize) {
System.out.println("栈已满");
return false;
}
this.data[++top] = data;
return true;
}
// 出栈
public int pop() throws Exception {
// 出栈先判断栈是否已空
if (top == -1) {
throw new Exception("栈已空");
}
return this.data[top--];
}
public static void main(String[] args) throws Exception {
Stack stack = new Stack(1000);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
while (stack.top >= 0) {
System.out.println(stack.pop());
}
}
}
java中什么是栈啊?
存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。 栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定。 局部变量的数据存在于栈内存中。 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量数据(int, short, long, byte, float, double, boolean, char)和对象句柄(引用)。
java中堆和栈有什么区别?
堆:(对象) 引用类型的变量,其内存分配在堆上或者常量池(字符串常量、基本数据类型常量),需要通过new等方式来创建。 堆内存主要作用是存放运行时创建(new)的对象。 (主要用于存放对象,存取速度慢,可以运行时动态分配内存,生存期不需要提前确定) 栈:(基本数据类型变量、对象的引用变量) 基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量,其内存分配在栈上,变量出了作用域就会自动释放。 栈内存的主要作用是存放基本数据类型和引用变量。栈的内存管理是通过栈的“后进先出”模式来实现的。 (主要用来执行程序,存取速度快,大小和生存期必须确定,缺乏灵活性)