静态/非静态成员 以及 private/public 关键字的再理解

忘了记 记了忘 忘了再记 并一次次的加深理解。

之所以我们不说 静态/非静态属性 是因为static关键字不但可以修饰属性 也可以修饰方法(甚至类)。因此我们这里统一称作 静态/非静态成员
类的静态成员与非静态成员的主要区别在于:
静态只能通过 类名.属性名/函数名进行调用 比如:String.valueOf(),类的实例是不能直接调用的
而非静态修饰的成员 只有在此类被实例化之后 才能通过这个实例化的成员进行调用。这个是最常用的办法 因为大多数类里面的东西是没有static关键字的。

其他两者之间的区别:

  1. 内存分配
    静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;
    而非静态变量需要被实例化后才会分配内存。
  2. 生存周期
    静态变量生存周期为应用程序的存在周期;
    非静态变量的存在周期取决于实例化的类的存在周期。
  3. 共享方式
    静态变量是全局变量,被所有类的实例对象共享,即一个实例的改变了静态变量的值,其他同类的实例读到的就是变化后的值;
    非静态变量是局部变量,不共享的。
  4. 访问方式
    静态成员不能访问非静态成员;(就是常见的:用静态关键字修饰的方法 无法调用非静态方法和属性)
    非静态成员可以访问静态成员。 @格色情调1984 from CSDN

private/public当然也可以修饰属性或者方法
private是默认的访问级别 就是说如果你想要用public 就一定要把public显式的写出来。
关于这两个关键字的区别 简而言之 就是Private是仅可以在声明她的类体内被访问(就像是一个在类内的局部变量)但是public的话 被其修饰的成员的访问 可以来自类内部 也可以来自类外。

总结性的来说 之所以
String.valueOf() 这个能被正确的使用 是因为 String这个类的valueOf方法 是一个静态变量,而且其访问级别是Public

posted @ 2020-07-06 02:50  EvanMeetTheWorld  阅读(53)  评论(0)    收藏  举报