码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 深入理解Java基本数据类型与引用数据类型


    深入理解Java基本数据类型与引用数据类型

    • Java数据类型
      • 基本类型(primitive type)
      • 引用类型(reference type)
      • Java中基本数据类型和引用数据类型的存放位置
      • 栈和堆
        • 栈和堆的特点
      • 当在方法中声明变量(局部变量)
      • 在类中声明的变量(成员变量/全局变量)

    Java数据类型

    基本类型(primitive type)

    基本数据类型 八种:boolean、char、byte、short、int、long、float、double

    引用类型(reference type)

    什么是引用类型:如果一个变量中存储着另一块内存的地址,那么就称该变量是某对象的引用。

    java里面数据类型除了基本类型之外,其他类型都是引用类型
    引用类型 三种:类、接口、数组

    声明任何类型的变量,都会在在内存中分配一定的空间。

    Java中基本数据类型和引用数据类型的存放位置

    对于基本数据类型的存放文职不能都说是存储在stack中,对于基本数据类型来说,存储在栈中还是在堆中,这取决于基本数据类型声明的位置。是声明在方法中还是声明在类中。

    在此之前先明确一下栈和堆的基本概念和特点。

    栈和堆

    栈和堆是两种数据结构,都只能在一端对数据进行插入和删除等操作。
    在java中栈和堆都是用来在内存中存储数据的地方。
    栈,是先进后出。
    堆,先进先出。

    栈和堆的特点

    栈,存储速度比堆快,它的生命周期和大小都是确定的,不能够动态变化。
    栈数据在多线程或者多个栈之间不可以进行共享
    在栈中多个值相等的变量可以指向同一个地址
    堆可以动态地分配内存的大小,生命周期也是动态的
    堆是所有线程共享的内存区域。
    并且java的垃圾回收期GC对自动的回收不在使用的堆数据
    堆的缺点是,在运行的时候动态分配内容,存取速度相对于栈来说比较慢

    当在方法中声明变量(局部变量)

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

    在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。
    (1)当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中
    (2)当声明的是引用变量时,所声明的变量(该变量实际上是在方法中存储的是内存地址值)是放在方法的栈中,该变量所指向的对象是放在堆类存中的。

    在类中声明的变量(成员变量/全局变量)

    放在堆中的因此全局变量不会随着某个方法执行结束而销毁
    同样在类中声明的变量即可是基本类型的变量 也可是引用类型的变量
    (1)当声明的是基本类型的变量其变量名及其值放在堆内存中的
    (2)引用类型时,其声明的变量仍然会存储一个内存地址值,该内存地址值指向所引用的对象。引用变量名和对应的对象仍然存储在相应的堆中.

    public class Person {
        int a;
        Person xiaoMing;
        @Test
        public  void test() {
            Person xiaoHong=new Person();
            int b;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

  • 相关阅读:
    Google Earth Engine(GEE)——对ndvi数据进行排序并获取倒数第二个值
    Mybatis 常见面试题
    树状图怎么画?推荐这个好用的在线树状图软件!
    【论文阅读】Scene Text Image Super-Resolution in the Wild
    前端的那些基本标签【a table tr caption image等等......】
    yolov8训练自己数据集报错解决汇总
    解决Cannot resolve symbol ‘MybatisPlusInterceptor‘
    大数据管道聚合并分页 有什么调优方案
    如何快速创建SQL Server数据库服务并远程连接?
    HDU - 1114 Piggy-Bank(完全背包)
  • 原文地址:https://blog.csdn.net/wangwei021933/article/details/126374796
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号