java 传参
来源:互联网 发布:win域名 编辑:程序博客网 时间:2024/06/06 02:31
java 传参这个问题,对于简单类型是直接值传递,复杂类型是引用传递,值传递先不说了,引用传递用两个例子说明。主要是说明一下String传递的一个容易错的地方。。。
例子1
public class Test {public static void changeString(StringBuffer a){a .append( " ,world" );}public static void main(String [] args){StringBuffer a = new StringBuffer("Hello");//'= "Hello";System.out.println(a);changeString(a);System.out.println(a);}}
输出结果是:
Hello
Hello ,world
结果显而易见,这是一个引用传递,在函数changeString中改变了原来的字符串,而仔细看时,发现这个例子用的是StringBuffer这个类,为什么不用String呢,因为String没有append这个方法,学渣是个喜欢问为什么的人,于是乎,自己写一个String的例子,如下
public class Test {public static void changeString(String a){a += " ,world" ;}public static void main(String [] args){String a = new String("Hello");//'= "Hello";System.out.println(a);changeString(a);System.out.println(a);}}
输出结果是:
Hello
Hello
学渣第一次看到这个结果时,几乎颠覆了世界观,难道java的引用传递分情况么,后来上网一查才知道。。。让String骗了。。。。
其实概念中的传引用是图1这个样子的
而我们的String的+=或者=都是相当于new了一个新的字符串,并把指针指向了新的字符串,旧的字符串根本没动,如图2,所以有了第二个例子的现象
0 0
- java传参
- Java 传参
- java 传参
- Java传参
- JAVA传参
- Java web 传参
- java url 传参 编码
- 详细解释Java传参
- 理解Java传参
- 深入分析java传参
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- 数据结构-栈和队列
- (leetcode 1)Reverse Words in a String
- 第七周作业1-背包问题
- java中static{}语句块详解
- C++ Primer笔记10_运算符重载_赋值运算符_输入/输出运算符
- java 传参
- Handler有何作用?如何使用?
- C语言编程调试:illegal use of this type as an expression错误解决办法
- QT 鼠标右键菜单
- 贪吃蛇游戏
- linux下如何用GDB调试c++程序
- 补第三周作业--冒泡排序和归并排序
- 深入理解Javascript window对象
- css框模型(padding,margin,border)