String类型的参数传递过程
来源:互联网 发布:怎么看淘宝开店时间 编辑:程序博客网 时间:2024/04/25 20:32
public static void main(String[] args) {
String str = "abc"; appendStr(str); System.out.println(str);}private static void appendStr(String str){ str += "def";}
运行结果是“abc”而不是我想要的“abcdef”,不是说String是引用类型吗,怎么会这样?我想是不是String str = “abc”; 的问题,我就换成了这样:String str = new String(“abc”); 可还是一样。
解惑:
首先String是一个不可变类型,也就是说从声明那一刻起内存大小是固定的不可改变的,那么str += "def"; 这行代码背后又有什么不可告人的秘密呢?既然说了String是不可变的,你还愣是给加一个“def”,没办法jvm只能再开辟一块新的内存,把“abcdef”放进去,然后把新的地址给了str(appendStr方法中的),如果你在appendStr方法中输出str的值肯定是“abcdef”,也就是说appendStr方法中根本就没有改变初始存放“abc”那块内存的值(当然它想改也改了),当这个方法返回时main方法中的str依然是那个没修改前的引用,当然还是输出“abc”了。
0 1
- String类型的参数传递过程
- Java-String类型的参数传递问题
- Java-String类型的参数传递问题
- Java-String类型的参数传递问题
- Java-String类型的参数传递问题
- Java-String类型的参数传递问题
- Java-String类型的参数传递问题
- Java-String类型的参数传递问题
- java之传递String类型的参数
- Java-String类型的参数传递问题
- [Java]String类型的参数传递问题
- Java-String类型的参数传递问题
- Java-String类型的参数传递问题
- java的String类型作为参数传递
- Java-String类型的参数传递问题
- Java中String类型的参数传递问题的解析
- Java中String类型的参数传递问题的解析
- Java中String类型的参数传递问题的解析
- 四种会话跟踪技术
- AngularJS 日期转换
- Java this指针的使用
- linux内核initrd文件自定义方法
- UNPv1第九章:基本名字与地址转换
- String类型的参数传递过程
- Linux_16_04_26
- 使用AT再远程服务器执行查询
- 查询SQL SEVER最近修改的存储过程及表
- SVN服务器搭建和使用(二)
- awk按照一定顺序输出某列
- git常用命令
- LeetCode 45. Jump Game II
- SWT之Text换行