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

java中不同的数据类型传值到方法中,会产生什么影响

2015-04-03 01:13 681 查看
package com.marsyoung.learning.java8;

public class TestBasicType {

/**
*  如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。
*  如果在函数中改变了副本的 值不会改变原始的值.
* @param p
*/
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";
}

/**如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。
* 如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。
* @param p
*/
public static void methodObj(Person p) {
p.setId(34534);
}

/**
* 如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,
* 此时传入的参数还是指向原来的 地址,所以不会改变参数的值。
*
* @param p
*/
public static void methodObj2(Person p) {
p = null;//指向了新的地址。
System.out.println(p);
p = new Person();
System.out.println(p);
}

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());

System.out.println(p);
TestBasicType.methodObj2(p);
System.out.println(p);

}
}
<pre name="code" class="java">package com.marsyoung.learning.java8;

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;
}

}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java