基本数据类型与引用数据类型的区别(java基础)

🍟 八大基本数据类型

基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数
:

1,-----byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0

2,-----short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0

3,----- int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0

4,-----long:长整型,在内存中占64位,即8个字节-263~263-1,默认值0L

5-----,float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0

6,-----double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0

7,-----char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空

8,-----boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false
:

🍟 引用数据类型

引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏

:
所有的非基本数据类型都是引用数据类型, 大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
例如,String类型就是引用类型,还有Double,Byte,Long,Float,Char,Boolean,Short(注意这里和基本类型相比首字母是大写)

🍟 值传递

🍧传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值


public class Main{
   public static void main(String[] args){
     int msg = 100;
     System.out.println("调用方法前msg的值:\n"+ msg);//100
     update(msg);
     System.out.println("调用方法后msg的值:\n"+ msg);//结果还是100
   }
   public static void update(int temp){
       temp = 0;
   }
}

由上可以看出,传递基本数据类型时,形参的改变,不影响实际参数的值
:

🍧传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值


public class Main{
public static void main(String[] args){
    int[] msg = {1,2,3};
    //我们直接输出数组,返回的是他的地址值
    System.out.println(msg);//  [I@2503dbd3
    System.out.println("调用方法前值:\n"+ msg[0]);//1
    update(msg);
    System.out.println("调用方法后值:\n"+ msg[0]);//0
}
    public static void update(int[] msg){
        msg[0] = 0;
    }
}

由上可以看出,传递引用数据类型时,传递的是地址值,形参的改变,将地址里面的值改变了,影响实际参数的值

🍟 猜想:

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

:

🍟装箱和拆箱

我们将基本数据类型转化为引用数据类型的过程叫做装箱,相应的,我们把从引用数据类型转化为基本数据类型的过程叫做拆箱
:


public static void main(String[] args) {
		//创建两个Integer对象
		Integer x=new Integer("10");
		Integer y=new Integer("10");
		//创建两个int类型变量
		int m=10;
		int n=10;
		//valueOf的作用是将int变量转化成Integer对象
		//将int类型变量“手动”装箱
		Integer m1=Integer.valueOf(m);
		Integer n1=Integer.valueOf(n);
		
		//intValue的作用是将Integer对象转化成int类型
		//将Integer对象“手动”拆箱
		int v1=x.intValue();
		int v2=y.intValue();
}

:

ok,以上就是关于基本数据类型和引用数据类型的区别啦,
博主会持续更新,有问题欢迎在评论区指正诺🍊🍊🍊

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值