堆:也叫动态内存,相当于一个内存池子,在java中创建对象的时候,就从堆里面拿出一块来存放对象;当GC(垃圾回收)回收对象的时候,又把对象占用的内容还给堆。
举个例子:堆就好比一个面团,类就好比一个馒头印子,用印子从面团中取出一小块面团,印成馒头,这个馒头就是这个馒头印子类产生的对象了。当无限的创建馒头的时候,这个面团总会被用光的,这个时候就不能在创建新的馒头了。
所有GC就有存在的必要了,当对象不被持有的时候,GC就会把对象还给堆。也就是,当这个馒头没有被使用,这个馒头就变成小面团,还给面团。
栈:也是一段内存,但是这段内存比较有特点,遵循一个先进后出的规则。
举个例子:吃过罐装的薯片吧,薯片一片一片的放到罐里面去,想想,最先放进去的是不是放在罐的最底部。现在一片片把薯片取出来,是不是要从最顶部开始去,也就是最后放进去的,最先取出来。这个薯片放进去和取出来的这个过程,就是栈的工作原理啦(先进入的后出来,后进入的先出来)
在java中的栈:栈的原理明白了,其实只要是计算机只要是编程语言,什么堆什么栈都是一样的,基本作用也一样。java中可以认为,栈用来存放局部变量的。
public void fun(){
int i=0; //i 是一个局部变量,存放在栈里面的
Object obj = new Objec(); //obj 是一个对象应用,同样也是一个局部变量,存放在站里面的,但是obj指向的对象,在存在堆中
}
什么是堆栈,这可是两个问题哦,
我用C++说一下:
一个程序要运行,系统会给该程序分配一定的空间,其中就包括堆和栈,都是用来存放程序中的变量,同时栈的功能更多,比如说在递归中,虚函数列表中,都有栈的影子
语句1: int a,b;
语句2: char str1[100];
语句3: char* str2 = new char[100];
语句1的两个变量都是存放在栈里
语句2的str1也是存放在栈里
语句3的str2存放在堆里
可以简单的说,不是用 new 申请空间的局部变量都是存放在栈里 ,注意是局部变量,全局变量不是!
通俗的说下堆和栈:
比如说一个慈善家建了一栋楼(栈),没地方睡的人(局部变量)都可以去那里度过一晚上,睡一晚了就走了.
但是在旅馆(堆), 你不能随便就进去睡一晚,要先给钱拿到钥匙(new申请空间),然后睡完了还要把钥匙还回去(释放空间);
首先堆栈是计算机为程序分配的内存空间,用来存储数据的。
在java中因为我们不直接操作内存,所以并不需要考虑指针的问题
在java中堆和栈也是用来存储数据,其中栈存储的引用,堆存储的对象
如:Student s = new Student("张三");
s在栈中 张三在堆
Jav图书馆的含义?
在Jav图书馆中,程序员们可以通过通俗易懂的语言来了解Java的基本语法,以及如何使用Java进行对象、文件、流、网络等方面的编程。同时,Jav图书馆还提供了Java高级开发的教程,包括多线程、IO、类加载和反射、JDBC、网络编程、Socket等众多高级开发知识点,并且还提供了大量的Java程序设计案例,帮助程序员们...
学习java 3年了,感觉对java仍然很模糊,想学精java,可是就是不知道该...
是向大家推荐banq的网站,他把GOF的23种模式以通俗易懂的方? 式诠释出来,纯Java描述,真是经典中的经典。有时间再研究一下MVC结构(把Model-V? iew-Control分离开的设计思想)吧,现在很流行的Structs就是它的一种实现方式,不? 过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC? 结构。
如何正确掌握Java的学习方法?
对初学者来说提升代码质量的唯一途径就是多敲代码,哪怕是一个非常简单的问题,也要将它用代码实现并运行,这才是学习编程的正确之路。靠眼睛看是学不会编程的,只有用手练才能让你更好的学习编程。三、学会记笔记,把自己的想法和灵感记下好记性不如烂笔头,当我们在学习中你可能灵光一闪,有了一个特别好的想法和灵...
怎样学习JAVA
1、Java SE部分 初级语法,面向对象,异常,IO流,多线程,Java Swing,JDBC,泛型,注解,反射等。2、数据库部分,基础的sql语句,sql语句调优,索引,数据库引擎,存储过程,触发器,事务等。3、前端部分, HTML5 CSS3 JS, HTML DOM Jquery BootStrap等。4、Java EE部分,Tomcat和Nginx服务器搭建...
新手如何学习编程?
学编程入门建议:1.学编程要从根本出发,从理论上来说,需要广泛的阅读。了解算法的博大精深和计算机的基本理论。2.从实践上来说,需要有广泛的练习,练习的广泛在于练习不同的内容。然后就是创新精神和数学思维能力,这些都是需要培养的。基础要打好学编程要具备一定的基础。3.逻辑思维能力的培养、学...
简单的读课外小知识
一、课外阅读有助于学生形成良好的道德品格和健全的人格。 二、课外阅读有助于在读中积累语言。 三、课外阅读有助于理解和运用祖国语文。 四、课外阅读有助于培养自主学习的良好习惯。 蕴含了丰富的人生哲理。 \/link?url=q4LstP-NjaVXAgoACJbia0zug_ 3.如何有趣读书,我有5个简单的小方法 五大方法: ...
请你用高中生物知识解释一下为什么哭过之后,眼睛会变肿?(最好能有科学...
楼主您好,我将尽力为您解释为什么哭过之后眼睛会变肿。首先,人的消化道、呼吸道、肺泡腔与外界直接相通,属于人体的外界环境。而汗液、尿液、泪液、消化液等则与外界直接接触,它们并不属于内环境,也不是体液。其次,泪液是一种弱酸性的透明无色液体,其成分主要是水(约占98.2%),同时也含有少量...
银行承兑汇票是什么意思?通俗易懂些最好
银行承兑汇票是一种常用的支付和结算工具,它由银行作为担保人进行承兑,具有高度的信用保障。下面将详细解释这一概念:1. 基本定义:银行承兑汇票是由银行承诺在将来某一时间无条件支付给持票人的票据。简单来说,就是企业或个人在购买商品或服务时,通过银行承诺支付款项的方式获得对方的信任,从而获得...
致命的均衡的介绍
哈佛发生了凶杀案,主人公运用经济学基础原理作为分析推理的思考逻辑,最后查出真凶。书中通过各种现实生活中的案例将深奥的经济学基础原理解释得通俗易懂,使读者在阅读侦探小说的乐趣中,发现经济学的乐趣,并产生学习兴趣。阅读本书,就像是在读柯南·道尔的《福尔摩斯探案》时,顺带了解雪茄灰的化学成分...
Asp,php,jsp在网站中各是起什么作用的?
JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病-- 脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Jav a 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Js p--Java Server Page。Jsp 可以在Serverlet和JavaBean的...