1.定义静态变量
一般形式:
[访问修饰符] static [变量类型] [变量名] = [值]
注:【访问修饰符】
主要包含 public 、protected、default、private (访问权限依次降低)
举例:
public class Penguin {
public static String SEX_FAMALE = "雌";
public static String SEX_MALE = "雄";
}
静态变量,又称类变量。
特点:
1.被所有对象共享,属于公共变量
2.必须定义在方法外,即使是静态方法也不可以
3.在调用时,对象和类名均可以调用,但一般用类名调用
2.定义静态方法
一般形式:
[访问修饰符] static [返回值类型] [方法名]
举例:(最简单的每个类都有的main方法 就是静态方法)
public static void main(String[] args) {
}
静态方法特点:
1.可用类名调用静态方法
2.静态方法可以在非静态方法中被调用,而非静态方法不能在静态方法中被调用
即:
public static void print(){
System.out.println("静态方法被调用了");
}
public void print_1(){
print();
System.out.println("非静态方法被调用了");
}
这样调用编译器不会报错
但是,如果 是按如下方式调用 :
public static void print(){
print_1();
System.out.println("静态方法被调用了");
}
public void print_1(){
System.out.println("非静态方法被调用了");
}
编译器就会报错如下:
Non-static method 'print_1()' cannot be referenced from a static context
3.静态方法中不能使用this关键字。
3.定义静态代码块
示例如下:
static{
System.out.println("静态代码块");
}
静态代码块会在程序载入时优先执行
执行顺序为:
静态代码块---------->>构造代码块------------>>普通代码块
4.静态导包
当我们需要同时用到同一个类的不同方法时,为了在编程中避免反复出现类名,可以选择静态导包的方式
示例如下:
import static java.lang.Math.*;
public class ImportDemo {
public static void main(String[] args) {
System.out.println(Math.sqrt(2));
System.out.println(Math.abs(-2));
System.out.println(sqrt(2));
System.out.println(abs(-2));
}
}
上例中,前两行的打印结果与后两行的打印结果完全相同。
(ps:静态导包的方式是jdk5.0之后出现,之前的版本不支持哦)
*以上就我对static用法的总结~(如果有不足的地方,希望大家在评论区多多补充)
感谢!!!