目录
static关键字(与对象无关)
修饰属性----静态属性
一个类中使用static修饰的成员变量和类是相关的,和对象无关,直接使用类名称访问
静态属性在JVM的方法区保存
public class ClassTest {
public static void main(String[] args) {
Person per = new Person();//根据类产生一个对象
per.name = "张三";
per.age = 18;
per.show();//此时per.age=18
Person per1 = new Person();
per1.name ="李四";
per1.age = 20;
per1.show();//per1.age=20
per.show();//更改per1的age属性后对per是可见的
//一个对象中的属性更改了之后,所有的对象都是共享的
}
}
class Person{
public String name;
public static int age;//加上static关键字表明和对象无关,类中所有对象共用age属性
public void show(){
System.out.println("姓名为:"+name+",年龄为:"+age);
}
}
//输出
姓名为:张三,年龄为:18
姓名为:李四,年龄为:20
姓名为:张三,年龄为:20
注意 虽然对象为null,但是不会运行报错,因为static关键字和对象无关
public class ClassTest {
public static void main(String[] args) {
Person per = null;
System.out.println(per.age);
}
}
class Person{
public String name;
public static int age = 18;//加上static关键字表明和对象无关,类中所有对象共用age属性
}
修饰方法----静态方法(工具方法)
直接通过类名称调用,不需要产生该类的对象
Arrays.sort();
Arrays.opyOf();
注意
- 静态方法不能访问类中成员变量,成员变量是需要通过对象调用,但是静态方法不需要产生对象
- 静态方法可以访问类中静态变量
- 成员方法可以访问类中静态变量,不能定义静态方法
- 成员方法可以访问类中成员方法
public class ClassTest {
public int a;
public static int count;
public static void change(){
count = 10;
//a =10会报错,因为静态方法不能访问成员变量
}
public static void main(String[] args) {
ClassTest.change();
System.out.println(ClassTest.count);
}
}
//输出10