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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容