Java的值传递
来源:互联网 发布:零基础学算法pdf 编辑:程序博客网 时间:2024/06/05 21:06
经典问题,众所周知,java是按值传递。
有人说,是传递的地址;
有人说,是传递了一个副本;
有人说基本类型是按值传递,引用类型是引用传递(这尼玛就是扯!)。
思考如下代码,却输出:c。如此矛盾,隐约透出这个是引用传递?
public class StringDemo {
public static void main(String[] args) {
String[] x = new String[]{"a", "b"};
change(x);
System.out.println(x[0]); //输出"c"
}
public static void change(String[] y) {
y[0] = "c";
}
}
解读:
y首先接收x的地址,该地址指向{"a", "b"},所谓的按值传递。
然后修改y地址指向的内容, {"a", "b"}改为{"c", "b"}。
x的内容自然改变 。
再对比如下代码,输出:a。为何?
public class StringDemo {
public static void main(String[] args) {
String[] x = new String[]{"a", "b"};
change(x);
System.out.println(x[0]); //输出"a"
}
public static void change(String[] y) {
y = new String[]{"c", "d"};
}
}
解读:
y首先接收x的地址,该地址指向{"a", "b"}。
然后y的地址更改为{"c", "d"}地址,并未改变{"a", "b"}的内容。
x的内容不变。
图例堆栈解读,稍后补上。。。。
图例堆栈解读,稍后补上。。。。
1 0
- java的值传递
- Java的值传递
- Java的值传递
- Java的值传递
- JAVA的值传递
- 值传递的Java
- java的值传递还是引用传递
- Java的值传递与引用传递
- Java的值传递和引用传递
- java的值传递与引用传递
- java的引用传递和值传递
- java的引用传递和值传递
- java的值传递与引用传递
- java的值传递,没有引用传递
- Java的引用传递和值传递
- java的值传递和引用传递
- java的值传递和引用传递
- JAVA的值传递与参数传递
- AFNetwork 作用和用法详解
- android 获取系统时间的几种方法
- strange behavior when using linux shell
- C语言之关键字const
- 将整型数据转换为string类型
- Java的值传递
- spring调用存储过程
- c++ builder使用过程中,记录的bug
- [LeetCode303] Range Sum Query - Immutable
- Mybatis插入多条相同记录
- cocos2d游戏接入admob,解决,@import GoogleMobileAds 错误的方法
- plsql 连接不上 登陆不了 tnsnames.ora 问题
- 把Eclipse项目迁移到AndroidStudio
- App Store 评分 跳转 代码