黑马程序员技术交流社区

标题: static练习小程序 [打印本页]

作者: Richard926    时间: 2015-4-13 22:25
标题: static练习小程序
下面这个程序是练习static关键字的,主要是体现了static关键字的“可以被所有对象共享”这一特性。
class StaticDeno
{
        public static void main(String[] args)
        {
                Static s1 = new Static("张三",45,"中国");
                Static s2 = new Static("李四",40);
                Static s3 = new Static("王五",50);
                s1.show();
                s2.show();
                s3.show();
        }[attach]68717[/attach][attach]68717[/attach]
}

class Static
{
        private String name;
        private int age;
        private static String country;

        public Static(){}
        public Static(String name,int age)
        {
                this.name = name;
                this.age = age;
        }
        public Static(String name,int age,String country)
        {
                this.name = name;
                this.age = age;
                this.country = country;
        }
        public void show()
        {
                System.out.println(name+"***"+age+"***"+country);
        }
}
输出的结果为:




作者: 是戲′終落幕    时间: 2015-4-13 22:26
顶!!!!!!!!!!!!!!!!!!
作者: 静心明德    时间: 2015-4-13 22:43
这个编译就有问题啊,show()方法不是静态的,里面的name属性是静态的,这样会报“无法在非静态上下文中调用静态的变量”异常。
作者: Richard926    时间: 2015-4-14 00:13
静心明德 发表于 2015-4-13 22:43
这个编译就有问题啊,show()方法不是静态的,里面的name属性是静态的,这样会报“无法在非静态上下文中调用 ...

没有问题啊D:\
作者: 静心明德    时间: 2015-4-14 00:31
Richard926 发表于 2015-4-14 00:13
没有问题啊

呵呵,回复了就记起来了,不好意思。
作者: zlp19940327    时间: 2015-4-14 00:41
加油加油
作者: yearn    时间: 2015-4-14 09:19
不错,我也去试试!
作者: Zack    时间: 2015-4-14 10:47
问一下 不是说static关键字必须在定义时赋值吗 这样定义country静态变量为什么可以编译通过
作者: 百思不得解    时间: 2015-4-14 10:51
顶!!!!
作者: mah707    时间: 2015-4-14 10:56
又是一个初始化顺序的问题,为感觉这个问题问的就是构造方法先初始化还是静态代码先初始化的问题;
作者: 姚海明    时间: 2015-4-14 13:12
静心明德 发表于 2015-4-13 22:43
这个编译就有问题啊,show()方法不是静态的,里面的name属性是静态的,这样会报“无法在非静态上下文中调用 ...

静态方法只能访问静态变量,非静态方法可以访问静态变量。是不是这样?
作者: 姚海明    时间: 2015-4-14 13:24
你在staticDemo类中创建Static实例s1时传了“中国”,因为Country是静态的可以共享,s2、s3的country值还是中国,虽然可以运行,原则上不知道程序能不能这样写。如果清楚的话可以给我讲讲吗?不是很懂。。。(static可以这样传值吗?)
作者: Richard926    时间: 2015-4-14 23:28
静心明德 发表于 2015-4-14 00:31
呵呵,回复了就记起来了,不好意思。

没事没事的
作者: mono    时间: 2015-4-15 09:43
赞一个、
作者: lurenge    时间: 2015-4-15 09:56
应该没有问题吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2