前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中的this,final,static关键字

Java中的this,final,static关键字

作者头像
fanfan
发布2022-05-06 19:50:54
3330
发布2022-05-06 19:50:54
举报
文章被收录于专栏:编程思想之路编程思想之路

最近写程序发现关键字对程序影响很大,希望对大家有所帮助。

1,this关键字:this关键字只能在方法内部使用,有三种使用方式

     第一种,返回对当前对象的引用

代码语言:javascript
复制
public class Person {
     .......
      public Person getPerson(){
          ......
            return this;
      }
}

      第二种情况,利用this去调用方法或者域,表示调用该方法的对象,此时,this等同于其他引用对象

代码语言:javascript
复制
public class Person{
       private int i;
       Persorn(int i){
              this.i = i;
       }
}

       第三种情况,   利用this在构造器中调用构造器方法,

代码语言:javascript
复制
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;
      }
}

2,final关键字,可用来修饰域,方法,和类

   第一种情况,final修饰类,表示最终类,不可以被继承,final类里的方法默认为final方法,不可以被覆写

   第二种情况,final修饰方法,方法不能被覆写,private方法默认为final方法。java早期为效率问题引出final方法,但现在发现存在诸多毛病,不推荐使用

   第三种情况,final修饰域,final修饰域又分为修饰基本类型域和修饰对象

           final修饰基本类型域,一旦初始化,数值保持不变

           final修饰引用类型域,一旦初始化,则引用对象的地址不再发生变化,但是对象的内容可以改变

3,static关键字,可用来修饰域,方法,代码块和类

static:可修饰域,方法,代码块和类

    第一种情况,static修饰内部类,成为静态内部类

    第二种情况,static修饰代码块,这与初始化有关,在初始化时总是先初始化静态域

    第三种情况,static修饰域,表示一个类中只存在一份这样的静态域,不论该类创建了多少个对象,静态域只有一份,没有拷贝

     第四种情况,static修饰方法,在static修饰的方法中只能调用静态域,静态方法中不能出现this,和super关键字,而且静态方法和静态域可以使用类名或者对象去调用,而非静态的只能使用对象去调用

在代码中验证this,static,final,关键字

Person.java文件

代码语言:javascript
复制
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++;
    }
    
}

MainActivity.Java文件,final修饰的域和final修饰的对象,以及static修饰的域和static修饰的变量

代码语言:javascript
复制
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

    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,this关键字:this关键字只能在方法内部使用,有三种使用方式
  • 2,final关键字,可用来修饰域,方法,和类
  • 3,static关键字,可用来修饰域,方法,代码块和类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档