JVM
JVM,Java Virtual Machine(Java虚拟机)是可运行Java代码的假想计算机 。JVM是运行在操作系统之上的,它与硬件没有直接的交互。
- Java源文件,通过编译器,能够生产相应的.Class文件,也就是字节码文件,而字节码文件又通过Java虚拟机中的解释器,编译成特定机器上的机器码
main
main()方法是Java应用程序的入口方法,程序在运行的时候,第一个执行的方法就是main()方法.
- 方法名字必须是main,方法必须是public static void 类型,方法必须接收一个字符串数组的参数。
- 类中有main()方法,说明这是个java应用程序。通过JVM直接启动运行的程序.
- 由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名.main()直接调用,因此需要是限制为public static,对于java中的main方法,jvm有限制,不能有返回值,因此返回值类型为void。
main方法中还有一个输入参数,类型为String[],这个也是java的规范,main()方法中必须有一个入参,类型必须String[],至于字符串数组的名字,这个是可以自己设定的,根据习惯,这个字符串数组的名字一般和sun java规范范例中mian参数名保持一致,取名为args。因此,main()方法定义必须是:“public static void main(String 字符串数组参数名[])”。- main()方法中可以throw Exception.
- main()方法中字符串参数数组作用是接收命令行输入参数的,命令行的参数之间用空格隔开
- static代码块的内容会在main调用前调用
static
1.修饰成员属性
修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享.
2.修饰成员方法
- 相比于修饰成员属性,修饰成员方法对于数据的存储上面并没有多大的变化,因为方法本来就是存放在类的定义当中的。static修饰成员方法最大的作用,就是可以使用"类名.方法名"的方式操作方法,避免了先要new出对象的繁琐和资源消耗.
- 一个static修饰的方法,不能使用非static修饰的成员变量和方法,因为static修饰的方法是属于类的,如果去直接使用对象的成员变量,它会不知该使用哪一个对象的属性.
3.静态块
- 在创建对象时,static修饰的成员会首先被初始化,如果有多个static修饰的成员,那么会按照他们的先后位置进行初始化。
- 当没有创建对象,而是通过类去调用类方法时,尽管该方法没有使用到任何的类成员,static类成员还是在方法调用之前就初始化了,这说明,当我们第一次去使用一个类时,就会触发该类的static成员初始化。
- 静态块在类加载的时候就执行,这就说明静态块在new对象之前就会执行,而且一个类在第一次被使用的时候会被加载,然后在整个应用程序的生命周期当中不会再次被加载了,就加载这一次,所以静态块就执行一次,不会执行第二遍!
- 当初始化static修饰的成员时,可以将他们统一放在一个以static开始,用花括号包裹起来的块状语句中.
4.静态导包
- 导入包时,使用static关键字,而且在引入类的最后还加上了“.*”,它的作用就是将类中的所有类方法直接导入。不同于非static导入,采用static导入包后,在不与当前类的方法名冲突的情况下,无需使用“类名.方法名”的方法去调用类方法了,直接可以采用"方法名"去调用类方法,就好像是该类自己的方法一样使用即可。