Java自学|static详解
1.静态属性
我们线定义一个Person类,他有一个静态属性age和一个和非静态属性name:
public class Person{ private static int age; //静态属性 private String name; //非静态属性 public static void main(String[] args) { System.out.println(age); //直接用静态属性,正常 //System.out.println(name); //直接用非静态属性,报错 }}
这个程序,是没有任何问题的,能直接输出age,但是如果我们将第二个输出语句的注释符去掉的话,就会出现错误:
这个问题,我们之前也提到过,因为静态属性是有类的时候就加载出来了,而非静态属性必须要在实例化了之后才会生成。
2.静态方法
我们线定义一个Person类,他有一个非静态方法say2,和静态方法say1和main
public class Person{ //静态方法 public static void say1(){ } //非静态方法 public void say2(){ } public static void main(String[] args) { }}
我们在main方法中调用say1和say2,会发现say1正常调用,而say2会出现报错,不同的尝试,我们会发现,可以在say1中调用say1,say2中调用say2(这里可以和递归联系一下),也可以在say2中调用say1,但是不能在say1中调用say2.
3.静态代码块
我们还是定义一个Person类,如下:
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(); }}
我们在main方法中new了一个Person,发现输出的顺序为:
我们再做另一个测验
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(); Person person1 = new Person(); }}
我们new了两个对象,输出发现静态代码块只输出一次,这说明了,static代码块只执行一次
4.静态导入包
假如我们要生成一个随机数,我们可以用Math的random方法:
public class Person { public static void main(String[] args) { System.out.println(Math.random()); }}
如果我们不想每次都写一个Math,是吧,很麻烦,那么我们可以怎么操作呢?
正常情况下,我们要使用一个包,是不是直接导入这个包就行了
import java.lang.Math;
我们可以加上static直接导入这个random方法:
import static java.lang.Math.random;
这样就可以直接用random了不用加Math.
世上没有白走的路,每一步都算数!
跟上狂神说Java!
每个牛B的人背后都有段苦逼的岁月,只要像sb一样的坚持,终将牛B!
【本文转自:韩国cn2服务器 kt.html欢迎留下您的宝贵建议】爱情纯属天性,不用思考。你不能为爱而爱,