A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 打工人 金牌黑马   /  2012-10-17 09:24  /  2279 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯海霞 于 2012-10-17 09:42 编辑

成员变量不是作用于整个类么
为什么这样子不对呢
class a
{ int z=2;
        public static void main(String[] args)
        {
                System.out.println(z);
        }
}

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 神马都是浮云

查看全部评分

11 个回复

倒序浏览
public static final int z =2;这个作用于全局的
回复 使用道具 举报
你的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);
        }
}

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
李贺晓 发表于 2012-10-17 09:36
你的Z为非静态变量,在静态函数中不能直接调用非静态变量的
你可以把z定义为静态变量,就可以了
class a

so................
回复 使用道具 举报
冯海霞 发表于 2012-10-17 09:41
so................

呵呵,成员变量、局部变量、静态变量这块是挺繁琐的,多看看就好了:D
回复 使用道具 举报
main函数前面有static修饰,是一个静态函数,
而你定义的成员变量z没有被定义成静态的,
静态函数不可以直接调用非静态的变量,
所以你的这个主函数不可以调用z。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
马良 发表于 2012-10-17 10:19
main函数前面有static修饰,是一个静态函数,
而你定义的成员变量z没有被定义成静态的,
静态函数不可以直 ...

就是说 虽然成员变量是作用在类中,但是,又有静态非静态的局限。。。是吧
回复 使用道具 举报
马良 中级黑马 2012-10-17 10:31:33
8#
冯海霞 发表于 2012-10-17 10:22
就是说 虽然成员变量是作用在类中,但是,又有静态非静态的局限。。。是吧 ...

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

回复 使用道具 举报
建议冯海霞同学把a改为A 纯属建议 欢迎拍砖
回复 使用道具 举报
邹海洋 发表于 2012-10-17 10:47
建议冯海霞同学把a改为A 纯属建议 欢迎拍砖

恩恩,谢谢这位同学
回复 使用道具 举报
陈军 中级黑马 2012-10-17 15:20:35
11#
静态不能访问非静态。。。
int Z=2是非静态的,。。而主函数是静态的
回复 使用道具 举报
曾浩 中级黑马 2012-10-17 15:26:55
12#
成员的东西使用:1. 通过对象来调用
                2. 通过类直接调用(只限静态类型的)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马