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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Emperors 中级黑马   /  2014-4-11 21:53  /  926 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Emperors 于 2014-4-14 01:01 编辑

是不是主语句中没有static,就是非静态?

6 个回复

倒序浏览
去掉 static 就不是主函数了,

虚拟机只认为是一个名字叫 main 的方法了!
回复 使用道具 举报
楼上说的对,main函数是给JVM来调用的,而在刚刚调用的使用,是没有对象的对吧,这是很显然的一件事,调用方法两种方式  
1 对象.方法()  2  类名.方法()

所以只能用第二中方法,而第二种方法是静态方法,主函数优先于对象存在于内存中,所以必须是静态static的,这样才能调用,main被JVM调用了,从成为了程序的唯一入口。
回复 使用道具 举报
public static void main(String[] args)
这里的static必须要加的,这是JVM识别程序入口的地方,不能乱改动,你就当作定死模块的记住吧
至于其他函数有static或者变量,那就是设置是否为static 静态的意思
回复 使用道具 举报

  首先static可以修饰类,类成员(变量,函数),还有static代码块。被static修饰的成员变量和成员方法独立于该类的任何对象,即它们不需要对象(实例)存在而存在,能被其他对象调用;当该类被加载,JVM根据类名直接找上static,把它们先加载了,无需实例,所以static在主句中属于类而不是对象。
  主语句main 是被赋予特殊含义,即这是程序入口,也是程序结束处。
  假如不是静态,要启动main方法就得创建实例,但是mian是主程序,然后创建实例又回到main。  
   这个main方法与其他对象是无关的,所有功能都是main方法里面函数调用,产生对象。所以也不需要为了使用main方法去创建一个实例,直接static静态设置,类被加载,它也直接被加载。
  
  ----------期待进入黑马----便开始从这努力-----黑马是个好的起点----
回复 使用道具 举报
skyfly 发表于 2014-4-12 00:11
  首先static可以修饰类,类成员(变量,函数),还有static代码块。被static修饰的成员变量和成员方法 ...

谢谢   欧了
回复 使用道具 举报
首先你应该知道java内存机制,静态的东西 是放在data segment的,是不能通过对象名来调用的,可以通过类名来调用,在一个程序开始的时候JVM要找到main函数,但是呢,在JVM调用main()的时候又没有new main()的对象来指向main(),所以必须有static,去掉static的确是非静态的了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马