欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

值类型和引用类型做参数时的值会不会影响实参

程序员文章站 2022-05-22 21:22:48
...

我们知道,一个方法是可以有形参的,也就是方法名后括号里的参数,当我们调用此方法,并向里面传入参数时,也就是实参,那这个实参会不会改变呢?

当我们传入int类型的值时,无论传入的形参是多少,他本身的实参并不会改变,八大数据类型都为值类型。

当我们传入引用类型的值时,他本身的实参会根据方法里的语句做出改变。

还有一种引用类型,他非常特殊,他就是String,String虽然是引用类型,但是他在调用方法时,确确实实的不会改变他自身的值。接下来我们用图来解释一下:

值类型和引用类型做参数时的值会不会影响实参

接下来我们用代码写一下:

public static void main(String[] args) {
		
	/*
	* 值类型
	*/
	int a = 10;
	System.out.println( "调用前:"+ a );
	changNum(a);
	System.out.println( "调用后:"+ a );
	/*
	 * 字符串类型
	 */
	String str = "ABCD";
	System.out.println("调用前 :" + str );
	changString(str);
	System.out.println("调用后 :" + str );
						
	/*
	 * 对象类型
	*/
		
	Student s1 = new Student();
	s1.setAge(10);
	s1.setName("张三");
	System.out.println("调用前:"+ s1);
	changStudent(s1);
	System.out.println("调用后:"+ s1);
		
}
	
	public static void changNum ( int num ) {
		num ++ ;	
	}
	public static void changString ( String str1 ) {
		str1 += "1234";
		//字符串不允许在原地址上进行修改,每次都新建地址进行操作。
	}
	public static void changStudent ( Student s ) {
		s.setAge(100);
		s.setName("李四");	
	}

执行的结果为:

调用前:10
调用后:10
调用前 :ABCD
调用后 :ABCD
调用前:Student [name=张三, age=10]
调用后:Student [name=李四, age=100]