最近写程序发现关键字对程序影响很大,希望对大家有所帮助。
第一种,返回对当前对象的引用
public class Person {
.......
public Person getPerson(){
......
return this;
}
}
public class Person{
private int i;
Persorn(int i){
this.i = i;
}
}
public class Person{
private int i;
private String s;
Person(int i){
this.i = i;
}
Person(int i,String s){
this(i);
this.s = s;
}
}
第一种情况,final修饰类,表示最终类,不可以被继承,final类里的方法默认为final方法,不可以被覆写
第二种情况,final修饰方法,方法不能被覆写,private方法默认为final方法。java早期为效率问题引出final方法,但现在发现存在诸多毛病,不推荐使用
第三种情况,final修饰域,final修饰域又分为修饰基本类型域和修饰对象
final修饰基本类型域,一旦初始化,数值保持不变
final修饰引用类型域,一旦初始化,则引用对象的地址不再发生变化,但是对象的内容可以改变
static:可修饰域,方法,代码块和类
第一种情况,static修饰内部类,成为静态内部类
第二种情况,static修饰代码块,这与初始化有关,在初始化时总是先初始化静态域
第三种情况,static修饰域,表示一个类中只存在一份这样的静态域,不论该类创建了多少个对象,静态域只有一份,没有拷贝
第四种情况,static修饰方法,在static修饰的方法中只能调用静态域,静态方法中不能出现this,和super关键字,而且静态方法和静态域可以使用类名或者对象去调用,而非静态的只能使用对象去调用
在代码中验证this,static,final,关键字
Person.java文件
public class Person {
//展示了this的三种用法
public int age;
public String name;
public Person(int age) {
this.age = age;
}
public Person(int age,String name){
this(age);
this.name = name;
}
public Person getPerson(int age ,String name){
this.changAge();
return this;
}
private void changAge(){
age++;
}
}
public class MainActivity extends Activity {
private int i = 1;
private final int j = 2;
private static final int k = 3;
private Person person1 = new Person(1,"June");
private final Person person2 = new Person(3,"Nay");
private static final Person person3 = new Person(4,"Saly");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void changField(){
i++;//Correct,没有任何关键字修饰的基本类型数据,数值可以改变
// j++;//Error,final修饰的基本类型数据,一经初始化,数值不能再发生改变
// k++;//Error,同上,与域j不同处在于,k为static修饰,只有一份,不进行拷贝
person1 = new Person(4,"Tom");//Correct
person1.age++;//Correct
person1.name = person1.name+"j";//Correct
// person2 = new Person(5,"Jane");//Error,final修饰的对象地址不能发生改变
person2.age++;//Correct,final修饰的对象内容可以发生改变
person2.name = person2.name + "h";//Correct,final修饰的对象内容可以发生改变
person3.age++;//Correct
person3.name = person3.name + "h";//Correct
}
}