基本类与引用类

本文详细解析了Java中基本类型与引用类型的存储方式和传递机制的不同,通过实例展示了基本类与引用类在方法调用时的行为差异,并介绍了基本类型如何转换为引用类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本类与引用类(java)

一,区别

基本类很单纯,就他自己。可以认为是一种特殊的类(class)
引用类就是一种比较正常的class,它里面包装了更小的部分。

就存储方式而言

不像基本类那么单纯,引用类的存储比较复杂。
它仅仅把地址存于栈内存,而把内部细节存于堆内存。

就引值传递而言

基本类作为传入方法(method)的参数时,是复制一份传入,故在改method里对之进行修改时,若不靠返回值,方法执行后,你会发现外面的基本类不会变。
但是,作为引用类,它传入的是它的地址(可以这么理解),在method里面可以通过引用对之进行操作,于是执行完方法后,引用类已经发生了改变。

public class Main{
    public static void main(String[] args){
        int num1 = 5;
        int num2 = 3;
        int[] nums = {5, 3};
        ExchangeFirst(num1, num2);
        System.out.println("第一次交换的结果:" + num1 + "\t" + num2);//此时打印,顺序没有发生改变
        ExchangeSecond(nums);
        System.out.println("第二次交换的结果:" + nums[0] + "\t" + nums[1]);//此时打印,顺序交换
    }

    public static void ExchangeFirst(int num1, int num2){//在这个方法里仅仅对int类的copy进行处理,故method外的num1,num2没有交换
        int temp = num1;
        num1 = num2;
        num2 = temp;
    }

    public static void ExchangeSecond(int[] nums){//此处传了nums
        int temp = nums[0];
        nums[0] = nums[1];
        nums[1] = temp;
    }
}
     

2,联系

int,double等基本量,可已被包装。
For instance, int -> Integer, double -> Double, char -> Character…
包装后他们就光荣地成了引用类的一员了,哈哈~~~~~

double num1 = 3.58;
Double dnum1_1 = num1;//第一种包装方法,自动包装,jdk1.5以后就可以
Double dnum1_2 = valueOf(num1);//第二种包装方法
Double dnum1_3 = 3.58;//其实就是方法1
Double dnum1_4 = new Double("3.14");//方法3,其实不算严格包装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值