`
anyitzy
  • 浏览: 10639 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java堆与栈区别

阅读更多

①Java数据类型: 基本数据类型:4个整数类型:byte、short、int、long 2个浮点类型:float、double 1个字符类型:char 引用数据类型:String s; s=new String("Hello world"); Mouse m;

 

②基本数据类型在内存中:只占1块内存。引用数据类型在内存中:占2块内存

 

③堆内存装的是所有new出来的东西。堆内存比较大,用来动态分配内存用的。

 

④例子: String s; //JVM根据内容“hello”查找对象,如果没找到,则在heap堆中创建一个新对象并将其赋值给s; //否则使用已经存在的对象 s=new String("Helllo world"); //使用new语句创建一个String类型的对象,并让s指向它,以后可以通过s完成对其操作 //JVM直接在heap上创建新的对象,所以在heap中会出现内容相同,但地址不同的String对象

 

⑤例子: Dog d=new Dog(); 实际上new出来的Dog在堆内存里面,变量d是对Dog这个对象的引用,d可能在堆内存里面,也可能在其它内存里面;

 

⑥ * 类是一个人静态的概念,他是放在代码区里面 * 对象是new出来的,位于堆内存中,只有在运行期间,才知道内存要分配多大,所以把对象放在堆内存中,堆内存比较大;如果对象不用了 ,垃圾收集器收回去; * 类的每个成员变量在不同的对象都有不同的值(除了静态变量),而方法只有一份,执行的时候才占用内存,方法不调用就是一堆代码

 

⑦ 问题:为什么对象位于堆内存? 因为堆内存是用来动态分配内存的,只有在运行的过程中,我们才new一个对象放在堆内存中。运行过程是指输出:java HelloWorld命 令 ,而不是javac HelloWorld.java编译命令。

 

 

⑧:局部变量:方法或语句块内部定义的变量 成员变量:方法外部、内的内部定义的变量

 

⑨ C c1=new C(); C c2=new C(); c1、c2都是方法里定义的变量,为局部变量,存在: 栈stack

 

⑩ 成员变量、对象都存在: 堆heap 局部变量存在: 栈stack static变量和字符串常量存放在: 数据块 代码存放在: 代码块

 

①① 使用new+构造方法,创建一个新的对象 构造方法是定义在Java类的一个用来初始化对象的函数 构造方法与类同名且没有返回值

 

①② 方法调用:值传递 int date=9 ; test.change(date) public void change(int i) { i=1234 } 通过change()是改变不了date最初的值的。 只有通过setDate()方法才可改变

 

①③ 方法一旦执行完毕,由方法分配的局部变量的内存将自动消失;Dog d=new Dog();这个局部变量不是马上就消失,而是待会由垃圾收集器回收消失

 

①④ public Dog(String color,int leg){ this.color=color; this.leg=leg; } 形参和局部变量同等对待,放在栈内存中

 

 

0
4
分享到:
评论

相关推荐

    Java堆和栈的区别

    "Java 堆和栈的区别" Java 堆和栈是 Java 中的两种内存管理机制,它们都是 Java 用来在 RAM 中存放数据的地方。但是,它们有很多不同之处。 Java 堆是一个运行时数据区,类的对象从中分配空间。这些对象通过 new、...

    区别Java中堆与栈区别Java中堆与栈

    Java 中堆与栈的区别 Java 中的堆和栈是两个不同的内存区域,分别用于存放不同类型的数据。堆是一个运行时数据区,类的对象从中分配空间,通过new、newarray、anewarray 和 multianewarray 等指令建立,垃圾回收器...

    Java中堆内存与栈内存分配浅析

    ### Java中堆内存与栈内存分配浅析 #### 一、引言 在Java编程语言中,内存管理是一项至关重要的技术。程序运行时所使用的内存主要分为两类:堆内存(Heap Memory)和栈内存(Stack Memory)。理解这两种内存类型的...

    详解java堆和栈

    ### 详解Java堆和栈 #### 一、引言 在Java编程中,理解堆(Heap)和栈(Stack)的概念及其区别对于程序员来说至关重要。本文将深入剖析这两个概念,并探讨它们之间的差异以及如何影响程序的运行。 #### 二、Java...

    Java中的堆和栈

    #### 四、堆与栈的区别 1. **生命周期**:栈内存中的变量在其定义的方法执行结束后就会被销毁;而堆内存中的对象直到没有引用指向它才会被垃圾回收。 2. **内存分配**:栈内存分配和释放速度快,而堆内存的分配涉及...

    深入堆与栈 堆与栈的区别

    在编程领域,特别是对于Java这种广泛使用的语言而言,理解内存管理中的“堆”与“栈”的概念及其区别至关重要。这不仅有助于我们更高效地编写代码,还能帮助我们在调试过程中更快地定位问题。 - **栈(Stack)**: ...

    java中堆与栈的区别

    ### Java中堆与栈的区别详解 #### 一、概述 在Java编程语言中,了解堆与栈的区别对于理解和管理程序的内存使用至关重要。本文将详细解释Java中的堆和栈的概念,以及它们之间的区别。 #### 二、Java堆 Java堆是...

    Java 中的堆和栈

    在Java中,内存主要分为两个区域:栈内存和堆内存。这两部分内存各自有不同的特点和用途。 首先,栈内存主要负责存储基础数据类型(如byte, short, int, long, float, double, boolean, char)和对象的引用。当在...

    内存中的堆与栈区别 内存中的堆与栈区别

    "内存中的堆与栈区别" 在程序中,内存分为四块,其中有一块用于存放代码,这里我们不讨论,这四块分别是:全局区(静态区)、文字常量区、栈区和堆区。 全局区(静态区) 全局变量和静态变量都存储在这块区域,与...

    区别Java中的堆与栈

    标题:“区别Java中的堆与栈” 描述:本文深入探讨了Java中堆和栈的基本概念、工作原理以及它们之间的显著差异,特别关注了它们在资源管理、性能表现和内存分配策略上的不同。 ### Java中的堆(Heap) Java的堆是...

    解析Java栈与堆

    Java栈与堆的存储机制解析 Java栈和堆是Java语言中两个最基本的存储机制,它们都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 1. 栈的存储机制: 栈的优势是...

    关于Java栈与堆的思考

    关于Java栈与堆的深入解析 Java作为一种广泛使用的编程语言,其内存管理机制是学习者必须掌握的核心概念之一。在Java中,栈(Stack)与堆(Heap)是用于存储数据的主要区域,它们各自承担着不同的职责,对于理解...

    JAVA中堆和栈的概念

    声明变量是在栈空间开辟了一个位置,实例化之后才会开辟一个堆空间 被赋予空值的话则是将栈空间地址指向一个新的堆空间位置

    Java堆、栈和常量池详解

    易混点完美解析

    堆和栈详解

    在深入探讨这两个概念之前,我们需要明确一点:堆和栈在内存结构上有着本质的区别。 栈(Stack)是一种线性数据结构,其特点是后进先出(Last In First Out, LIFO)。在程序执行时,系统会为每个线程分配一个栈,...

    Java数据结构之栈与堆

    Java 数据结构中的栈和堆是两种重要的内存管理方式,它们在程序执行时分别扮演着不同的角色。栈主要负责存储程序运行过程中的局部变量、函数调用等信息,而堆则是用于动态分配对象内存的区域。 栈的优势在于其存取...

    Java中堆和栈的区别

    ### Java中堆和栈的区别详解 #### 一、引言 在Java编程语言中,内存管理是一项非常重要的任务。为了确保程序的高效运行以及资源的有效利用,Java虚拟机(JVM)将内存划分为堆和栈两种类型。这两种内存区域各自承担着...

    Java中堆与栈的内存分配.pdf

    "Java中堆与栈的内存分配" Java是一种基于对象的编程语言,它的内存管理机制是自动的,开发者不需要手动分配和释放内存。但是,了解Java的内存管理机制是一件非常重要的事情。这篇文章将对Java中的堆和栈的内存分配...

    java 栈和堆,Java自动管理栈和堆

    栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。

Global site tag (gtag.js) - Google Analytics