`

java常见的误区:基本数据类型放在栈中?

    博客分类:
  • java
阅读更多

java中的基本数据类型一定存储在栈中吗?

   首先说明,"java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的。

   下面让我们一起来分析一下原因:

   基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型在内存中的存储问题来解释一下:

   一:在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因

      在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。

         (1)当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中

         (2)当声明的是引用变量时,所声明的变量(该变量实际上是在方法中存储的是内存地址值)是放在方法的栈中,该变量所指向的对象是放在堆类存中的。

   二:在类中声明的变量是成员变量,也叫全局变量,放在堆中的(因为全局变量不会随着某个方法执行结束而销毁)。

       同样在类中声明的变量即可是基本类型的变量 也可是引用类型的变量

       (1)当声明的是基本类型的变量其变量名及其值放在堆内存中的

       (2)引用类型时,其声明的变量仍然会存储一个内存地址值,该内存地址值指向所引用的对象。引用变量名和对应的对象仍然存储在相应的堆中

 

 

  此外,为了反驳观点" Java的基本数据类型都是存储在栈的 ",我们也可以随便举出一个反例,例如:

      int[] array=new int[]{1,2};

      由于new了一个对象,所以new int[]{1,2}这个对象时存储在堆中的,也就是说1,2这两个基本数据类型是存储在堆中,

      这也就很有效的反驳了基本数据类型一定是存储在栈中~~

分享到:
评论

相关推荐

    JAVA数据类型思维导图

    本资源“JAVA数据类型思维导图”提供了一种直观的方式来理解和记忆Java中的数据类型,包括基本数据类型和引用数据类型。下面将对这两个主要的数据类型进行详细解释。 1. 基本数据类型(Primitive Data Types) - ...

    Java 数据类型常见面试题总结 · .pdf

    基本数据类型和包装类型的主要区别是,基本数据类型直接存放在 Java 虚拟机栈中的局部变量表中,而包装类型属于对象类型,存在于堆中。基本数据类型占用空间非常小,而包装类型占用空间较大。 包装类型是对基本数据...

    java方法练习.docx

    * Java 中的基本数据类型:了解整数类型和字符串类型的使用。 * Java 中的方法:了解方法的定义和调用。 6. 定义三个重载方法 max() * Java 中的方法重载:了解方法重载的概念和使用。 * Java 中的基本数据类型:...

    详解java堆和栈

    1. **存储内容**:栈中存储的是基本数据类型的变量和对象的引用,而堆中存储的是对象本身。 2. **生命周期**:栈中的数据随着方法的调用和返回而生灭;堆中的数据则随着对象的创建而存在,随着对象的不再使用而被...

    java中的栈(深层了解java虚拟机对对象的内存分布)

    Java中的栈和堆分别承担着不同的角色:栈负责快速、高效的存储和管理基本类型和局部变量,而堆则提供了更加灵活的内存管理策略,适用于各种复杂对象和动态数据结构。理解这两种内存区域的工作机制,对于编写高效、...

    关于Java栈与堆的思考

    - **数据可以共享**:栈中的数据(特别是基本类型)可以被多个变量引用,从而实现数据共享。 #### 2. 堆(Heap) 堆是Java运行时环境分配的内存区,用于存储所有由new关键字创建的对象和数组。堆的特点如下: - *...

    Java常见数据结构面试题(带答案)

    "Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的...本篇文章主要介绍了Java常见数据结构面试题,涵盖了栈、队列、链表、线性表、树、算法、数据结构等知识点,希望对广大的程序爱好者有所帮助。

    Java中的JVM基础-数据类型和堆栈_.docx

    但是基本类型、对象引用和对象本身就有所区分了,由于一个是栈中的数据一个是堆中的数据。 为什么Java中的参数传递是传值还是传引用?要说明这个问题,先要明确两点:1. 不要试图与C进行类比,Java中没有指针的概念...

    Java中int与integer的区别(基本数据类型与引用数据类型)

    首先,`int` 是Java中的一个基本数据类型,它代表整数。基本数据类型包括其他如 `byte`, `short`, `char`, `long`, `float`, `double`,以及布尔类型的 `boolean`。这些类型直接存储值,不需要创建对象,因此它们的...

    Java中堆内存和栈内存详解

    栈内存主要用于存储方法的局部变量、基本类型数据(如int、double等)以及对象引用。栈内存遵循先进后出(LIFO, Last In First Out)的原则,这意味着最后进入栈的数据将首先被弹出。具体来说: - **局部变量**:在...

    java初学经典问题记录

    - 基本数据类型直接存储在栈(stack)中,栈内存速度快但容量有限。 - 引用数据类型则存储在堆(heap)中,堆内存容量大,但访问速度相对较慢。引用(对象的地址)存储在栈中,而对象实例存储在堆中。 4. **Java...

    解析Java栈与堆

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

    Android应用编程基础第6篇】Java语言的数据类型

    在Java中,基本数据类型的变量存储在栈内存中,而对象的引用存储在堆内存中。 接下来,让我们来看Java中的引用类型。引用类型是指向对象的内存地址的引用,它包括类、数组和接口。引用类型的变量不直接持有数据,...

    Java核心基础+Java中的数据在内存中的存储

    Java中也有包装类,如`Integer`、`Double`等,它们用于封装基本数据类型。包装类的对象也存储在堆中,其引用存储在栈中。例如: ```java Integer a = 100; // 实际上是 new Integer(100) ``` **2.4 String类型数据...

    java 对象在内存中的结构

    基本数据类型的存储主要用于栈中,对象的内存模型主要用于堆中,对象实例化时的内存模型则是将对象的引用变量分配内存空间,并将其初始化为各数据类型的默认值。 了解 Java 对象在内存中的结构可以帮助程序员更好地...

    JavaGuide面试突击版v3.0.pdf

    3. Java的数据类型:基本数据类型、引用数据类型、数组、集合等 4. Java的运算符:算术运算符、比较运算符、逻辑运算符、赋值运算符等 Java集合 1. Java集合框架(Java Collections Framework):ArrayList、...

    线性表,单链表,栈 java实现

    线性表、单链表和栈是数据结构中基础且重要的概念,它们在计算机科学和软件工程中扮演着核心角色。下面将详细解释这些概念及其Java实现。 **线性表** 是一种基本的数据结构,它是由n(n>=0)个相同类型元素构成的...

    java中堆和栈的区别.pdf

    Java中的数据类型有两种:基本类型和包装类数据。基本类型包括int、short、long、byte、float、double、boolean、char等八种,定义方式是通过诸如int a = 3; long b = 255L;的形式来定义的。这些基本类型的变量存的...

    java常见面试题(史上最全最经典-希望对你有用)

    ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。equals方法是用于比较两个独立对象的内容...

    Java版数据结构代码,栈,动态数组,队列,链表,二叉树

    本资源提供了Java实现的数据结构代码,包括栈、动态数组、队列、链表和二叉树,这些都是计算机科学中最基础且重要的数据结构。 1. **栈(Stack)**:栈是一种“后进先出”(LIFO)的数据结构,常用于表达式求值、...

Global site tag (gtag.js) - Google Analytics