集合(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