在java中String,对象,Integer(包装类型的)关于引用传递还是值传递

本贴最后更新于 3901 天前,其中的信息可能已经时异事殊

场景:

     大家都知道基本的数据类型,int,float等等这种是按值传递的。但是对于String,对象,Integer是怎样传递呢?

原理知识:

     如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值.

     如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。

     如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。

测试用例

   

public class Person {
	private int id;
	private String name;
public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public String getName() {
	return name;
}

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

}

public class TestBasicType {
	
	public static void methonInt(int p) {
		p =10;
	}
	public static void methonInteger(Integer p) {
		p =10;
	}
	public static void methonString(String p) {
		p ="word";
	}
	public static void methonStringObject(String p) {
		p ="world";
	}
	
	public static void methodObj(Person p) {
		p.setId(34534);
	}
	public static void main(String[] args) {
		int a =3;
		Integer b =4;
		String s ="hello";
		String sobj = new String("hello");
		Person p = new Person();
		p.setId(12312);
		TestBasicType.methodObj(p);
		TestBasicType.methonInt(a);
		TestBasicType.methonInteger(a);
		TestBasicType.methonString(s);
		System.out.println("--int-------->" + a);
		System.out.println("--Integer-------->" + b);
		System.out.println("--String-------->" + s);
		System.out.println("--StringObject-------->" + sobj);
		System.out.println("--Object-------->" + p.getId());
		
	}
}
输出结果为:
     --int-------->3
     --Integer-------->4
     --String-------->hello
     --StringObject-------->hello
     --Object-------->34534

测试说明:

           String,基本类型(int等等),包装类型(Integer等等)都是值传递

           实际的对象为引用传递。

疑问:

       在这里可能会有网友问了,包装类型,String难道不是对象么?说实话这里我也有疑惑,但是不管怎么样还是以测试结果为准。

 

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • 引用传递,值传递
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...