Java自学|static详解

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欢迎留下您的宝贵建议】爱情纯属天性,不用思考。你不能为爱而爱,

Java自学|static详解

相关文章:

你感兴趣的文章:

标签云: