一、this的基本用处
Java中的this关键词有三个基本的用法
1.调用本类的成员变量
2.调用本类的成员方法
3.调用本类的构造方法
在调用构造方法的时候this();语句必须放在构造方法中的第一个语句位置。(在成员方法中使用this();并无意义,java不允许这样做)
public class Student{
private String name; //定义了一个student类的成员变量
public Student(){ //定义了一个无参构造方法
this("Awesome!"); //这里this调用了带参数的构造方法
}
public Student(String a){ //定义了一个带参数的构造方法
}
public void setName(String name){
this.name=name; //这里this调用了本类中的成员变量,将形参name的值赋给了成员变量name。
this.printname(); //这里this调用了本类中的成员方法。
}
public void printname(){ //定义了一个student类的成员方法
System.out.println("张三");
}
}
4.返回类的引用
如上例中 return this; 即代表着return student;
二、延伸理解
在gc中,有一种有巨大缺陷的算法叫做引用计数法(Reference Counting Collector),它的缺陷在于无法处理互相引用的两个对象。
看到这里我突然想知道一个的的确确是循环引用的例子。这也就导出了我认真学习this关键词的这一步。
package com.xiuxiu.table;
public class A {
private B b;
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
public static void main(String[] args) {
A a = new A();
B b = new B();
a.setB(b);
b.setA(a);
}
}
class B {
private A a;
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
}
补充:http://blog.csdn.net/rockpk008/article/details/52374203
三、final关键字
修饰类
final关键字修饰类表明这个类是不可以被继承的,即不允许任何人试图通过继承修改这个类。被final修饰的类的所有方法会被隐式指定为final。
修饰方法
final修饰方法时表示这个方法是无法被继承该类的子类重写的方法。(private方法也会被隐式指定为final方法)
修饰变量
(1)如果修饰的是基本数据类型变量,则初始化后该变量的值不能被修改。
(2)如果修饰的是引用类型变量,则初始化之后它便不能引用(指向)其他对象。