JAVA中的数据类型
1.基本数据类型,其变量保存的是原始值,也就是变量就是数据本身。
常见的基本数据类型:byte,short,int,long,char,float,double....
2.引用数据类型,其变量保存的是引用值,也就是保存的是对象的内存空间的首地址。
常见的引用数据类型:类,数组,String....
值传递和引用传递
1.值传递
在调用方法时实参把实际的值传递给形参。就是将实际的值复制一份给形参,在方法内对形参进行修改仅仅改变形参的值,不会改变实参的值。缺点:不适合大量数据传递。
public static void main(String[] args) {
int s=1000;
System.out.println("函数内的s的值:"+test(s) );//test(s)将是的得值传的函数test()
System.out.println("原本s的值:"+s);
}
public static int test(int s) {
return s=90;//在这里对s进行了修改,并返回s的值
}
运行结果
我们可以发现 原本的s没有发生改变,改变的是函数内的值。所以实参把实际的值传递给形参。就是将实际的值复制一份给形参,在方法内对形参进行修改仅仅改变形参的值,不会改变实参的值。
2.引用传递
在调用方法时实参把对象的地址传递给形参,形参接受的是原始值得地址。就是在方法内对形参进行修改会改变形参的值,也会改变实参的值。解决了值传递不适合大量数据传递的问题。
public static void main(String[] args) {
int[] s={1000};
System.out.println("函数内的s的值:"+test(s) );//test(s)将是的得值传的函数test()
System.out.println("原本s的值:"+s[0]);
}
public static int test(int[] s) {
return s[0]=90;//在这里对s进行了修改,并返回s的值
}
运行结果
我们可以发现在方法内对形参进行修改会改变形参的值,也会改变实参的值。
通过上面的分析我们可以得出以下结论:
1.基本数据类型传值,对形参的修改不会影响实参;
2.引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象。
3.String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。