传值与传址--String的“特殊性”
2015-08-27 14:37
183 查看
String为引用类型,作为参数传递时却表现出“传值”特性
==========================范例分析======================================
public class Main {
public static void main(String[] args) {
final MyObject obj = new MyObjec("hello"); //String是final Object的一种
//final修饰符表明obj必须始终指向同一内存空间,但该内存空间的内容是可以修改的
change(obj);
System.out.println(obj.name); //输出"hello"
}
public void change(MyObject a) { //应该注意到这里的a为局部变量,且没有final修饰符。
//它和main中的obj变量目前指向同一内存空间
a = new MyObject("world");
//该语句将其指向新的内存空间,因此接下去的操作不会影响原来的对象
}
}
class MyObject {
public String name = null;
public MyObject() {}
public MyObject(String name) {
this.name = name;
}
}
==========================范例分析======================================
public class Main {
public static void main(String[] args) {
final MyObject obj = new MyObjec("hello"); //String是final Object的一种
//final修饰符表明obj必须始终指向同一内存空间,但该内存空间的内容是可以修改的
change(obj);
System.out.println(obj.name); //输出"hello"
}
public void change(MyObject a) { //应该注意到这里的a为局部变量,且没有final修饰符。
//它和main中的obj变量目前指向同一内存空间
a = new MyObject("world");
//该语句将其指向新的内存空间,因此接下去的操作不会影响原来的对象
}
}
class MyObject {
public String name = null;
public MyObject() {}
public MyObject(String name) {
this.name = name;
}
}
相关文章推荐
- Spring MVC之@RequestBody, @ResponseBody 详解
- YII 增加登陆认证
- CentOS下搭建LVS+Keepalived
- JVM工具使用 JMAP,JHAT
- 如何选择LDO (LDO的关键指标及定义)
- URI和URL的简单区分
- IntelliJ IDEA 14 注册码
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
- 辛星浅析围绕数据操作的几个名词即model、dal、dao、orm和ar
- 软件技术基础知识复习
- 用SWD调试接口测量代码运行时间 ( SWO )
- 了解 JavaScript (2)- 需要了解的一些概念
- web前后端数据交互
- .net学习笔记---IIS 处理模型及ASP.NET页面生命周期
- tfmxobject的序列化
- jQueryMobile的组件——复选框(checkbox)和单选钮(radio)
- Swift 类方法和实例方法
- 显卡NVIDIA,AMD,ATI的区别
- Spring MVC之@RequestMapping 详解
- 十进制转二进制