- 最近在复习java基础,看到这个知识点,总结下。
- 首先将变量分为两类:
基本类型变量,包括boolean、byte、char、short、int、long、float、double。
引用类型变量,包括类、接口、数组(基本类型数组和对象数组)。
3.如果传递的值是基本类型变量,就是属于值传递,a的值不会改变。相当于把a的值复制给i,然后i的值又为2,相当于把原来的值给覆盖了。但是a的值没有任何变化
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=1;
exchange(a);
System.out.println(a);
}
private static void exchange(int i) {
// TODO Auto-generated method stub
i=2;
System.out.println(i);
}
}
4.如果传递的对象的话,就是引用传递,引用传递的话,就是将变量的内存地址传进去,这里的话就是str2同样也指向str的内存地址,所以str2改变的话,str的值也会改变,结果为ab
public class Test2 {
static StringBuffer str=new StringBuffer("a");
public static void main(String[] args) {
// TODO Auto-generated method stub
exchange(str);
System.out.println(str);
}
private static void exchange(StringBuffer str2) {
// TODO Auto-generated method stub
str2.append("b");
}
}
5.String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。str结果为a
public class Test3 {
static String str=new String("a");
public static void main(String[] args) {
// TODO Auto-generated method stub
exchange(str);
System.out.println(str);
}
private static void exchange(String str2) {
// TODO Auto-generated method stub
str2="b";
}
}