网站续费后为何还不能用,万网怎样做网站调试,关于产品网站建设的问题,枣强网站建设培训学校关于java中static详解
我们接触static的时候不是在学习面向对象的时候接触的#xff0c;是在学习方法的时候就有过接触#xff0c;我们之前对static的了解只是静态的修饰#xff0c;本篇文章我们对static这个修饰符做一个详细的理解#x1f600;。
static 如果在属性上是在学习方法的时候就有过接触我们之前对static的了解只是静态的修饰本篇文章我们对static这个修饰符做一个详细的理解。
static 如果在属性上叫做静态属性。static 如果在方法上叫做静态方法。
一、static静态属性
1、我们来新建一个软件包创建一个学生类Student类。
package oop.Demo09;public class Student
{private static int age;//静态属性private double score;//非静态属性
}2、我们在这个类里面定义一个main方法psvm
package oop.Demo09;public class Student
{private static int age;//静态属性private double score;//非静态属性public static void main(String[] args) {Student student new Student();int age1 student.age;System.out.println(Student.age);//通过类调用叫做类变量System.out.println(student.age);//通过对象调用}
}
3、如果我们用类Student直接调用score编译器会报错因为非静态的类不可以直接调用。
4、我们如果要用很多类去操作属性就会用到static我们会在后面的多线程详细说明类直接调用属性。
二、static静态方法
package oop.Demo09;public class Student
{private static int age;//静态属性private double score;//非静态属性public void run()//静态方法{System.out.println(run);}public static void go()//非静态方法{System.out.println(go);}public static void main(String[] args) {//如果我们想调用run需要实例化Student student new Student();student.run();//如果我们想调用go可以直接类调用Student.go();//因为go在当前的类里面也可以直接调用go();}
}因为静态方法是跟着这个类一起加载的加载Student的时候就有go方法了。
三、静态代码块
package oop.Demo09;public class Person
{{//代码块匿名代码块}static{//静态代码块静态代码块}
}静态代码块用于加载一些初始化的数据类加载的时候直接执行永久只执行一次。
1、我们在代码块静态代码块中都写一行代码并且写一个构造器ALTINS
package oop.Demo09;public class Person
{{System.out.println(匿名代码块);}static{System.out.println(静态代码块);}public Person(){}public static void main(String[] args) {Person person new Person();}
}2、我们定义一个main方法来看一下这几样东西的加载顺序我们执行一下代码输出一下结果。
静态代码块
匿名代码块
构造方法我们可以看到先执行了static代码块然后执行了匿名代码块最后执行了构造方法我们再来new一下Person。
package oop.Demo09;public class Person
{{System.out.println(匿名代码块);}static{System.out.println(静态代码块);}public Person(){}public static void main(String[] args) {Person person new Person();System.out.println();Person person new Person();}
}静态代码块
匿名代码块
构造方法匿名代码块
构造方法我们可以看到静态代码块不执行了执行的是匿名代码块和构造这就是我们上面说的静态代码块只执行一次。
匿名代码块赋初始值。
四、静态导入包
1、我们再创建一个test类。
package oop.Demo09;public class Test {public static void main(String[] args) {System.out.println(Math.random());//数学工具类返回随机数的方法}
}我们执行以下代码第一次返回。
0.017777263064599036我们执行以下代码第二次返回。
0.7806614959036942、我们不想每次都写出Math就可以提前导入
package oop.Demo09;
import static java.lang.Math.random;//静态导入包
public class Test {public static void main(String[] args) {System.out.println(random());}
}3、我们也可以导入PI。
package oop.Demo09;
import static java.lang.Math.random;//静态导入包
import static java.lang.Math.PI;//静态导入包
public class Test {public static void main(String[] args) {System.out.println(random());System.out.println(PI);}
}
4、我们Ctrl左键 点击进入Math类会发现Math类是final修饰的常量修饰就不会有子类了不会被继承。
public final class Mathfinal以后断子绝孙