静态函数

static(静态、修饰符):static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据.

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

*
静态成员变量的访问方式:
方式一: 使用对象进行访问。
对象.属性名
方式二:可以使用类名进行访问。
类名.属性名*

this关键字的作用:

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

*
注意:

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

  • this关键字调用其他的构造函数时,必须要在第一个语句。
  • this关键字调用构造函数时不能出现相互调用,会造成死循环。
  1. 非静态成员变量不能类名直接访问,只能使用对象进行访问。
    2.
    千万不要为了方便访问成员变量而使用static修饰,一定要是该数据是共享数据
    时才使用static修饰。*

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

static修饰方法(静态的成员方法):
访问方式:
方式一:可以使用对象进行访问。
对象.静态的函数名();

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

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

方式二:可以使用类名进行访问。

注意:

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

类名.静态函数名字。

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

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

推荐使用是类名直接访问静态的成员。

静态函数要注意的事项:

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

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

静态数据的生命周期:

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