美文网首页Java学习笔记
this关键字、static、静态函数、final

this关键字、static、静态函数、final

作者: ForeverYoung20 | 来源:发表于2015-09-21 20:11 被阅读128次

    this关键字


    this关键字代表了所属函数的调用者对象。

    this关键字的作用:

    • 一个类中存在同名的成员变量与局部变量时,在方法的内部默认是访问局部变量的,可以通过this关键字指定访问成员变量的数据。
    • this关键字还可以在构造函数中调用另外一个构造函数初始化对象。

    this关键字调用构造函数注意事项:

    • this关键字调用其他的构造函数时,必须要在第一个语句。
    • this关键字调用构造函数时不能出现相互调用,会造成死循环。

    static(静态、修饰符)


    static修饰成员变量时,该成员变量的数据就是一个共享的数据。

    静态成员变量的访问方式:

    • 方式一:使用对象进行访问。对象.属性名
    • 方式二:使用类名进行访问。类名.属性名

    注意:

    • 非静态成员变量不能类名直接访问,只能使用对象进行访问。
    • 千万不能为了方便访问成员变量而随意使用static修饰,一定要是该数据是共享数据时才使用static修饰。

    静态成员变量与非静态成员变量的区别:

    • 作用上的区别:
    • 静态成员变量的作用是共享一个数据给所有对象使用。
    • 非静态成员变量的作用是描述一类事物的公共属性。
    • 数量与存储位置上的区别:
    • 静态成员变量是存储方法区内存中,而且只会存在一份数据。
    • 非静态成员变量是存储在堆内存中,有n个对象就有n份数据。
    • 生命周期的区别:
    • 静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
    • 非静态的成员数据是随着对象的创建而存在,随着对象被垃圾回收器回收而消失。

    静态函数


    静态函数要注意的事项:

    1. 静态函数是可以使用类名或者对象进行调用的,而非静态函数只能通过对象调用。
    2. 静态的函数可以直接访问静态的成员,但是不能直接访问非静态成员。若静态函数中有对象,那么可以访问非静态数据。
    • 原因:静态函数是可以使用类名直接调用的,此时可能还没有存在对象,而非静态的数据成员是随着对象的存在而存在的。
    1. 非静态函数可以访问静态与非静态成员。
    • 原因:非静态函数只能由对象调用,当对象存在的时候,静态数据已于之前就存在,而非静态数据也随着对象的创建而存在。
    1. 静态函数不能出现this或者super关键字。
    • 原因:因为静态函数可以使用类名调用,一旦使用类名调用,此时不存在对象,而this关键字代表了一个函数的调用者对象,这时产生冲突。

    静态数据的生命周期:

    • 静态的成员变量数据是优先于对象存在的。(可以解释以上全部原因)

    static什么时候用来修饰函数?

    如果一个函数没有直接访问到非静态的成员,那么可以使用static修饰。一般用于工具类型的方法。

    final(最终、修饰符)


    final关键字的用法:

    • final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的。
    • final关键字修饰一个引用类型变量时,该变量不能重新指向新的对象。
    • final关键字修饰一个函数的时候,该函数不能被重写。
    • final关键字修饰一个类的时候,该类不能被继承。

    常量的修饰符一般为: public static final

    相关文章

      网友评论

        本文标题:this关键字、static、静态函数、final

        本文链接:https://www.haomeiwen.com/subject/fyricttx.html