开发者学堂课程【【名师课堂】Java面向对象开发:引用传递进阶分析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/371/detail/4459
引用传递进阶分析
内容介绍:
一、 引用传递含义
二、范例分析
三、总结
一、 引用传递含义及重要性
引用传递是 java 的核心。如果不明白引用传递,基本上所有的代码都无法正常进行正常的分析,下面将用三个范例对引用传递做一个完整的分析。
二、范例分析
1. 范例:引用传递(第一题)
class Message{
private int num;
pubiic void setNum (int num){
this .num =num;
)
public int getNum () {
return this. num
}
}
public class TestDemo {
public static void main (string args[]) {
Message msg =new Message();
msg.setNum (100);
fun(msg) ;
system.out.println (msg. getNum ()p;
}
public static void fun (Message temp){
temp . setNum (30) ;
}
}
执行结果如下:
D : \mydemo>javac TestDemo. Java
D : \mydemo>java TestDemo
30
D: \mydemo>
下面通过内存的关系图来进行分析:
2. 范例:(第二题)
public class Tes tDemo {
public static void main (String args []) {
String str = "hel1o" ;
fun (str) ;
Sys tem. out. println(str) ;
}
public static void fun (String temp) { // 引用传递
temp = "world" ;|
}
}
执行代码结果如下:
D: \mydemo>javac TestDemo. java
D : \mydemo>java TestDemo
hello
本题目分析的关键在于:
字符串常量一但声明不可改变,字符串对象的内容改变依靠的是地址的引用关系变更。
第二题引用范例关系图如下:
3. 范例:(第三题)引用传递
class Message{
private string note ;
public void setNote (string note) {
this.note =note ;
}
public string getNote(){
return this.note;
}
}
public class TestDemo {
public static void main (string args[]) {
Message msg =new Message(o ;
msg.setNote ( "hello"");
fun (msg);
system.out.println (msg·getNote());
)
public static void fun (Message temp){1/引用传递
temp . setNote ( "world");
}
}
程序代码执行结果如下:
D: lmydemo> javac TestDemo. Java
D : lmydemo> java TestDemo
world
如果要想对以上代码进行分析,一定要有一个前提
先把 String 类的使用当作一个基本数据类型那样来操作。
第三题范例引用关系图如下:
String 是引用类型,不应该按照基本数据类型来分析,应该按照引用类型来分析。
第三道引用范例完整分析图如下:
三、 总结
对于字符串最简单的做法就是按照基本数据类型那样进行分析。