jAvA传参是引用还是值

值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值.引用传递:(形式参数类型是引用数据类型参数):也称为传地址.方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数.

对于基本数据类型,几乎可以确定是传值的,对于一些封装对象,则是传引用,比如像map,list等集合

传递的参数分为,基本类型和对象类型, 基本类型传递的是值得副本,对象类型传递的是 对象地址的副本,所以参数为基本类型时 修改参数的值没有影响,但是 传递的是对象类型时, 修改对象的值会修改对象,因为传递的是对象地址的副本,实际还是改对象!

看你数据的类型,string类型就是假引用传递其他都是按假值传递.你学java应该学过基本数据类型 和引用数据类型的概念 这些传递有可能对原来的数据修改,并非真正的引用传递.如果你学C#就知道里面有真正的引用传递

java的数据类型分为基本类型和引用类型基本类型:byte,short,int,long,char,float,double,boolean引用类型:类,接口和数组.基本类型的参数是值传递,引用类型的参数是引用传递另外String、Integer、Double、Long……等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象JAVA中值传递和引用传递

值传递:(形式参数zhidao类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值.引用传递:(形式参数类型是引用数回据类型参数):也称为传地址.方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的答操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数.

要解决这个问题,首先你必须得理解两个概念.值传递:在具体的实参传递到方法中定义的形参的时候,传递的是值的拷贝,也就是复制一份来的值,这样就有个两个值,在方法内部对参数进行处理的时候,实际上是处理的那个拷贝后的值,而

Java总是值传递.看下面的示例:public static void main( String[] args ){ Dog aDog = new Dog("Max"); foo(aDog); if (aDog.getName().equals("Max")) { //true System.out.println( "Java通过值传递." ); } else if (aDog.getName().equals("Fifi

java的数据类型分为基本类型和引用类型 基本类型:byte,short,int,long,char,float,double,boolean 引用类型:类,接口和数组.基本类型的参数是值传递,引用类型的参数是引用传递 另外String、Integer、Double、Long……等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象 JAVA中值传递和引用传递

测试下就知道了 public static void main(String[] args) { int a = 1; String str = "abc"; changeValue(a, str); System.out.println(a); System.out.println(str); } private static void changeValue(int a, String str) { a = 2; str = "123"; }结果: 1abc所以是值传递 (如果是引用的类,然后又set、get方法就另当别论了)

相关文档

java传值和引用
传值和传引用
java什么是值传递
java中的参数传递
java引用传参
java传值和传址
值传参与引用传参
java只有值传递
java中引用传递
java 值传递和引用传递
值传递和引用传递
传值和传引用的区别
java传引用
引用与值传递的区别
java有参方法
简述参数传值
java带参的方法
java传参方式
电脑版