做个实验彻底搞明白Java中的值传递和引用传递

一、实验准备

  1. 基本类型和引用类型
    基本类型:byte(字节)、short(短整型)、int(整形)、long(长整形)、float(浮点型)、double(双精度)、char(字符型)、boolean(布尔型)
    引用类型:除基本类型以外的类型均为引用类型,包括对象和数组(目前知道的就只有这些)。

  2. 值传递和引用传递
    值传递: 形参是基本类型,方法调用时,实参把他的值传递给对应的形参,形参只是用实参的值初始化自己的存储单元内容,是两个不同存储单元,所以方法执行中形参数值的改变不影响实参的值。
    引用传递:形参是引用类型,方法调用时,实参是对象(或数组),这时实参与形参指向同一个地址,在方法执行中,对形参的操作就是对实参的操作,这个结果在方法结束后被保留下来,所以方法执行中形参的改变将会影响实参。

  3. String类型的不可变性
    先给个链接了解一下http://www.cnblogs.com/qingergege/p/5701011.html

    二、实验

    1. 代码
package 值传递和引用传递;

import java.util.Arrays;

public class Object {
    public int baseType = 10;
    public String str = "before";
    //public String str1 = new String("hello");
    public char[] c = {'a','b','c'};
    @Override
    public String toString() {
        return "Object [baseType=" + baseType + ", str=" + str + ", c=" + Arrays.toString(c) + "]";
    }

}
package 值传递和引用传递;
public class Main {
    public static void change(String str,int baseType,char[] c) {
        str = "after";
        baseType = 20;
        c[0] = 'd';
    }
    public static void change(Object obj) {
        obj.str = "after";
        obj.baseType = 20;
        obj.c[0] = 'd';
    }
    public static void main(String[] args) {
        Object obj = new Object();
        /***实验一***/
        System.out.println("实验一:");
        System.out.println("在改变之前,obj中的内容:");
        System.out.println(obj.toString());
        change(obj.str,obj.baseType,obj.c);
        System.out.println("在改变之后,obj中的内容:");
        System.out.println(obj.toString());
        System.out.println();
        /***实验二***/
        System.out.println("实验二");
        obj = new Object();
        System.out.println("在改变之前,obj中的内容:");
        System.out.println(obj.toString());
        change(obj);
        System.out.println("在改变之后,obj中的内容:");
        System.out.println(obj.toString());
    }
}

2.实验结果
这里写图片描述

如果有什么问题欢迎指正,QQ1743054913

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值