⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 methodspecial.java

📁 java基础教程以及代码 java base document and code
💻 JAVA
字号:
public class MethodSpecial
{
	public static void main(String [] args)
	{
		IntClass A=new IntClass(2);
		IntClass B=new IntClass(4);
		swap(A,B);
		System.out.println("A="+A.getNum());
		System.out.println("B="+B.getNum());
	}
	static void swap(IntClass i,IntClass j)
	{
		int k;
		k=i.getNum();
		i.setNum(j.getNum());
		j.setNum(k);
	}	
}

class IntClass
{
	public int x;
	public IntClass(int t) {x=t;}
	public int getNum() {return x;}
	public void setNum(int t) {x=t;}
}



/*

错误版本

public class MethodSpecial
{
	public static void main(String [] args)
	{
		Integer A=new Integer(2);
		Integer B=new Integer(4);
		swap(A,B);
		System.out.println("A="+A);
		System.out.println("B="+B);
	}
	static void swap(Integer i,Integer j)
	{
		Integer k;
		k=i; i=j; j=k;
	}	
}

我的理解是:
方法调用时,程序首先为形参分配一个空间,再把实参复制到形参中,形参和实参位于两个不同的内存空间,方法过程结束后,i的值并没有回传给A,所以A的值不变

而C++中,形参如果是指针,形参和实参指向同一个内存空间,所以i的值就是A的值

区别在于引用。在 C++ 中当传递给函数的参数是引用时,您传递的就是这个引用,或者内存地址(按引用传递)。在 Java 应用程序中,当对象引用是传递给方法的一个参数时,您传递的是该引用的一个副本(按值传递),而不是引用本身。

*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -