JAVA静态static:
在定义一个类的时候,类中都会有相应的属性和方法,属性和方法的调用,都是通过new一个对象来调用的。那能不能不创建对象就可以调用到类的属性和方法呢?
可以的,我们可以通过static关键字来实现,static一般用来修饰类的属性和方法。
一、static的特点
1. 被static修饰的属性或方法属于类,而不属于类的某个对象。
static修饰的属性和方法属于类,也是各个对象共有的东西,一旦有一个对象对其属性值进行了改变,则其它对象中的static属性值都将改变
public class Demo{
private String name;
static String num = 100;
}
public class Test{
public static void main(String[] args){
Demo d1 = new Demo();
d1.num = 200;
Demo d2 = new Demo();
用对象d2来调取静态属性num,结果d2.num为200
}
}
2. 被static修饰的方法或属性可以并建议使用类名直接访问
类名.静态属性名
类名.静态方法(参数)
而通过new一个新对象来访问,会出现警告,不建议使用
对象名.静态属性----会出现警告,不建议
对象名.静态方法---会出现警告,不建议
public class Demo{
static String name; //静态属性
public static void method(){
System.out.println("静态方法");
}
}
public class Test{
public static void main(String[] args){
//直接用类名来调用
Demo.name;
Demo.method();
}
}
3. 使用static注意事项
A: 静态内容是优于对象存在的,静态内容存在于静态区,不能使用this super
public class Demo{
public int num = 100;
public static void method(){
System.out.println(this.num); //这样用是不允许的
}
}
B:同一个类中,静态成员只能访问静态成员
public class Demo{
public int num = 100;
public static int count = 200;
public static void method(){
System.out.println(num); //num为非静态属性,这样是错误的
System.out.println(count); //这样用是OK的
}
}
C: main方法为静态方法,仅仅为程序入口,它不属于任何一个对象,可以定义在任意类中。
4. 定义静态常量
开发中,我们想在类中定义一个静态常量,通常使用public static final来修饰,格式如下:
public static final 数据类型 变量名 = 值;
public static final String COMPANY_NAME = "baidu";
定义一个静态的方法:
public static void method(){
System.out.println("这是一个静态方法");
}
当我们想要调用静态的属性或方法时,可以不用创建对象,而直接用类名来调用
Demo.COMPANY_NAME
Demo.method();
注意:在接口interface中的每个成员,默认都使用public static final来修饰
所有接口中的属性和方法都是静态常量,由于接口没有构造方法,所以必段显式赋值,可以直接用接口名来访问
public interface Inter{
public static final int COUNT = 10;
}
访问:
Inter.COUNT
5:什么时候使用static?
对于属性:因为static属于所有对象共有的,所以一般拥有共有值的属性可以定义为static
对于方法:
一、如果方法里用到的全是static属性,则可以定义为static,如果还用到了非静态属性,则不可定义为static.
二、如果方法里既没有用到静态属性,也没有用到非静态属性,也可以定义为static方法。
浙公网安备 33010602011771号