引用传递进阶分析

引用传递是java的整体核心,如果不懂基本的传递,所有代码都无法进行正常分析。

下面使用三个简单的程序对引用传递做一个完整

第一道引用程序

class Message{
private int num;
public void setNum(int num) {
	this.num=num;
}
public int getNum() {
	return  this.num;
}
}

public class StringDemo {
   public static void main(String args[]) {
Message msg=new Message(); 
msg.setNum(100);//设置值 msg=100
System.out.println(msg.getNum());
fun(msg);//引用传递 等价于Messgae temp=msg=30;

System.out.println(msg.getNum());
 }
 public static void fun(Message temp) {
	 temp.setNum(30);

 }
}//结果30	

 

范例:第二道

public class StringDemo {
public static void main(String args[]) {
String str="hello";
fun(str);
System.out.println(str);
 }
          public static void fun(String temp) {
        	  temp="world";
          }
}	//结果 hello

本题目分析的关键在于:字符串常量一旦声明则不可改变,

字符串内容改变依靠的是地址的引用关系变更。


★新字符串一定要开辟新的程序空间 

  temp="world";

范例:第三道

class Message{
private String note;//null
public void setNote(String note) {
	this.note=note;
	}
public String getNote() {
	return this.note;
}}

public class StringDemo {
 public static void main(String args[]) {
Message msg=new Message();
msg.setNote("hello");//note="hello"
fun(msg);//temp="hello"  
//temp.setNote("world") 
//设置temp所指向的字符串的值
System.out.println(msg.getNote());
 }
          public static void fun(Message temp) {
         temp.setNote("world");
          }
}	

如果要想对以上代码进行分析,一定要有一个前期:

先把String类的使用当作一个基本数据类型那样操作



String类是引用类型,你不应该按照基本数据类型分析

第三道引用范例完整分析


因为note是一个字符串 所以会 

这个操作如果很懵:对于字符串最简单的做法就是按照基本数据类型进行分析

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值