`

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

    博客分类:
  • java
阅读更多

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

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

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

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

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

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

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

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

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

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

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

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

 

 

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

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

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

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

分享到:
评论

相关推荐

    200道Java面试常见题目.pdf

    * 说一下Java的基本数据类型和包装类。 * 什么是Java的访问修饰符?Java中有哪些访问修饰符? * 什么是Java的接口?接口和抽象类有什么区别? * 什么是Java的多态性?多态的实现方式有哪些? * 什么是Java的异常处理...

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

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

    Java语言编写的数据结构-栈实现

    在这个主题中,我们将深入探讨如何在Java中实现栈这一基本数据结构,具体包括顺序栈(stack_SqStack)和链栈(stack_SLinkList)。 栈是一种后进先出(Last In First Out, LIFO)的数据结构,常用于临时存储和快速...

    Java中的各种数据类型在内存的的存储方式

    Java中的数据类型可以分为基本类型和引用类型两种。基本类型包括整数、浮点数、字符、布尔值等,引用类型包括类、数组、接口等。不同的数据类型在内存中的存储方式也不同。 基本类型在栈中分配内存空间,生存期是...

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

    - 数组:无论是基本数据类型的数组还是对象类型的数组,其元素都位于堆内存中。 - 复杂数据结构:例如链表、树等。 ##### 2. 栈内存 栈内存主要用于存储基本数据类型的变量、对象引用以及方法调用时所需的局部...

    Java中的堆和栈

    3. **数据类型**:栈内存主要用于存储基本数据类型和对象引用;而堆内存主要用于存储通过`new`创建的对象实例。 4. **数据共享**:栈中的数据可以被共享,而堆内存中的数据则是每个对象独立的。 #### 五、示例解析 ...

    基本数据类型和包装类型1

    在Java编程语言中,数据类型是程序设计的基础,它们分为两大类:基本数据类型和引用数据类型。基本数据类型包括字节(byte)、短整型(short)、整型(int)、长整型(long)、浮点型(float)、双精度浮点型...

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

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

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

    "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中堆和栈的区别.pdf

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

    Java数据结构篇-链表与数组实现栈.pptx.pptx

    在这个话题中,我们将重点关注两种常见的数据结构——链表和数组,并探讨它们如何被用来实现栈这一特定的抽象数据类型。 栈是一种线性数据结构,遵循后进先出(LIFO)的原则,意味着最后进入的元素最先被移出。栈的...

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

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

    Java基础练习题400题(选择、填空、多选、简答题)

    答:Java 中的基本数据类型包括 byte、short、int、long、float、double、boolean、char 等,它们是 Java 语言的基本组成部分。 Java 测试是 Java 开发者必备的基础知识测试,通过 Java 测试可以了解自己的 Java ...

    Java数据结构之栈的基本定义与实现方法示例

    Java数据结构之栈的基本定义与实现方法示例 Java数据结构之栈是一种特殊的线性表,它只能在某一端插入和删除元素,按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶...

    数据结构-栈(Stack)介绍和Java示例代码

    数据结构中的栈(Stack)是计算机科学中一种基础且重要的数据结构,它的核心特性是遵循后进先出(LIFO)原则。栈就像一个只允许在一端进行操作的线性容器,这一端被称为栈顶。栈的操作主要有两个基本操作:压栈...

    java jvm调优浅谈

    堆中存的是对象,栈中存的是基本数据类型和堆中对象的引用。一个对象的大小是不可估计的,或者说是可以动态变化的,但是在栈中,一个对象只对应了一个 4byte 的引用。 参数传递 Java 中的参数传递是传值呢?还是传...

Global site tag (gtag.js) - Google Analytics