`

java 的pass by value(传值)

阅读更多

这里写一下java的值传递

参数是基本类型的时候:

class param {

     public static void main( String[] args ){
           int x = -1 ;
           change( x );
           System.out.println("x = " + x );
     }

     public static void change( int x){
          x = 10 ;
          System.out.println("change(), x = " + x );
     }
}

 以上代码的结果大家应很清楚吧。

 但是参数是对象的时候,可能就有点人迷糊了。

public class handleTitle {
	public static void main(String[] args){
		handleTitle.test t = new handleTitle().new test(1,1);
		System.out.println(t.getX());
		System.out.println(t.getY());
		put(t);
		System.out.println(t.getX());
		System.out.println(t.getY());
	}
	public static void put( test t){
		t.setX(5);
		t.setY(6);
	}
	class test {
		int x ;
		int y ;
		public test( int x , int y){
			this.x = x;
			this.y = y ;
		}
		public test(){
			
		}
		void setX(int xx){
			x = xx;
		}
		int getX(){
			return x;
		}
		void setY(int yy){
			y = yy;
		}
		int getY(){
			return y;
		}
	}
}

 测试结果是:

 1
 1
 5
 6

 

从本质上来说,object reference是按值传递的,因此可以修改参数对象的内部状态,但是对参数对象重新赋值,没有意义

分享到:
评论

相关推荐

    浅谈Java中方法的参数传值.zip

    Java中,方法参数的传递主要有两种方式:值传递(Pass by Value)和引用传递(Pass by Reference)。不过,Java并没有真正的引用传递,而是通过对象引用来模拟引用传递的效果。下面我们详细讨论这两种方式。 2. 值...

    基于传值test.rar

    在Java中,函数调用时参数的传递有两种方式:传值(Pass by Value)和传引用(Pass by Reference)。传值是指函数接收的是变量副本的一个拷贝,而不是实际的变量本身。这意味着,当函数内部修改参数时,不会影响到...

    java学习参数传递 杨辉三角,大学java作业题

    在Java中,函数参数的传递方式只有两种,即按值传递(Pass by Value)和按引用传递(Pass by Reference)。实际上,Java中所有的参数传递都是按值传递,这意味着当你将一个变量传递给方法时,方法接收到的是该变量的...

    JAVA面试题宝典(英文)

    - 传值(Pass By Value):传递的是变量的副本,对副本的修改不会影响原始变量。 - 传引用(Pass By Reference):传递的是变量内存地址的副本,因此可以通过副本修改原始变量的值。 6. **Map与HashMap**: - `...

    RMI.rar_remote_分布式 通信

    Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程...后来,CORBA增加了传值(pass by value)功能,以实现RMI接口。然而RMI-IIOP和JRMP实现的接口并不完全一致。

    Java计算机语言函数应用

    - 传值调用(Pass by Value)是Java默认的参数传递方式,意味着函数内部无法改变实参的原始值。 3. **返回值** - 函数可以有返回值,也可以没有。如果函数有返回值,需要指定返回类型。没有返回值的函数使用`void...

    《HEAD FIRST JAVA》笔记

    - Java使用传值调用(pass-by-value),即传递给方法的是实参的一个副本。如果是引用类型的参数,则传递的是引用的副本。 - **封装(encapsulation)**: - 使用setter和getter方法可以增强对象的安全性。通过将实例...

    Java中带参无返回值方法的使用共4页.pdf.zip

    Java采用传值调用(pass-by-value)机制。这意味着当参数传递到方法时,实际传递的是变量的副本,而不是变量本身。因此,方法内部对参数的修改不会影响到方法外部的变量值。 3. 方法调用: 调用无返回值方法时,只...

    javascript中的变量是传值还是传址的?

    标题中的4个术语,对应的英文分别是:shallow copy(注意,不是shadow copy)、deep copy、pass by value、pass by reference(或pass by address)。传址和传引用是一回事。 一门编程语言的核心是数据结构,粗略来...

    java笔记整理

    - **传引用与传值的区别**:Java不支持传引用(`pass-by-reference`),这与C++等语言有所不同。传引用是指传递变量的地址,而不是其值。 #### 四、方法重载与构造方法重载 - **方法重载概述**:方法重载(Overloading...

    秒懂参数如何具体运用的介绍

    根据参数是否可变,参数又可分为传值参数(Pass by Value)和传引用参数(Pass by Reference)。C语言默认采用传值方式,而有些语言如C++支持传引用。 二、C语言中的参数运用 在C语言中,参数是函数接口的一部分,...

    一份超级全面的PHP面试题

    SELECT username, posts FROM members ORDER BY posts DESC LIMIT 10; ``` ### 23. 请说明PHP中传值与传引用的区别。什么时候传值什么时候传引用?(2分) - **传值**:函数内部对参数的修改不会影响到外部变量...

    超级全面的PHP面试题整理集合第1/2页

    ### 22、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分) **SQL示例:** ```sql SELECT username FROM members ORDER BY posts DESC LIMIT 10; ``` ### 23.请说明php中...

Global site tag (gtag.js) - Google Analytics