黑马程序员技术交流社区

标题: 以下代码为什么不对,该如何写才正确呢? [打印本页]

作者: 王竞    时间: 2014-3-19 16:28
标题: 以下代码为什么不对,该如何写才正确呢?
public class Demo1 {
        public static void main(String[] args) {
                Demo1 demo1 = new Demo1();

                //这里该如何new一个方法中的内部类出来???
                ??
               
                class Demo2 {
                        static int x = 0;        //为什么在这个内部类里面不能定义静态的变量???
                        public Demo2() {
                                x += 1;
                                System.out.println("这里是内部类" + x);
                        }
                }
        }
}

作者: 方青木    时间: 2014-3-19 16:34
内部类在成员位置上时,当内部类中定义了静态的成员时,内部类也必须被static修饰
应该是 static class Demo2{}
作者: 王竞    时间: 2014-3-19 17:07
方青木 发表于 2014-3-19 16:34
内部类在成员位置上时,当内部类中定义了静态的成员时,内部类也必须被static修饰
应该是 static class Dem ...

不对啊,我试过了,不能通过编译
作者: 学习代码    时间: 2014-3-19 17:08
静态只能修饰成员变量,不可以修饰局部变量
作者: 方青木    时间: 2014-3-19 17:17
抱歉,看错了,你的内部类定义在局部的,不可以被static修饰,所以内部不可以定义静态成员
作者: 青木郎    时间: 2014-3-19 17:29
静态成员不是对象的特性,它类似于C语言中的全局变量,而内部类通常是用来创建内部对象用的,所以把全局变量放在内部类中完全没有意义
作者: 郭黎明    时间: 2014-3-19 21:06
因为  class Demo2 是非静态的,所以它里面不能定义静态的变量
作者: 王竞    时间: 2014-3-19 23:15
学习代码 发表于 2014-3-19 17:08
静态只能修饰成员变量,不可以修饰局部变量

哦哦,这样啊、、谢谢
作者: 王竞    时间: 2014-3-19 23:16
青木郎 发表于 2014-3-19 17:29
静态成员不是对象的特性,它类似于C语言中的全局变量,而内部类通常是用来创建内部对象用的,所以把全局变 ...

恩恩,明白咯
作者: 坏米饭    时间: 2014-3-20 00:41
你用Myeclipse或eclipse等开发工具就能很好的学习如何处理一些编译时的问题。红色叉叉报错,点他有注解。





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