java(7)this关键字

this是一个引用,是一个变量。

每一个对象在执行这个动作时结果不一样,这个必须有对象的参与,所以在定义的时候不加static。实例变量必须通过对象的引用去访问。

完整的写法就算在定义类的时候也该是引用.name,name只是一种省略的方式,这个引用就是this。this可以是你设置的引用c1或者c2。

this关键字,在定义一个类的时候,是实例变量,不带static的时候, 是可以省略不写的。

带有static的时候:看的是要访问的是不是实例变量,而不是定义的方法带不带static

带有static的方法: 下面被注释的都不能访问。没有当前对象。

 

那该如何访问?

这是在另一个测试类中调用,执行得到的name是空,因为c这个引用被new出来的时候就是空。

执行结果为系统默认值空。 

没出大括号变量也报错,不认识了。这个是对的。

想要访问这个num=10,必须再main方法中new一个thistest的对象,通过引用访问,但这个只能访问10.

调用带static的方法。类名点方法名,类名也可以省略。

 

 调用实例方法必须用引用去调用。

这个tt.doother();在main方法里

 在这里调用doother方法必须可以用this表示这个对象的doother。

run被调用时必须有对象,doother调用时也必须有对象,因为调用run时有对象,所以在run里可以调用doother。

 

this什么时候不能省略? 

java有就近原则,下面的不加this,id=id和最上面的实例变量没关系了。

 this的另一种用法:可以调用其他的构造方法。

 

 

综合例子:

 用引用会警告但不会报错。不会出现空指针异常,就算t=null,下面的t.dosome()在运行时会被改成类名点dosome。

 

在没有statci的方法,实例对象的时候会出现this。

public class test {
    public static void method1(){
        //调用doSome
        test.doSome();//使用完整方法
        doSome();//使用省略方法
        //调用doOther
        test t = new test();//使用完整方法
        t.doOther();
        //使用省略方法,没有。
        //访问i
        System.out.println(t.i);
        //System.out.println(i);会报错,没有当前对象,这是访问当前对象的代码。
    }
    public void method2(){
        //调用doSome
        test.doSome();//使用完整方法
        doSome();//使用省略方法,也可以是this.doSome()
        //调用doOther
        this.doOther();//使用完整方法
        doOther(); //使用省略方法
        //访问i
        System.out.println(this.i);//使用完整方法
        System.out.println(i);//使用省略方法
    }
    public static void main(String[] args) {
        //调用method1
        test.method1();//使用完整方法
        method1();//使用省略方法,调用方法和被调用方法在同一个类中,类名可以省略。
        //调用method2
        test t = new test();//使用完整方法
        t.method2();
    }
    int i = 10;
    public static void doSome(){
        System.out.println("do some!");
    }
    public void doOther(){
        System.out.println("do other!");
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值