Topic: JAVA类互调用为何不产生死循环?

  Print this page

1.JAVA类互调用为何不产生死循环? Copy to clipboard
Posted by: benkhe
Posted on: 2005-12-25 16:09


class people
{
int boy;
float a[];
void f()
{
boolean cool;
a1 hebin;
}
}

public class a1
{
int a;
people aaa;
}

a1类和people类之间进行了相互的调用,为什么没有产生死循环,请指教。

2.Re:JAVA类互调用为何不产生死循环? [Re: benkhe] Copy to clipboard
Posted by: lxh_ming
Posted on: 2005-12-25 20:21

你再构造函数里面相互声明看看吧

3.Re:JAVA类互调用为何不产生死循环? [Re: benkhe] Copy to clipboard
Posted by: cjyzpcl
Posted on: 2005-12-29 10:06

这里只有申明,没有初始化。
如果用Xxx x = new XDead)可能会有问题,我没有实验过。
但这里不会产生dead circle.

4.Re:JAVA类互调用为何不产生死循环? [Re: benkhe] Copy to clipboard
Posted by: lecone
Posted on: 2005-12-30 16:07

能行吗??

5.Re:JAVA类互调用为何不产生死循环? [Re: benkhe] Copy to clipboard
Posted by: XiaoN
Posted on: 2005-12-31 22:23

我试了一下,如果在构造函数里这样做就会出错(编译无错,但要加上new)

6.Re:JAVA类互调用为何不产生死循环? [Re: benkhe] Copy to clipboard
Posted by: guoyj520
Posted on: 2006-01-03 20:31

是啊,怎么回事啊,那位高手能不能详细讲解一下上面的代码啊?我看张孝祥的《JAVA就业培训教程》时看到过类似的一段代码,也是不怎么清楚

7.Re:JAVA类互调用为何不产生死循环? [Re: XiaoN] Copy to clipboard
Posted by: blueoxygen
Posted on: 2006-01-06 16:57

XiaoN wrote:
我试了一下,如果在构造函数里这样做就会出错(编译无错,但要加上new)

请问你怎么试的。我当时还纳闷呢,多亏自己试了一下。

package com.bearingpoint.lab;

/**
* Created by IntelliJ IDEA.
* User: david.duan
* Date: 2006-1-6
* Time: 16:59:00
* To change this template use File | Settings | File Templates.
*/
public class people {
int boy;
float a[];

void f() {
boolean cool;
people hebin;
}
public people(){
int i;
people2 pl2;
}
public static void main(String args[]){
System.out.println("running");
}
}

class people2
{
int a;
people aaa;
}

代码正常运行,我没new任何东西。
还有楼主,为什么他要死循环呢?我百思不得其解。尤其在定义实体类时,多对多关联的关系的表现很多这种代码情况。
定义了一个class type在另外一个class里怎么就死循环了呢?

8.Re:JAVA类互调用为何不产生死循环? [Re: benkhe] Copy to clipboard
Posted by: 风尘仆仆
Posted on: 2006-01-09 12:16

在类中互相声明是不会出现调用死循环的。
A类中声明一个B类的引用,B类中声明一个A类的引用,引用相当于指针,声明的时候不会分配对象。即使你在A类构造方法中New出一个B类对象,这个B类对象也只是一个新对象,与其它存在的B类对象无关,只是在堆上为这个对象分配了内存。
调用死循环一般出现在函数的互相调用、递归,最终导致栈溢出而报错。

9.Re:JAVA类互调用为何不产生死循环? [Re: benkhe] Copy to clipboard
Posted by: xuwensheng
Posted on: 2006-01-11 20:07

并没有new呀!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923