0
点赞
收藏
分享

微信扫一扫

java技术栈(java技术栈有哪些)


java 栈、方法栈的区别?

栈与堆都是Java用来在Ram中存放数据的地方

String a="a";这样的创建形式,在栈中主要存放一些基本类型的和对象的句柄,栈有一个很重要的特殊性,就是存在栈中的数据可以共享

String b = new String("b");堆中主要存放java对象,同时可以在堆栈中创建一个对String类的对象引用变量,也就是说:Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配,也 就是说在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。

其中的区别包括:申请空间大小、效率、存储内容上的差异呵呵。推荐你看一本书。叫深入了解JVM 那里就介绍了你问的 栈。堆。方法区。

到时候,你对多线程有了更深刻的了解。对于内存泄漏。内存溢出。

栈就是主要存放 栈帧的。每执行一个方法就发生压栈动作。所以,递归的时候是会影响内存的。而你使用for 循环就不会。因为只是存在一个栈帧中。

储存静态变量和常量的还有字符串常量池的都是方法区。

嗯。这个说的太多了。呵呵。你还是看看《深入了解Java虚拟机》 额。我有电子版。你要的话就说。你得明白栈的定义。代码执行的时候是执行一个方法,执行完,返回方法的上一个代码块继续往下执行后面的内容。这样的话是不是就是一个栈结构了?先进后出。方法一边执行,一边往栈里面存数据,等执行完了就取出数据(取出的是返回值,是最后一个存进去的 栈结构是后进先出),然后执行外面的代码。这么说你可能不明白,我给你举个例子。

int sub(int a,int b){

return a+b;

int c = sub(2,3);//注意执行这条语句的时候是不是执行了一个方法?

//那么语句执行的时候是要从左往右执行的对吧,但是事实的逻辑却是先算出来sub(2,3)这个方

//法的返回值,然后再把返回值(5)赋值给 c ,那么这个怎么实现,肯定是一个栈的数据结构,编译的时候先把”int c = “入栈,然后再把 sub(2,3),入栈,执行的时候,从栈里面取,取的第一个肯定是sub(2,3)吧?于是就计算出等于5,继续取,取出了int c =,然后就和5对接上了,就把值赋给c了。这只是一个小例子。

道理是这样,但是具体的存取可不是这样的哦。具体的存取应该分的非常细腻,应该是按照java语法的最小单位来往栈里存取的。说白了一句话,程序运行的时候的先后顺序是跟人大脑想问题的顺序一样的,但是代码不是按照这样的顺序写的(从左到右),于是就用栈结构来达到这样的效果。

这么说,明白了吗?

技术栈是什么东东

一般来说是指将N种技术互相组合在一起(N>1),作为一个有机的整体来实现某种目的。也可以指掌握这些技术以及配合使用的经验。

打比方说LAMP LNMP MEAN都是常见的web技术栈

这里的栈就是英文的stack的意思(一些东西堆在一起),而非数据结构的栈的意思

举报

相关推荐

0 条评论