一 点睛
在程序中如果用static定义属性的话,则此变量称为静态属性。
我们通过比较两个例子来说明static的妙用。
二 不用static
1 代码
class Person
{
String name;
String nation;
int age;
public Person(String name, String nation, int age)
{
this.name = name;//定义name属性
this.nation = nation;//定义city属性
this.age = age;//定义age属性
}
public String talk()//声明一个talk方法,返回个人信息
{
return "我是:" + this.name + ",今年:" + this.age + "岁,来自:" + this.nation;
}
}
public class noStaticDemo
{
public static void main(String[] args)
{
Person p1 = new Person("张三", "中国", 25);//实例化一个Person对象,张三
Person p2 = new Person("李四", "中国", 30);//实例化一个Person对象,李四
Person p3 = new Person("王五", "中国", 35);//实例化一个Person对象,王五
System.out.println(p1.talk());
System.out.println(p2.talk());
System.out.println(p3.talk());
}
}
2 运行
我是:张三,今年:25岁,来自:中国
我是:李四,今年:30岁,来自:中国
我是:王五,今年:35岁,来自:中国
3 图解

4 说明
不用static,相同的nation不能共享,如果程序要生产500个对象,每个对象里都有相同的nation属性,浪费存储空间,如果想修改所有人的nation,就要实施500次nation属性的修改,太麻烦。
三 用static
1 代码
class Person
{
static String nation = "中国";
String name;
int age;
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
public String talk()
{
return "我是:" + this.name + ",今年:" + this.age + "岁,来自:" + nation;
}
}
public class staticDemo
{
public static void main(String[] args)
{
Person p1 = new Person("张三", 25);
Person p2 = new Person("李四", 30);
Person p3 = new Person("王五", 35);
System.out.println("修改之前信息:" + p1.talk());
System.out.println("修改之前信息:" + p2.talk());
System.out.println("修改之前信息:" + p3.talk());
System.out.println(" ************* 修改之后信息 **************");
// 修改后的信息
p1.nation = "美国";
System.out.println("修改之后信息:" + p1.talk());
System.out.println("修改之后信息:" + p2.talk());
System.out.println("修改之后信息:" + p3.talk());
}
}
2 运行
修改之前信息:我是:张三,今年:25岁,来自:中国
修改之前信息:我是:李四,今年:30岁,来自:中国
修改之前信息:我是:王五,今年:35岁,来自:中国
************* 修改之后信息 **************
修改之后信息:我是:张三,今年:25岁,来自:美国
修改之后信息:我是:李四,今年:30岁,来自:美国
修改之后信息:我是:王五,今年:35岁,来自:美国
3 图解


4 说明
所有的对象指向同一个nation属性,只要当中有一个对象修改了nation属性的内容,则所有对象对会被同时修改。
用static方式声明的属性,也可以用类名直接访问,所以用static类型声明的变量也叫类变量。

652

被折叠的 条评论
为什么被折叠?



