java中栈(stack)和堆(heap)的区别
鉴于网上对Java的堆栈区分,众说纷纭,有的把C++的堆栈也混进来,有的没有分清Stack,Heap的中文翻译,搞得我把Stack当作堆,Heap当作栈,混乱了!昨天参加一外企的笔试,选择英文答案时,选错了,知道答案是堆,却选择了Stack!今天,决定把两者区分清楚!
首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆。
在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语:
堆存储: heapstorage 堆存储分配: heapstorage allocation 堆存储管理: heap storage management
栈编址: stack addressing 栈变换:stack transformation 栈存储器:stack memory 栈单元: stack cell
接着,总结在Java里面Heap和Stack分别存储数据的不同。
Heap(堆)
Stack(栈)
JVM中的功能
内存数据区
内存指令区
存储数据
对象实例(1)
基本数据类型, 指令代码,常量,对象的引用地址(2)
1. 保存对象实例,实际上是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在stack中)。
对象实例在heap中分配好以后,需要在stack中保存一个4字节的heap内存地址,用来定位该对象实例在heap中的位置,便于找到该对象实例。
2. 基本数据类型包括byte、int、char、long、float、double、boolean和short。
函数方法属于指令.
=======================
引用网上广泛流传的“Java堆和栈的区
相关文档:
Windows下JAVA环境变量的设置
Windows下JAVA用到的环境变量主要有3个,JAVA_HOME、CLASSPATH、PATH。下面逐个分析。
JAVA_HOME 指向的是JDK的安装路径,如x:\JDK_1.4.2,在这路径下你应该能够找到bin、lib等目录。值得一提的是,JDK 的安装路径可以选择任意磁盘目录,不过建议你放的目录层� ......
FileInputStream fis=null;
try
{
fis=new FileInputStream("file url")
}
catch(Exception e){e.printStackTrace()}
System.out.println("File has "+ fis.available() + " bytes"); ......
1. 概述
本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。
在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。  ......
上文谈到了适配器模式,要是Targer目标角色有20方法,那么每个适配器都要去实现接口中这些方法,这样做感觉太费劲。 这种情况下,可以考虑实现个默认适配器,然后实际的实现目标角色接口的类可以集成这个默认适配器,然后重写默认实现的方法即可。 一、原理图 ......
配置java 环境变量很简单 :
首先:
1、双击“我的电脑”
2、双击“控制面板”
3、双击“系统”
4、点击“高级”选项卡,
5、点击“环境变量”按钮
其次:
1、变量名: path
变量值: C:\jdk1.6.0\bin;
2、变量名: classpath
变量值: .;%JAVA_HOME%\lib\ ......