值和引用类型
值类型
基本类型 包括 byte,short,int,long,float,double,boolean和char。
Java方法参数传递的到底是值还是引用?
基本类型传的是变量的值。
所以,当你将它们传递给一个方法时,你基本上是对变量的值进行操作,而不是对变量本身进行操作。
最常见的说法是基本类型传的是值,对象传的引用。
下面是一个例子:
public class MyJavaClass {
public static void main(String[] args) {
int x = 10;
addTo(x); // 这时候等价于 addTo(10)
System.out.println(x);
}
static void addTo(int num) {
num = num + 1;
}
}
// 输出 "10"
在上面的例子中,方法取其参数的值,这就是为什么原始变量x不受影响,10仍然是x的值。
引用类型
引用类型传递的是对象地址值,而非对象或副本。
当你使用构造函数创建对象时,你将创建一个引用变量。
例如,我们要定义一个Student类:
public class MyJavaClass {
public static void main(String[] args) {
Student j;
j = new Student("Jing");
j.setAge(18);
addTo(j);
System.out.println(j.getAge());
}
static void addTo(Student s) {
s.setAge(s.getAge() + 1);
}
}
//输出 "19"
addTo方法将Student对象作为参数,并增加其属性。
由于 j 是引用类型,因此该方法影响对象本身,并且可以更改其属性的实际值。
提示:数组和字符串也是引用类型。