值传递和引用传递

来源:互联网 发布:dva矩阵 编辑:程序博客网 时间:2024/05/16 12:38
1、对象是按引用传递的
2、Java 应用程序有且仅有的一种参数传递机制,即按值传递
3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本

4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本


1.对象就是传引用
2.原始类型就是传值
3.String,Integer, Double等immutable类型因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待。可以认为是传值。
Integer 和 String 一样。保存value的类变量是Final属性,无法被修改,只能被重新赋值/生成新的对象。 当Integer 做为方法参数传递进方法内时,对其的赋值都会导致 原Integer 的引用被 指向了方法内的栈地址,失去了对原类变量地址的指向。对赋值后的Integer对象做得任何操作,都不会影响原来对象。


class Num{int val = 0;}public class Test {public static void main(String[] args) {Integer aInteger = 6000;int a = 7;Num num = new Num();num.val = 5;System.out.println(aInteger);change(aInteger);change1(a);//change2(num);System.out.println(aInteger);}private static void change2(Num num) {// TODO Auto-generated method stubnum.val =100;}private static void change1(int a) {// TODO Auto-generated method stuba++;}private static void change(Integer aInteger) {// TODO Auto-generated method stubaInteger++;}}


原创粉丝点击