写在前面:
-
在我们新建的一个类(class)里面,可以直接输入一些代码块;
-
例如直接打上大括号,里面便可以输出一些东西(sout),或者是赋一些初值;
-
也可以实现静态代码块的,只需要在大括号的前面加上 static
特别注意:如果要执行这个class,这个static会首先执行,而且只执行一次; -
另外一个可以在这个类里面,输出的就是,构造方法,即public 一个方法
上述的代码如下 -
而且,它们也会有很多明显的先后顺序,***静态第一 -->匿名第二 --> 构造方法最后
-
static是跟 ‘类’ 一块加载出来的
public class Person { { System.out.println("这是个匿名代码块"); }//匿名代码块, 赋一些初始值 static{ System.out.println("这是个静态代码块"); }//静态代码块 ; 只执行一次 public Person(){ System.out.println("这是个构造方法"); } public static void main(String[] args) { Person person = new Person();//这个样就能够执行上述的三个输出语句 System.out.println("=============="); Person person1 = new Person();//能够执行除了static的其它语句 } }
static的使用
-
静态的变量,可以直接用类名访问,但是非静态的方法不能够,必须new才行
public class Person { private static int age ;//静态 private double score;//非静态 public static void main(String[] args) { Person person = new Person();//new出来了 System.out.println(Person.age);//大写的类名,Person System.out.println(person.score);//小写的对象名,person } }
-
静态的方法:
先来回顾一下如何定义一个方法private void run(){//非静态的方法 System.out.println("跑起来了"); } private static void go(){//静态的方法 System.out.println("走起来了"); }
在main方法中调用的时候,static的方法,可以直接用方法的名,其他的都不用加; 但是非静态的方法,需要先new出来,然后再用对象名 . 方法名
public static void main(String[] args) { Person person = new Person(); person.run();//非静态 go();//静态 }
-
静态代码块(最先执行,且只执行一次)
static { //静态代码块, 只执行一次 }
匿名代码块(第二执行)
{ //匿名代码块 }
构造方法(注意:public 后面是 类名 :Person )(最后执行)
public Person(){ System.out.println("这是构造方法"); }
-
静态导入包
import static java.lang.Math.random; import static java.lang.Math.PI;//这两个是在导入两个包,导入之后,我们就能够在之后的使用 public class Person { public static void main(String[] args) { System.out.println(random()); System.out.println(PI); } }
-
final 是常量修饰符,通过final 修饰后,没有子类,不能够继承
public class Student extends Person{//这里就会报错 public final class Person