集合(11):静态导入

1、静态导入概述

可以直接导入到方法的级别
//使用静态导入,不用写类名,直接写方法名就可以调用该方法
//导入在类上面,使用什么方法导入什么方法就行

2、静态导入格式

格式:import static 包名….类名.方法名;

举例:import static java.lang.Math.abs;

3、注意事项

注意事项
        方法必须是静态的
        如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。
        由此可见,意义不大,所以一般不用,但是要能看懂

4、静态导入案例

(1)调用Java自带的方法

import static java.lang.Math.abs;
import static java.lang.Math.pow;
public class StaticImportDemo {
    public static void main(String[] args) {
        //调用Math类中的方法
        System.out.println(Math.abs(-100));//求绝对值,结果为100
        System.out.println(Math.pow(2,3));//求2的3次方,结果为8.0
        System.out.println(Math.max(200,300));//求最大值,结果为300

        //使用静态导入,不用写类名,直接写方法名就可以调用该方法
        //导入在类上面,使用什么方法导入什么方法就行
        System.out.println(abs(-88));//88
        System.out.println(pow(3,2));//9.0
    }
}
/*
	补充:
		在静态导入到时候,也可以直接写import static java.lang.Math.*;
		只需这样导入一次,可以调用Math类中的任意方法;
		不建议这样做,虽然看着省事,但是在以后开发的时候会出问题
		我们在使用的时候,需要什么方法,就导入什么方法
*/

(2)我们自己创建方法,然后再调用

//同一个包下自定义一个类
public class StaticClass {
    public static void show(String s){
        System.out.println("这是自定义类中的show方法:"+s);
    }
    
    public static String fun(){
        return "李玉伟无敌";
    }
}
import static java.lang.Math.abs;
import static java.lang.Math.pow;
import static myself.day24.StaticClass.show;
import static myself.day24.StaticClass.fun;
public class StaticImportDemo {
    public static void main(String[] args) {
        //调用Java内部的方法
        System.out.println(abs(-88));//88
        System.out.println(pow(3,2));//9.0

        //调用自定义方法
        show("首富阿伟");//该方法没有返回值,直接调用输出
        System.out.println(fun());
    }
}
            执行结果如下:
                        88
                        9.0
                        这是自定义的show方法:首富阿伟
                        李玉伟无敌

                        Process finished with exit code 0

(3)当静态导入我们自定义的方法名与本类中的方法名冲突了,调用该方法的时候

调用的是本类中的方法

//同一个包下自定义一个类
public class StaticClass {
    public static void show(String s){
        System.out.println("这是自定义类中的show方法:"+s);
    }
    
    public static String fun(){
        return "李玉伟无敌";
    }
}
import static java.lang.Math.abs;
import static java.lang.Math.pow;
import static myself.day24.StaticClass.show;
import static myself.day24.StaticClass.fun;
public class StaticImportDemo {
    public static void main(String[] args) {
        //调用Java内部的方法
        System.out.println(abs(-88));//88
        System.out.println(pow(3,2));//9.0

        //调用自定义方法
        show("首富阿伟");//该方法没有返回值,直接调用输出
        System.out.println(fun());
    }
    public static void show(String s){
        System.out.println("这是本类自定义的show方法:"+s);
    }
}
            执行结果如下:
                        88
                        9.0
                        这是本类自定义的show方法:首富阿伟
                        李玉伟无敌

                        Process finished with exit code 0

(4)在案例3中,当静态导入我们自定义的方法名与本类中的方法名冲突了,调用该方法的时候

调用的是本类中的方法;如果我们就想要调用自定义的方法,该如何做?

①通过自定义类名调用

②将前缀路径写完整

public class StaticClass {
    public static void show(String s){
        System.out.println("这是自定义的show方法:"+s);
    }

    public static String fun(){
        return "李玉伟无敌";
    }
}
import static java.lang.Math.abs;
import static java.lang.Math.pow;
import static myself.day24.StaticClass.show;
import static myself.day24.StaticClass.fun;
public class StaticImportDemo {
    public static void main(String[] args) {
        //调用Java内部的方法
        System.out.println(abs(-88));//88
        System.out.println(pow(3,2));//9.0

        //调用自定义方法
        show("首富阿伟");//该方法没有返回值,直接调用输出
                            //此时调用的是本类的fun方法
        System.out.println(fun());

        //如果想要调取自定义类中的fun方法,可以通过自定义类名调取
        StaticClass.show("阿伟是个场人");
        //或者将前缀路径写完整,也可以调取自定义类中的fun方法
        myself.day24.StaticClass.show("阿伟牛逼我滴宝贝");
    }
    
    public static void show(String s){
        System.out.println("这是本类自定义的show方法:"+s);
    }
}

            执行结果如下:
                        88
                        9.0
                        这是本类自定义的show方法:首富阿伟
                        李玉伟无敌
                        这是自定义的show方法:阿伟是个场人
                        这是自定义的show方法:阿伟牛逼我滴宝贝

                        Process finished with exit code 0