static

文章目录

    • 1.静态方法和实列方法的区别
      • 1.1调用外部类
      • 1.2 访问本类成员
    • 2.静态代码块
    • 3.静态导入包

1.静态方法和实列方法的区别

1.1调用外部类

在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

package com.company;

import java.sql.SQLOutput;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.net.URL;
import java.util.concurrent.*;

public class Main{
    public static void main(String[] args) {
        Text.print();
        //或者实例化
        Text text = new Text();
        text.print();


    }
}
class Text{
    public static void print(){
        System.out.println("可以调用");
    }
}

1.2 访问本类成员

本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。

之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,
而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,
如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。
基于同样的道理,静态方法中也不能使用关键字this。

main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。

package com.company;

import java.sql.SQLOutput;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.net.URL;
import java.util.concurrent.*;

public class Main{
    int a=1;
    static int b=1;
    public static void H(){
        System.out.println("H");
    }
    public void F(){
        System.out.println("F");
    }
    public static void go(){
        System.out.println("go");
        //允许访问静态方法H
        H();
        //允许访问静态属性
        System.out.println(b);

        //不允许访问实例方法
        //F();
        //不允许访问实例属性
        //System.out.println(a);
    }
    public void cc(){
        //全都可以访问
        go();
        H();
        F();
        System.out.println(a+" "+b);
    }
    public static void main(String[] args) {
        Text.print();
        Text text = new Text();
        text.print();
        go();

    }
}
class Text{
    public static void print(){
        System.out.println("可以调用");
    }
}

2.静态代码块

public class Main {
    //2:赋初始值
    {
        System.out.println("匿名代码块");
    }
    //1.只执行一次
    static {
        System.out.println("静态代码块");
    }
    public Main(){
        System.out.println("构造函数");
    }
    public static void main(String[] args) {
	// write your code here
        Main m = new Main();
        /*
        输出结果
        静态代码块
        匿名代码块
        构造函数
         */
    }
}

3.静态导入包

package com.company;
//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class Main {
    public static void main(String[] args) {
        System.out.println(random());
        System.out.println(PI);
    }
}

你可能感兴趣的:(Java)