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

news/2024/5/18 22:40:35

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


http://www.niftyadmin.cn/n/707418.html

相关文章

android购物车遇到的问题

近期 做购物车的时候 ,遇到几个问题。如今 总结例如以下: 1:不让listview复用组件(购物车。或者有特殊操作的时候): 自己保存全部的view对象 public View getView(final int position, View convertView, ViewGroup parent) {fina…

java 通用数组_如何在Java中创建通用数组?

由于Java泛型的实现,因此不能有以下代码:public class GenSet {private E a[];public GenSet() {a new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation}}如何在保持类型安全的同时实现此目的?我在Java论坛上看到了这样的解决方…

荒野大镖客2云存储失败_荒野大镖客2天气系统云雾分帧处理细节

在荒野大镖客2分享在SIGGRAPH2019的文章里面有几张PPT是关于云雾是怎么优化Raymarch效率的,我先按照我的理解说一遍到底这几页PPT在讲什么。首先是告诉我们因为体素不能表现很多高频细节,所以从体素的远端开始要进行视口的Raymarch,然而全分辨…

java注释工具_Java注释和javadoc工具

本篇文章分为两部分:注释(基础)和注释(进阶)。在注释(基础)部分,主要讲述注释的概念、类别、写注释的规范、细节和作用;在注释(进阶)部分,主要讲使用javadoc开发工具生成一个开发者文档。内容概览:注释基础注释的概念注…

LoadRunner监控图表与配置(二)监控运行状况和交易状况

1、在左侧Available Graphs视图中展开Runtime Graphs节点,选择其中一种类型添加至控制器运行标签的界面。 2、在图中显示的空白区域点击右键,在弹出的快捷菜单中选择configure选项,弹出如下图表配置窗口。设置完成后点击“OK”,更改的图表属性…

配送区域是什么意思_Wish卖家如何进行配送设置

本文将向你介绍Wish的配送体系,包括配送政策、运费设置,和关于配送设置的小技巧。关于配送亲爱的Wish商户,在店铺维度上,你可选择以下三种配送范围之一:仅配送至美国、全球配送或配送至选定国家。快速可靠的产品配送是…

java 8 新特性equal使用_Java 8 新特性:4-断言(Predicate)接口

(原)这个接口主要用于判断,先看看它的实现,说明,再给个例子。/** Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*/package java.util…

oscached

介绍 提供了在现有JSP页面之内实现快速内存缓冲的功能,是一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对…