您的位置:首页 > 编程语言 > Java开发

关于java中的值传递和引用传递

2016-04-28 00:00 399 查看
摘要: 通过两个小例子来分析java中的值传递和引用传递

一、java方法形参为基本数据类型时,例如 byte,short,int,long,float,double,boolean,char,此时实参传入的仅仅只是这个值,首先来测试一下java中的值传递

package com.lz.demo1;

/**
* <p>
* 测试值传递和引用传递demo
* </p>
*
* @author ZLi 2016-4-28
*
*/
public class RefrenceDemo {

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

public static void change(int a) {
a = 2;
}
}


运行结果为:

changebeforea = 1
changeaftera = 1

二、java方法形参为引用数据类型时,例如 class,interface,enum,array[]等等此时实参传入的是它的引用地址,下面来测试一下java的引用传递。

package com.lz.demo1;

/**
* <p>
* 测试值传递和引用传递demo
* </p>
*
* @author ZLi 2016-4-28
*
*/
public class RefrenceDemo {

public static void main(String[] args) {
User user = new User("lz");
System.out.println("chageBeforename=" + user.getName());
change(user);
System.out.println("chageAftername=" + user.getName());
}

public static void change(User user) {
user.setName("test");
}
}
-----------------------------------------------------------------------------------
package com.lz.demo1;

/**
* <p>
* 测试对象类
* </p>
*
* @author ZLi 2016-4-28
*
*/
public class User {
private String name;

public User(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}


运行结果为:

chageBeforename = lz
chageAftername = test

备注:并不是所有的引用类型数据都是引用传递,例如String,Integer等等,因为他们底层都是基于基本数据类型的包装,所以他们还是值传递。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: