JAVA基本数据类型
- 基本数据类型(直接存储在栈中)
如:byte、short、int、long、char、float、double、Boolean等 - 引用数据类型(具体对象保存在堆中,栈中保存指向该对象的地址,类似C/C++的指针)
如:类、接口、数组等
值传递
指在调用函数时,将实际参数的值复制一份传递给函数,这样在函数中修改参数时,不会影响到实际参数。其实,就是在说值传递时,只会改变形参,不会改变实参。
引用传递(其实也是值传递,传递的是对象地址的值)
指在调用函数时,将实际参数的地址传递给函数,这样在函数中对参数的修改,将影响到实际参数。
综上java中只存在值传递,只存在值传递!!!
特殊String
由于String类是final修饰的,不可变,它会在内存中在开辟一块新空间。
public class Tset {
public static void main(String[] args){
String str="www";
System.out.println("调用方法前:str="+str);
changs(str);
System.out.println("调用方法后:str="+str);
}
private static void changs(String str){
str="qqq";
System.out.println("方法体中:str="+str);
}
}
结果:
调用方法前:str=www
方法体中:str=qqq
调用方法后:str=www
由于String、Integer等的封装类型为final类型,不可变,对数据的修改操作实际上是创建了一个新的对象。