欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java基础:static关键字详解

时间:2023-07-05

目录

属性

方法

静态代码块,匿名代码块,构造器的执行顺序

静态导入包

final 的特性:如果有final,就不能被继承了


属性

public class Student { private static int age;//静态的变量 多线程 private double score;//非静态的变量 public static void main(String[] args) { Student s1 = new Student(); System.out.println(Student.age);//静态的变量可以被多个类共享 //System.out.println(Student.score); 报红 //不是静态的变量,不可以直接用类名去调用 System.out.println(s1.age);//对象都是可以直接这样去调用 System.out.println(s1.score); }}

方法

//static : 类中使用修饰成员变量 方法使用的话就是成员方法public class Student { //方法 public void run(){ } public static void go(){ } public static void main(String[] args) { new Student().run();//非静态调用方法,需先new 一个对象再去调用; Student.go();//静态方法,不用去new一个对象,可以直接通过类名的方法去直接调用 go();//静态方法,在当前这个类里面,可以直接调用 //run();静态方法不能直接去调用非静态方法,类一加载,非静态还没出来,所以不能调用。 }}

静态代码块,匿名代码块,构造器的执行顺序

public class Person { { //代码块(匿名代码块) //创建对象时自动创建,它在构造器之前 } static{ //静态代码块 //和类一加载就直接执行,永久只执行一次 }}

public class Person { //匿名代码块第二个被执行 2 赋初始值 { System.out.println("匿名代码块"); } //静态代码块最先被执行 1 只执行一次 static { System.out.println("静态代码块"); } //构造方法最后被执行 3 public Person() { System.out.println("构造方法"); } public static void main(String[] args) { Person person1 = new Person(); // 说明执行的顺序不同 System.out.println("======================="); Person person2 = new Person(); // 说明静态代码块只执行一次 }}

静态导入包

//静态导入包import static java.lang.Math.random;import static java.lang.Math.PI;public class Test { public static void main(String[] args) { System.out.println(Math.random()); System.out.println(random());//有了静态导入包,Math都可以省略 System.out.println(PI); }}

final 的特性:如果有final,就不能被继承了

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。