Java经典基础案例分析:引用与赋值问题详解

在这里插入图片描述
今天遇到了一个以前做过的一个经典的java数据引用与赋值关系的题目,来给大家分享一下笔记:
(关于java引用与赋值的详解:来,直接上代码上图:)

package ide;
/**
 * @author fntp QQ358566760  鑫软java学习笔记
 */
public class SwapChange {
	public static void main(String[] args) {
//		首先测试一下test01,int数据类型能不能swap()方法赋值?
		System.out.println("======================================");
		test01();
		System.out.println("======================================");
//		再来测试一下test02,String类型能不能swap()方法赋值?
		test02();
		System.out.println("======================================");
//		最后试试数组的形式:采用引用数据类型能不能swap()方法赋值?
		test03();
		System.out.println("======================================");
	}
	public static void Swap_int(int x,int y) {
		int temp = x;
		x = y;
		y = temp;
	}
	public static void Swap_String(String x,String y) {
		String temp = x;
		x = y;
		y = temp;
	}
	public static void Swap_Arrays(int a[]) {
		int temp = a[0];
		a[0] = a[1];
		a[1] = temp;
	}
	public static void test01() {
		// TODO Auto-generated method stub
		int a = 1;
		int b = 2;
		System.out.println("目前缓存数据是:"+"a="+a+"b="+b);
		Swap_int(a, b);
		System.out.println("swap()方法转换后,缓存数据是:"+"a="+a+"b="+b);
	}
	public static void test02() {
		// TODO Auto-generated method stub
		String a = new String("scx");
		String b = new String("gd");
		System.out.println("目前缓存数据是:"+"a="+a+"b="+b);
		Swap_String(a, b);
		System.out.println("swap()方法转换后,缓存数据是:"+"a="+a+"b="+b);
	}
//	使用数组进行转换赋值
	public static void test03() {
		// TODO Auto-generated method stub
		int Array01[] = new int []{666,999};
		System.out.println("目前缓存数据是:"+"第一个数据:"+Array01[0]+"第二个数据:"+Array01[1]);
		Swap_Arrays(Array01);
		System.out.println("swap()方法转换后,缓存数据是:"+"第一个数据:"+Array01[0]+"第二个数据:"+Array01[1]);
	}
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
调试以后,可以很直观看出,是因为数据类型而导致swap()方法无法对数据进行赋值操作,因而即:

只有引用类型才可以交换。因为创建声明对象的时候,比如int,char,string等基本数据类型声明对象的数据类型的时候,是直接赋值。而引用类型直接赋的是地址,地址指向的是同一个对象,所以能改变。

在这里插入图片描述
总结:引用是用一块内存指向另一块内存!一般引用中的内容是一个内存地址!而赋值是把自己内存中的内容拷贝到指定的内存中!其中可以是内存地址也可以是数据。传值的过程只是将实参的值复制给形参,它们实参与形参并不是共享一段相同的内存,因此形参的改变只是改变自己占用的内存的值,而不改变实参。只有通过指针和引用才可以真正实现对实参内容的改变,因为此时实参与形参共享同一地址单元,形参改变值了,实参自然也要改。

===============================================================
即:java基本数据类型传值,方法不会改变实参的值。

发布了25 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44085593/article/details/104719411