java中的值传递
来源:互联网 发布:linux 删除路由 编辑:程序博客网 时间:2024/05/29 10:11
遇见一道与参数传递有关的题,然后一不小心就做错了,还是自己理解的不够到位。在这里记下,并说说自己的理解。希望能够提升自己帮助他人。望指出错误和不足之处。
首先看下题目,源码如下:
public class Example{String str = new String("good");char[] ch = {'a','b','c'};public static void main(String[] args){Example e = new Example();e.change(e.str,e.ch);System.out.print(e.str+" and ");System.out.print(e.ch);}public void change(String str,char[] ch){str = "bad";ch[0] ='g';}}
正确的输出结果为:good and gbc
过程分析:
首先,从上述代码中可以看到在类Example中定义了一个String类型的变量和一个char类型的数组并初始化;
然后,定义了一个方法change,并向change中传递了两个参数,一个是String类型一个是char型数组;
最后,在主函数中调用change这个方法,并将开始定义的两个变量传递给change方法。
结果分析:
因为String是被final修饰的类,所以String对象是不可改变的;e.change(e.str,e.ch)调用时,将e.str的值被赋给了change方法中的形参str,e.ch将char数组的地址赋给了change方法中的形参ch。change方法被调用时,str = "bad"改变的是方法中形参的值,对实参没影响;而ch[0] ='g'由于是直接改变ch所指向地址的值,所以实参也发生改变。
总结:
1、如果是基本数据类型(int,double,char),则传递的是值本身;
2、如果是引用数据类型(array,class),传递独的是地址值。 1 0
- java中的值传递
- java中的值传递
- Java中的值传递
- JAVA中的值传递
- java中的值传递
- Java中的值传递
- java中的值传递
- Java中的值传递
- java中的值传递
- JAVA中的值传递
- Java中的值传递
- Java 中的值传递
- Java中的值传递
- Java中的值传递和地址传递
- java中的“值传递”和“引用传递”
- Java中的值传递与引用传递
- java中的值传递与引用传递
- Java中的值传递和地址传递
- 基础最短路四 POJ3268
- 机器学习之自己实现决策树
- jsvascript === 和==的区别
- shuffle()重排数组
- webswebstorm快捷键
- java中的值传递
- Html blockquote标记
- java se 05
- java IO流分析:ByteArrayInputstream 和 BufferedInputStream
- 数位板跟数位屏有什么区别,哪个好些?
- Struts2之Result详解
- Eclipse如何忽略拼写检查?
- springMVC 第一个小例子
- spring+mybatis使用druid配置数据源