终于搞懂了Java中基本数据类型和引用数据类型的区别啦!

个人主页:shark-Gao

个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人

目前状况:23届毕业生,目前在某公司实习

❤️欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬

️个人小站 :个人博客,欢迎大家访问

1. 数据类型有哪些?

画幅图,感受下

终于搞懂了Java中基本数据类型和引用数据类型的区别啦!_第1张图片

1.1 基本数据类型

基本数据类型只有8个: byte、short、int、long、float、double、char、boolean

不同的数据类型(引用数据类型先略过),有不同的默认值和大小,来个表格感受下

数据类型 默认值 大小
byte 0 1字节
short 0 2字节
int 0 4字节
long 0L 8字节
float 0.0f 4字节
double 0.0 8字节
boolean false 1比特
char ‘\u0000’ 2字节

注意 : String不是基本数据类型!!!是引用类型

Tips:

  1. bit(比特)

    • 比特作为信息技术的最基本存储单位,非常小,但大名鼎鼎的比特币就是以此命名的,它的简写为小写字母“b”。
    • 同学们都知道,计算机是以二进制存储数据的,二进制的一位,就叫做 1 比特,也就是说,比特要么为 0 要么为 1。
  2. Byte(字节)

    • 通常来说,一个英文字符是一个字节,一个中文字符是两个字节。字节与比特的换算关系是:1 字节 = 8 比特。

    • 在往上的单位就是 KB,并不是 1000 字节,因为计算机只认识二进制,因此是 2 的 10 次方,也就是 1024 个字节。(终于知道 1024 和程序员的关系了吧?)

    终于搞懂了Java中基本数据类型和引用数据类型的区别啦!_第2张图片

1.2 引用数据类型

  1. 引用类型:都可以用null值作为值,也就是说可以在初始化的时候赋值为null,例如:String是引用类型,也就是说可以使用null作为值,即:String s = null;
  2. 引用数据类型分5种:类,接口,数组, 枚举,注解

2. Java数据类型在内存中存储

2.1 Java对象的内存模型

  1. 堆内存:保存的是对象的具体信息,在程序之中堆内存空间的开辟是通过new完成的
  2. 栈内存:保存的是一块堆内存的地址,即:通过地址找到堆内存,而后找到对象内容,但是为了分析简化,可以简单地理解为:对象名称保存在栈内存中

2.2 数据类型存储原理

1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;

2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

综上:不论是基本数据类型还是引用数据类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用数据类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上

3. 参数传递过程中的不同

3.1 传递的是基本数据类型时

如果传递的是基本数据类型,此时形参是值本身,如果修改的形参值本身,那么当形参修改时,实参不会一起发生修改。这就类似于C语言中,如果传递的是值本身而不是传递变量的指针(地址),那么当形参发送修改时,实参不变。

3.2 传递的是引用数据类型时

如果传递的是引用数据类型,实参传给形参的值是对象的引用。如果修改形参引用的对象,那么实参引用的对象也会发生同样的变化。因为实参的引用拷贝给了形参,所以实参和形参引用同一个对象,对形参引用对象的修改就相当于对实参引用对象的修改。简单理解就是此时形参传递的是一个指向实际值的地址,当形参发生改变的时候,所执行的那个值也会发生改变。

你可能感兴趣的:(Java,java,开发语言)