黑马程序员技术交流社区

标题: java中的main()方法 [打印本页]

作者: Destiny    时间: 2012-3-1 10:33
标题: java中的main()方法
都说静态方法不能访问非静态方法和变量,那么主方法为何就可以调用其他类的非静态方法呢?这个我想不通。。。。。  能不能把它理解成特殊情况呢?没有Main就不能找到入口了?
作者: 王国华    时间: 2012-3-1 10:50
java程序从main函数开始执行,main函数是java程序入口。
作者: 张锐    时间: 2012-3-1 12:18
main只是虚拟机找程序的入口,抛开这点和其他的函数是一样的,LZ那里看到main调用了其他类的非静态方法呢?
作者: 唐学松    时间: 2012-3-1 12:50
话说“程序入口设成静态就不需要JVM在程序运行的时候再new一个新的对象”“不是静态的话,谁来new()这个对象呢? ”我不太明白俄 我对JAVA的理解还不是很深的说
作者: dangfei    时间: 2012-3-1 13:06
  1. 都说静态方法不能访问非静态方法和变量,那么主方法为何就可以调用其他类的非静态方法呢?
复制代码
静态方法不可以直接调用非静态方法,但当非静态方法所在的类实例化后(即new())就可被静态方法调用.主函数调用其他非静态方法也要先实例化,这不是什么特殊情况所有的静态方法都遵循这一原则。楼主可做试验验证一下。
作者: 杨波    时间: 2012-3-1 18:52
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据)
那么该功能可以定义成静态函数。
main:不是关键字,可以被JVM识别,JAVA从main函数开始执行。
作者: 沈样    时间: 2012-3-1 19:30
本帖最后由 沈样 于 2012-3-1 19:31 编辑

我感觉没什么特殊的:java虚拟机默认main是程序的执行入口,static是因为他跟类没有关系,相当于一个工具方法,至于你说的静态调用静态是因为类创建首先加载static方法,所以类真的变量都没有初化所以不能用,为什么能调用类非静态方法是因为class类  类名 = new class();这句话把类加载进来了,所以他可以调用自身的非静态方法跟变量,如有错误请指出呵呵
作者: 王杰    时间: 2012-3-1 19:30
对,静态虽好但只能访问静态,主函数也没有例外。
虽然在定义主函数的时候我们调用了非静态的成员,但是你忽略了一点:
在你调用非静态的成员之前你是不是要先创建一个对象呀?
你如果不创建对象是不能访问静态的成员的!
既然你都创建了对象那么不论是静态还是非静态都能调用了!
作者: 许圣建    时间: 2012-3-2 02:57
主要是加载的过程决定了main必须是静态的,在加载之初神已初始化了静态,
而先建立对象后使用方法,所以就非要虚拟机先调用一个静态函数来创建这个对象,
如果把"对象.main();"放在这个后面,那前面那个静态方法何不直接定义成main呢?





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