java在类的定义中创建自己的对象? 100

在书上经常看到这样的例子publicclassA(){intyy=0;publicstaticvoidmain(String[]agrs){Aaa=newA();}}我想... 在书上经常看到这样的例子
public class A()
{
int yy=0;

public static void main(String[] agrs)

{
A aa=new A();

}
}
我想知道的是,A是一个类,而main方法是A类中的一个方法,为什么可以在main方法里创建一个自己的对象?那是不是也可以使用aa.main(参数)的形式来调用它?请高人解释。
public static void main(String[] agrs)

我知道这是程序主入口
我想知道的是为什么可以这样在类的内部创建自己的对象,那不是无限循环创建对象了吗
展开
 我来答
百度网友3063114a7
2014-04-03 · TA获得超过693个赞
知道小有建树答主
回答量:666
采纳率:85%
帮助的人:228万
展开全部

你主要的疑惑是,为什么类中的方法可以创建它本身。


类和方法的写法都是一种  声明, 所谓声明,就是说是对行为的描述,而不是要真正执行它。

例如

class 小狗{
    public void 吃饭(){
      小狗 abc = new 小狗();
                                                                                         
    }
}


这里声明 一个叫小狗 的 类, 他有一个方法,吃饭()。
到这里没有任何问题, 我只是描述了一个类,和吃饭的行为。
这个时候系统什么都没发生, 因为只是声明而已。
说的是小狗  “可以” 吃饭, 但并不是声明完就必须立即调用 吃饭()。
但这样的话,谁去调用他呢, 我可以写另一类 比如person类,但是谁去调用person呢?
说来说去就必须有一个不需要创建对象也能调用的方法。
java里面就是main方法(这个main方法只需要放到任意一个类中即可)。

public static void main(String[] args) {
    小狗 a = new 小狗();
    a.吃饭();
}

当你用java执行这个类时,系统会寻找main方法作为入口执行。流程如下

1  进入 main方法,调用 小狗   a=  new 小狗(), 
这样系统才真正创建一个小狗 类(class)的 一个实例(instance),
2  然后调用 a.吃饭(),  这个时候系统执行了吃饭的方法, 即又创建了abc, 一个新的小狗,
3 程序结束, 返回。


系统寻找main的时候不关心main是否在哪个类里,所以实际上main和他的宿主在生命周期上没有关联。之所以写在这个类里只是不需要import类,图方便而已。
上面2中,创建a小狗, 吃饭()调用后,创建了abc小狗, 两者并没有什么关系

asdewq287
2013-04-07
知道答主
回答量:45
采纳率:0%
帮助的人:14.9万
展开全部
main方法作为java程序的入口方法。它同时被static修饰是一个静态的方法!
静态的方法就是不需要将类实例化就可以直接使用类名调用到方法或者属性。而非静态的就需要将此类实例化之后才能够调用到方法或者属性。也就是静态方法的执行不依赖于实例对象

它的执行过程是:当程序载入时,读取了该java文件,将静态方法读到到了内存中的静态方法保存区域,将classA读到了类的区域,注意:这时候的classA并没有创建实例对象,内存中只是有了创建classA的机器了。接下来main方法作为程序的入口方法被执行(这是只有方法没有实例对象),方法中调用了classA的机器生产了一个A对象,再将A对象装载到内存中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
登山采蘑菇
2013-04-06
知道答主
回答量:39
采纳率:100%
帮助的人:20.1万
展开全部
1. java是纯面向对象的,所有的方法都要写在类里面,main函数也是。
2. 但是main只是程序的入口,在那儿个类里面都无所谓,很多需要main函数做入口的项目都单独写个类放main函数
3. main是静态函数,你在其它静态函数里创建一个这个类的对象也是可以的,静态函数是类的方法,不是对象的方法。
4. 建议你看看内存机制。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a68c03e9f
2013-04-05 · 超过13用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:29.5万
展开全部
因为static 是静态方法,在类创建的时候就会创建。如果一直在main里面调用main,可能会得到一个Exception in thread "main" java.lang.StackOverflowError的结果。
还有就是static的方法只会创建一次,他是该类的共有方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倾少一笑倾城
2013-04-11
知道答主
回答量:8
采纳率:0%
帮助的人:1.1万
展开全部
貌似老师给我说的是用NEW ,来new一个对象,类名 XX=new 类名(),在括号里面可以调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式