java 中的this和基本数据类型的值传递

public class C{
	private static int p;
	public static void main(String[] args){
		//  创建一个空参的对象
	C c1 = new C();
	System.out.println(c1.p);
		// 创建一个有参的对象
	C c2 = new C(2);
	System.out.println(c2.p);	
		/*此处输出的成员变量的值  由局部变量传入  
		注意与成员变量的值传给局部变量,局部变量的值发生变化,成员变量本身不变  这个不同*/
	c1.setP(3);		//对象调用setP()方法 这个方法将局部变量的值传给调用对象的静态变量
	System.out.println(c1.getP());
	c2.setP(4);
	System.out.println(c2.getP());
	}
	
	public C(){
		// 构造器是为了创建对象时对其初始化   这个空参的构造器中 调用了有参的构造器
		this(1);
		System.out.println("123");
	}
	public C(int p){
		// 有参构造器中将局部变量的值传给了由对象调用的成员变量
		this.p = p;
		p = 3;	//此处将局部变量的值由2 改为3 并不影响成员变量的值
	}
	public void setP(int p){
		this.p = p;		//如果不加此处的this.  依旧可以编译运行  但是局部变量并未改变成员变量的值
	}
	public int getP(){
		return p;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java,方法可以通过传入参数来接收数据,并且可以在方法内部修改传入参数的。这种方式被称为传址调用。 在方法内部改变传入数据的一种常见方式是通过改变参数的引用所指向的对象的属性。具体步骤如下: 1. 方法定义时,在参数列表声明需要被修改的参数。 2. 在方法内部,可以使用该参数进行操作,修改参数所指向的对象的属性,例如通过参数调用对象的方法或直接赋。 3. 返回的时候不需要返回修改后的参数,因为方法修改的是传入参数所引用的对象,而不是参数本身。 举个例子,假设有一个方法`changeValue(Person person)`,其`Person`是一个自定义的类,有一个属性`name`。 ```java public class Person { private String name; public Person(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Main { public static void main(String[] args) { Person person = new Person("John"); System.out.println("修改前的name:" + person.getName()); changeValue(person); System.out.println("修改后的name:" + person.getName()); } public static void changeValue(Person person) { person.setName("Alice"); } } ``` 运行结果会输出: ``` 修改前的name:John 修改后的name:Alice ``` 从结果看,方法`changeValue()`通过修改参数`person`所引用的对象的`name`属性,成功改变了传入数据。 需要注意的是,如果是基本数据类型(int、double等)作为参数传递,而不是对象的引用,那么在方法内部修改参数不会影响传入参数的。这是因为Java基本数据类型是传调用,传入参数的会被复制到方法的参数,方法对该参数的修改不会影响传入参数的。只有使用对象作为参数,才能通过改变对象的属性来改变参数的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值