JAVA中的引用传递
2016-01-25 00:48
495 查看
在介绍常见的引用传递之前先看一下对象的引用传递操作,所谓引用传递就是把堆内存空间的使用权交给其他的对象,就是为堆内存空间起了一个别名。引用传递传递的是对象的地址,通过以下引用传递在内存中的变化体会一下何为传递的是地址。
class Person{
public String name;
public int age;
……
Person(String name,int age){
this.name = name;
this.age = age;
}
Person(){
}
}
public class Test{
public static void main(String args[]){
Person per1= null;
Person per2 = null;
per1 = new Person();
per2 = new Person("李四",0);
per2 = per1;
per1.name="张三";
per1.age=30;
per2.age=33;
}
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/30/39de0ec9ac5cca03c59d698a8f1a1d05)
下面看一下常见的参数传递中,引用类型的传递。
class Demo {
public int x=10;
}
public class test{
public static void main(String args[]){
Demo d = new Demo();
d.x=30;
fun(d);
}
public fun(Demo temp){
temp.x=100;
}
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/30/ff97976a83a7287b164d83a8ff32896b)
在所有的类中,String类型例外String类型的对象永远不变。代码如下:
class Test{
public static void main(String args[]){
String str="hello";
fun(str);
system.out.println(str);
}
public static void fun(String temp){
temp = "world";
}
}
此时输出依然是hello。
class Person{
public String name;
public int age;
……
Person(String name,int age){
this.name = name;
this.age = age;
}
Person(){
}
}
public class Test{
public static void main(String args[]){
Person per1= null;
Person per2 = null;
per1 = new Person();
per2 = new Person("李四",0);
per2 = per1;
per1.name="张三";
per1.age=30;
per2.age=33;
}
}
下面看一下常见的参数传递中,引用类型的传递。
class Demo {
public int x=10;
}
public class test{
public static void main(String args[]){
Demo d = new Demo();
d.x=30;
fun(d);
}
public fun(Demo temp){
temp.x=100;
}
}
在所有的类中,String类型例外String类型的对象永远不变。代码如下:
class Test{
public static void main(String args[]){
String str="hello";
fun(str);
system.out.println(str);
}
public static void fun(String temp){
temp = "world";
}
}
此时输出依然是hello。
相关文章推荐
- Java DataInputStream和DataOutputStream 使用例子
- Java23种设计模式(1):单例模式
- Java并发——ReentrantLock类源码阅读
- Java分层概念(转)
- java的字典序排序
- Spring Boot 动态数据源示例(多数据源自动切换)
- Collection集合之六大接口(Collection、Set、List、Map、Iterator
- 接口java.util.Map.Entry的使用
- 解决WebService和Struts2的URL冲突
- 为eclipse安装maven插件
- Java实现的utf8,gbk,unicode编码相互转换的代码
- java中interface的详解
- 6.Java基础知识--IO
- java导出数据到word(一)
- spring的事物管理配置
- spring4 学习4 spring MVC+mybatis+Mysql
- Thrift Java 多路复用可实现多个Service
- Log4j使用详解
- Ember版本小小结
- java 运行executable jar 运行可执行文件的方法