黑马程序员技术交流社区

标题: 成员变量的问题 [打印本页]

作者: 打工人    时间: 2012-10-17 09:24
标题: 成员变量的问题
本帖最后由 冯海霞 于 2012-10-17 09:42 编辑

成员变量不是作用于整个类么
为什么这样子不对呢
class a
{ int z=2;
        public static void main(String[] args)
        {
                System.out.println(z);
        }
}
作者: 严海荣    时间: 2012-10-17 09:35
public static final int z =2;这个作用于全局的
作者: 李贺晓    时间: 2012-10-17 09:36
你的Z为非静态变量,在静态函数中不能直接调用非静态变量的
你可以把z定义为静态变量,就可以了
class a
{  static int z=2;
        public static void main(String[] args)
        {
                System.out.println(z);
        }
}
或者定义一个对象来调用成员变量
class a
{   int z=2;
        public static void main(String[] args)
        {
                a a1=new a();
                System.out.println(a1.z);
        }
}

作者: 打工人    时间: 2012-10-17 09:41
李贺晓 发表于 2012-10-17 09:36
你的Z为非静态变量,在静态函数中不能直接调用非静态变量的
你可以把z定义为静态变量,就可以了
class a

so................
作者: 李贺晓    时间: 2012-10-17 09:45
冯海霞 发表于 2012-10-17 09:41
so................

呵呵,成员变量、局部变量、静态变量这块是挺繁琐的,多看看就好了:D
作者: 马良    时间: 2012-10-17 10:19
main函数前面有static修饰,是一个静态函数,
而你定义的成员变量z没有被定义成静态的,
静态函数不可以直接调用非静态的变量,
所以你的这个主函数不可以调用z。
作者: 打工人    时间: 2012-10-17 10:22
马良 发表于 2012-10-17 10:19
main函数前面有static修饰,是一个静态函数,
而你定义的成员变量z没有被定义成静态的,
静态函数不可以直 ...

就是说 虽然成员变量是作用在类中,但是,又有静态非静态的局限。。。是吧
作者: 马良    时间: 2012-10-17 10:31
冯海霞 发表于 2012-10-17 10:22
就是说 虽然成员变量是作用在类中,但是,又有静态非静态的局限。。。是吧 ...

嗯哪····可以这么理解。
对于非晶态的变量和方法,需要创建类的实例对象后才可以使用,但是静态方法在使用前不需要创建实例对象,可以用类名直接访问静态成员方法。


作者: 邹海洋    时间: 2012-10-17 10:47
建议冯海霞同学把a改为A 纯属建议 欢迎拍砖
作者: 打工人    时间: 2012-10-17 11:02
邹海洋 发表于 2012-10-17 10:47
建议冯海霞同学把a改为A 纯属建议 欢迎拍砖

恩恩,谢谢这位同学
作者: 陈军    时间: 2012-10-17 15:20
静态不能访问非静态。。。
int Z=2是非静态的,。。而主函数是静态的
作者: 曾浩    时间: 2012-10-17 15:26
成员的东西使用:1. 通过对象来调用
                2. 通过类直接调用(只限静态类型的)




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