关于string的一段代码
2016-05-14 21:49
411 查看
public class StringTest { String str = "zhangqiang"; char[] ch = {'a','b','c'}; public static void main(String[] args) { StringTest st = new StringTest(); exchange(st.str,st.ch); System.out.println(st.str+" and "); System.out.println(st.ch); } private static void exchange(String str, char[] ch) { // TODO Auto-generated method stub str = "zq"; ch[0] = 'g'; } }
理解:
String str = “zhangqiang”;String作为引用类型,当这句话执行时(假设串池为空)首先会创建一个实例(具有自己的地址)同时 在串池中赋值,同理char[]为数组类型,也会创建自己的数组空间(具有自己的地址),当调用exchange方法时, 对于参数变量str来说,相当于有一个String变量str(只不过名字相同)指向成员变量str(实际是指向成员变量的地址);
而对于str = “zq”;相当于str重新创建了自己的实例(自己的地址,和上面的地址不同),该地址空间中存放的是“zq”; 所以当输出st.str实际取得的是成员变量的地址,当然会输出“zhangqiang”;
而ch[0]=’g’;他只是改变了该char[]数组对象的一部分,并不会对地址有影响,改变的是其中的一部分内容而已。
相关文章推荐
- Win7下的内置FTP组件的设置详解
- PHP TP框架
- java多线程总结
- Java Servlet(十):JSTL核心标签库
- c/s模式 (C#)下Ftp的多文件上传及其上传进度
- java多线程系列7-停止线程
- JavaSE_String 截取字符串 String.substring
- SSIS 学习之旅 FTP访问类
- Qt学习之路(58): 进程间交互
- C#路径/文件/目录/I/O常见操作汇总
- JAVA多线程之wait/notify
- 第二道题:括号配对问题
- java中的==、equals和hashCode以及hashCode生成
- HBase新版本Java API编程实战及基本操作方法封装
- 69道Spring面试题和答案
- SSIS 学习之旅 FTP文件传输-脚本任务
- C语言中关键字auto、static、register、const、volatile、extern的作用
- <转>thinkphp的各种内部函数 D()、F()、S()、C()、L()、A()、I()详解
- java多线程系列6-阻塞队列
- SSIS 学习之旅 FTP文件传输-FTP控件