Java中static的妙用

一 点睛

在程序中如果用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类型声明的变量也叫类变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值