Java-final和static怎么理解

final:

final比较关键的就是当它修饰变量时表示常量,即只能被赋值一次,并且赋值后不再改变

  • final修饰符有多种作用:

    • final修饰的方法可以阻止被覆写;

    • final修饰的class可以阻止被继承;

    • final修饰的field必须在创建对象时初始化,随后不可修改。


static:

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块

  • static修饰符:

    • static在类里面;

    • static不可以修饰局部变量;

    • static修饰的属性强调它们只有一个。

    下面例子中只知道唯一的ppp,但是不知道aaa,所以会报错


java中的main方法为什么必须写成static?

java的main方法是什么?

main是java应用的入口方法。

在《Java语言规范》中,对于Java虚拟机的启动给出了明确的定义:Java虚拟机是通过加载指定的类,然后调用该类中的main方法而启动的。

也就是说,通过调用某个指定类的main方法,传递给他单个的字符串数组参数,就可以启动Java虚拟机。

一个main方法想要被执行,需要经过几个步骤,首先对应的类需要被JVM加载,然后需要进行链接和初始化、之后才是调用main方法。

main必须是public,不然JVM就调不到了。

静态(static)的特点:

那就是静态方法独立于该类的任何对象,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们

比如我们例子中的ppp和aaa,没有实例化Women,但是main还是可以找到对应的ppp,因为ppp是static。

main方法为什么返回void?

在Java中,退出过程是由JVM进行控制的。

JVM是不会管main方法有没有执行完的,他都会终止所有行为并退出,这时候main方法的返回值是没有任何意义的

参考:
https://zhuanlan.zhihu.com/p/283389084