关于 js 与 Java 堆栈内存的一些疑惑

2017-04-26 14:02:49 +08:00
 peneazy

最近学习中遇到了些疑惑,希望 v2 各位大牛解惑。

先说 js ,限定在 ES5 讨论。在 js 中对象是存在堆内存中的,变量只是个引用,那对象的属性是存在哪的呢,假设该属性是个数字 3 ,函数作用域中的变量又是存在哪里呢。

再说 java , static 修饰的静态变量我理解为和 js 构造函数本身的属性是类似的东西,这东西存在哪块内存,局部变量存在哪块内存,类 new 出的对象中实例变量又存在哪里。

问题总结:下面两段 java 和 js 代码中, demo.num1 , DemoJava.num2 , num3 , num4 , obj1.num5 , arr1[0]都存在内存哪里?

public class DemoJava {
	public int num1 = 1;
	public static int num2 = 2;
	public static void main(String[] args) {
		DemoJava demo = new DemoJava();
		int num3 = 3;
		System.out.println("num1:" + demo.num1);
		System.out.println("num2:" + DemoJava.num2);
		System.out.println("num3:" + num3);
	}
}
var fun1, obj1, arr1;

function add() {
	var num4 = 4;
}

obj1 = {
	num5: 5
};

arr1 = [6, 7];
3001 次点击
所在节点    程序员
21 条回复
peneazy
2017-04-28 09:55:25 +08:00
@araraloren 是啊 已经不纠结这块了,不如多做几道算法题来的爽~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/357454

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX