Java 学习笔记——基础知识(六)

20.this和super关键字

this关键字:
 1.区分属性间重名
 2.this可以实现构造方法之间相互调用,但是一定要在第一行调用,只能单向调用


Super关键字
子类的构造方法要先调用父类的构造方法,如果父类中没有无参构造,必须显式的去调用父类中有参构造,super(参数1,参数2,...),但是super语句必须放在第一行


21. 参数传递:

       基本数据类型按值传递(拷贝值)
       引用数据类型按引用传递(拷贝引用)


       基本数据类型: int n = 10

[Java学习笔记(原创) - Magicc - 異次元藍客]       理解存放在栈stack中
[Java学习笔记(原创) - Magicc - 異次元藍客]       copy值一份


       引用数据类型:User user = new User();
[Java学习笔记(原创) - Magicc - 異次元藍客]
[Java学习笔记(原创) - Magicc - 異次元藍客]
 copy引用
其中user表示引用(地址),存放在栈stack(栈是一种临时性的存储,可以理解为缓存,闲置的时候,会被JVM回收)中,User()是对象(值),存放在堆heap(相对于栈,空间更大,更持久,闲置的时候会被JVM的回收机制回收)中
对象和引用的关系图:
       
[Java学习笔记(原创) - Magicc - 異次元藍客]
 
[Java学习笔记(原创) - Magicc - 異次元藍客]
 
[Java学习笔记(原创) - Magicc - 異次元藍客]
 
总结:一个对象可以有多个引用,如果一个对象没有引用,则该对象被回收,new的时候创建对象并且给对象分配空间,声明对象时并没有创建对象。
相关代码:
public class ParamTest {
public static void main(String args) {
// int n =10;
// System.out.println("调用之前:"+n);
// add(n);
// System.out.println("调用之后:"+n);
MyInt m = new MyInt();
System.out.println("前:" + m.n);
MyInt.change(m);//把参数m传给n,然后进行方法change的运算
System.out.println("后:" + m.n);
}
// public static void add(int n) {
// n++;
// System.out.println("方法内变量n:"+n);
// }
}class MyInt {
public int n = 10;

public static void change(MyInt n) {
n.n++;//在原对象空间中改变变量n的值
System.out.println(n.n);
// MyInt mm = new MyInt();/*在新对象空间(mm)中改变n的值
// 不影响原对象空间中n的值*/
//
// mm.n = 100;
// n = mm;
// System.out.println(mm.n);
}
}


--来自网页客户端
4.jpg 1.jpg
已邀请:

要回复问题请先登录注册

Template error, template file not found