`

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基础--基本数据类型与引用数据类型在内存结构上的区别

    在Java中,数据类型分为两种:基本数据类型(如int、char、boolean等)和引用数据类型(如对象、数组等)。 一、基本数据类型 基本数据类型在内存中存储在栈(Stack)区域,它们占据固定大小的内存,并且直接存储...

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

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

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

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

    java数据结构:顺序表+链表+栈+队+堆+二叉树+常见排序+map+set代码与板书

    Java 数据结构在计算机科学和编程中起着至关重要的作用。本文将介绍顺序表、链表、栈、队列、堆、二叉树、常见排序算法、Map 和 Set 的基本概念、实现代码及其应用场景。这些数据结构和算法是编写高效程序的基础,...

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

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

    基本数据类型和包装类型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模拟栈和队列数据结构的基本示例讲解共4页.pdf

    在编程领域,数据结构是构建高效算法的基础,而栈和队列是两种最基本且重要的抽象数据类型。在Java中,虽然已有内置的数据结构如ArrayList、LinkedList等,但理解如何模拟这些基本数据结构对于提升编程技能至关重要...

    java常见面试题合集

    - 基本数据类型与引用数据类型的区别。 - 数组:理解数组的声明、初始化和操作。 - 集合框架:ArrayList、LinkedList、HashSet、HashMap等的使用及性能对比。 - 接口与泛型:List、Set、Map接口的使用,泛型的...

    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常见面试题(史上最全最经典-希望对你有用)

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

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

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics