(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性

1、方法参数的传递机制
①形参是基本数据类型:传递数据值
②形参是引用数据类型:
✦传递地址值;
✦特殊类型:String、包装类对象的不可变性。
2、String、包装类的对象的不可变性
示例代码如下,执行结果应该是:
jvm.Person@15db9742
0
0
hjy
setName

class Person{
    
    
	String name;
	Person(){
    
    
		System.out.println(this);
	}
	public void setName(){
    
    
		this.name = "setName";
	}
}
public class ValueAndAddrDelivery {
    
    
	public static void main(String[] args) {
    
    
		int i = 0;
		Integer j = 0;
		String name = "hjy";
		Person p = new Person();
		
		ValueAndAddrDelivery v = new ValueAndAddrDelivery();
		
		v.change(i, j, name,p);
		
		System.out.println(i);
		System.out.println(j);
		System.out.println(name);
		System.out.println(p.name);
	}
	public void change(int i,Integer j,String name,Person p){
    
    
		i = 1;
		j = 1;
		name += " brave";
		/*
		执行到此处时的内存模型:由于String的不可变性(public final class String、private final char value[];)
		1、main方法栈帧中的局部变量name指向字符串常量池中的"hjy";
		2、change方法栈帧中的局部变量name由指向"hjy"改为指向"hjy brave",但是不会影响main方法栈帧中的局部变量name的指向(还是指向"hjy")
		*/
		p.setName();
	}
}

猜你喜欢

转载自blog.csdn.net/u010425839/article/details/115220408
今日推荐