黑马程序员技术交流社区
标题:
关于static的问题
[打印本页]
作者:
杨银川
时间:
2011-12-3 18:03
标题:
关于static的问题
本帖最后由 杨银川 于 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 ,谁可以解释一下啊?
作者:
颜秉武
时间:
2011-12-3 18:19
你这个东西 我看的很迷茫啊!主函数居然放在内部类中,我不知道这是高级java知识.还是楼主写错了;
在这只要内部类可以用static修饰,因为static只可以修饰类的成员,目的是,被修饰的只要加载类变量和方法就可以初始化
变量:
静态变量被该类中的所有对象所共享
可以用"类名.变量名"形式直接访问
静态变量不用创建对象就能使用 在类加载的时候初始化
定义一个类时 如果一个变量需要被所有对象所共享 就用static修饰
方法:
在类加载后就可以使用
可以通过"类名.方法名"调用
静态的方法中不能使用外部非静态成员 (静态方法可以不创建对象就使用 而外部非静态成员只有创建后才能使用)
静态方法中不能使用this关键字
内部类:
类加载后就可以创建对象. 使用"new 外部类名.内部类名()"创建. 不能使用外部非静态成员
静态成员都是在类加载后执行 执行顺序 从上到下
就是这样,希望能帮助楼主解决疑惑
作者:
王德云
时间:
2011-12-3 18:34
本帖最后由 王德云 于 2011-12-3 18:36 编辑
main函数是一个特殊的函数,作为程序的主入口,被java虚拟机调用的。
static代表随着类的加载就已经存在了。
main函数是固定格式,被java虚拟机识别,建议先看一下毕老师的视频教程。
再者,如果说默认是静态的,那static何用?
作者:
许邦存
时间:
2011-12-3 18:42
主函数不应该在内部类,至于static就是静态修饰词,可修饰方法和代码块,它修饰的方法中不能有非静态变量,不和对象联系在一起,随类的加载而加载,且只能被加载一次,会在类构造new出新类在堆中前执行。至于楼主所问的问题我觉的还是按照正确的来吧,有些问题确实不好理解就先放在一边。
作者:
段波
时间:
2011-12-3 19:05
呵呵!在class xx 前加上static 代码是成立的!
CalendarDemo 类内部创建了一个内部类xx,这个类其实也可以看成是CalendarDemo类的一个属性,类xx中有一个静态方法,静态方法是的类共生而不依托于对象而存在,当加加载类CalendarDemo时,就会加载该中的一些静态成员或方法,类xx不是静态的,那么就不用加载,但,类xx中又有一个静态方法需要被加载,此是时类xx又没有被加载,所以就会产生矛盾, 自然就会报错!但如果类xx是静态的,加载类CalendarDemo时就被加载,当然顺理成章的就可以加载它内部的静态方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2