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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨银川 黑马帝   /  2011-12-3 18:03  /  2479 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨银川 于 2011-12-3 19:05 编辑

public class CalendarDemo {
public static void main(String[] args) {
       
}
}
问题:main方法是静态的,那它的class没有申明是静态的,默认的是静态的吗?
如果这样写:
public class CalendarDemo {
class  xx{
   public static void main(String[] args) {
       
}
}

}
就会报错,因为缺static ,谁可以解释一下啊?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
你这个东西 我看的很迷茫啊!主函数居然放在内部类中,我不知道这是高级java知识.还是楼主写错了;
在这只要内部类可以用static修饰,因为static只可以修饰类的成员,目的是,被修饰的只要加载类变量和方法就可以初始化
变量:
        静态变量被该类中的所有对象所共享
        可以用"类名.变量名"形式直接访问
        静态变量不用创建对象就能使用  在类加载的时候初始化
        定义一个类时 如果一个变量需要被所有对象所共享 就用static修饰
方法:
        在类加载后就可以使用
        可以通过"类名.方法名"调用
        静态的方法中不能使用外部非静态成员 (静态方法可以不创建对象就使用  而外部非静态成员只有创建后才能使用)
        静态方法中不能使用this关键字
内部类:
        类加载后就可以创建对象. 使用"new 外部类名.内部类名()"创建. 不能使用外部非静态成员

静态成员都是在类加载后执行  执行顺序 从上到下
就是这样,希望能帮助楼主解决疑惑

点评

非常有用  发表于 2011-12-4 11:44

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王德云 于 2011-12-3 18:36 编辑

main函数是一个特殊的函数,作为程序的主入口,被java虚拟机调用的。
static代表随着类的加载就已经存在了。
main函数是固定格式,被java虚拟机识别,建议先看一下毕老师的视频教程。
再者,如果说默认是静态的,那static何用?

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
许邦存 来自手机 黑马帝 2011-12-3 18:42:28
板凳
主函数不应该在内部类,至于static就是静态修饰词,可修饰方法和代码块,它修饰的方法中不能有非静态变量,不和对象联系在一起,随类的加载而加载,且只能被加载一次,会在类构造new出新类在堆中前执行。至于楼主所问的问题我觉的还是按照正确的来吧,有些问题确实不好理解就先放在一边。

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
呵呵!在class  xx 前加上static 代码是成立的!
      CalendarDemo 类内部创建了一个内部类xx,这个类其实也可以看成是CalendarDemo类的一个属性,类xx中有一个静态方法,静态方法是的类共生而不依托于对象而存在,当加加载类CalendarDemo时,就会加载该中的一些静态成员或方法,类xx不是静态的,那么就不用加载,但,类xx中又有一个静态方法需要被加载,此是时类xx又没有被加载,所以就会产生矛盾, 自然就会报错!但如果类xx是静态的,加载类CalendarDemo时就被加载,当然顺理成章的就可以加载它内部的静态方法

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马