java-oop 堆栈

1  head和stack有什么区别

  栈(stack) 和堆(head)都是在内存中存放数据的地方,二者的区别在于:

  1 栈存放基本类型变量和对象应用,当超过作用域后释放,堆存放new出来额对象和数组;

  2 堆可以动态的分配内存的大小,神存期也不必先告诉编译器;java的垃圾回收器会自动回收这些没有用的数据,而存在栈中的数据大小和生存期必须是确定的,缺乏灵活性。栈的存取速度比堆要快,仅次于直接位于cpu的寄存器。堆由于要在运行时动态分配内存,存取速度慢;

  3  栈数据可以共享,如字面量3  等 ; 堆不可以

  4  栈是一种线性集合,其添加和删除元素额操作应该在同一段完成,栈按照后进先出的方式进行处理,  栈地址是连续的,可以随机访问。

时间: 2024-08-02 06:58:32

java-oop 堆栈的相关文章

初学Java6:Java OOP基础语法总结

*************** Java OOP 基 础 语 法 总 结 ************************* 1,类与对象1),类(class)是相同属性和方法的一组集合. A,类的组成:属性和方法. B,语法声明:使用class关键字,eg:public class Student{}//类名首字母大写,且必须和文件名一致 C,类的实例化:使用new关键字,eg:Student student=new Student();//声明一个Student类型的变量or实例化一个Stu

Java oop总结一

一.        对象 1.       属性 1)         属性 a)         数据类型 基本数据类型:整型(byte.short.int.long),浮点型(float.double).字符型(char).布尔型(boolean). 引用数据类型:自定义类型.数组.接口. 2)         方法 a)         方法的声明 public void method(int i,String str){ //方法体 } b)         方法的调用 //产生对象 A

Java OOP (二)

摘要: Java OOP简单介绍 (二) 1. 包装类 (Wrapper Class) JDK 1.5 提供了自动装箱 和 自动拆箱 功能. 基本数据类型和字符串之间的转换关系: 基本数据类型  -- 通过String.valueOf(primitive)转换 --->  String对象 String对象  --- 通过 WrapperClass.parseXxx()方法或利用包装类的构造器 ----> 基本数据类型 2. 处理对象 Java对象都是Object类的实例,都可直接调用该类中的

java:堆栈,队列,枚举,链表

Stack类 栈:(水杯喝水,先进后出) 栈是一种数据结构,是只能在某一端插入和删除的特殊线性表.他按照先进后出的原则存储数据 Enumeration(枚举) 1,hasMoreElements()    测试此枚举是否包含更多的元素 2,nextElements()    如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素 ----------------------------- 代码演示: package day07; import java.util.Date; impor

java OOP及相关基础知识汇总(转)

OOP 对象有三个要素 behavior 接口是怎样的,有什么方法/field可以用? state 调用方法的时候,对象会有什么反应? 只有通过调用方法才能改变一个对象的state identity 对象之间如何区分? 类的三大关系 dependence uses-a 在方法里用到的类(方法的local variable) 应当尽可能地少 Aggregation has-a 自己本身有的类(自己的field) Inheritance is-a general v.s. specialized J

Java 打印堆栈的几种方法

转自:http://www.cnblogs.com/AloneSword/p/3857423.html java 中可以通过 eclipse 等工具直接打印堆栈,但是对于某些环境中无法使用 eclipse 工具时,需要知道堆栈,如何处理呢? 介绍3种方法供选择: 方法一: package name.xu; public class CallStack { public static void printCallStatck() { Throwable ex = new Throwable();

slf4j如何打印java异常堆栈信息throwable对象

SLF4J 1.6.0 以前的版本,如果打印异常堆栈信息,必须用 log.error(String msg, Throwable t) log.info等对应方法. 如果msg含有变量,一般用String.format方法格式化msg. 如果用 error(String format, Object... arguments) 等其它方法,异常堆栈信息会丢失. 幸好,SLF4J 1.6.0以后的版本对这个不友好的异常信息log 改进了. error(String format, Object..

Java版——堆栈

1.堆栈是一种线性数据结构,先进后出. 2.应用一:在程序中匹配分隔符(在 java程序中读取一个字符,如果它是左分隔符就将他压入堆栈.如果它是右分隔符,就将他和栈中弹出的一个分隔符相比较,如果匹配,就继续处理,否则就发出了一个错误信号,停止处理) 应用二:执行一些非常大的数字的加法. 应用三:java中的jvm是基于堆栈的. 3.堆栈的数组链表实现 1 package sequence_stack; 2 3 public class sq_Stack { 4 private java.util

Java中堆栈的区别

简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存. 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用. 堆内存用来存放由new创建的对象和数组. 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理. 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C+

java中堆栈(stack)和堆(heap)

原文地址:http://blog.csdn.net/jerryao/article/details/874101 1.内存分配策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. (1)静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求 (2)栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到运行的时候才能够知道,但是规定在运行中进入一个