当前位置:  技术问答>java相关

***Java 学的好辛苦啊,想了好几天还是不明白啊:(***

    来源: 互联网  发布时间:2015-04-02

    本文导语:  //:Snake.java /* 一条Snake(蛇)由数段构成,每一段的类型都是Snake。   每做好一段,都会使构建器第一个参数的值递减(int i),直至最终为零,   第二个参数(Char x)的值在每次循环构建器调用时都会递增,而为给每...

//:Snake.java
/* 一条Snake(蛇)由数段构成,每一段的类型都是Snake。
  每做好一段,都会使构建器第一个参数的值递减(int i),直至最终为零,
  第二个参数(Char x)的值在每次循环构建器调用时都会递增,而为给每段
  赋予一个独一无二的标记(a,b,c...).
*/
public class  Snake 
{
private Snake next;
private char c;

//Constructor Snake(int i, char x)
Snake(int i, char x)
{
c = x;
if (--i > 0)
next = new Snake(i, (char)(x + 1)); //问题1。
}

//Overriding Method toString()
public String toString()
{
String s = ":" + c;
System.out.println(s);          //问题3
if (next != null)
s += next.toString(); //问题2。
return s;
}


public static void main(String[] args) 
{
Snake s = new Snake(5,'a');
System.out.println("s = " + s);
}
}
/*
运行本程序后,会出现如下的运行结果:
F:JavaApp>java Snake  //问题3
:a
:b
:c
:d
:e
s = :a:b:c:d:e


问题是:
  1、我认为虽然生成了多个新的Snake对象,但最终next变量存放的是最后一个对象的句柄,即Snake(1,'e').因为next不是一个数组。
  2、我认为这是一个无限死循环,因为next不可能为null啊!!!
    它指向的是Snake(1,'e').
  3、 按照我的理解,运行结果中显示的始终是“:a”呀!!
Java 学的好辛苦啊,想了好几天还是不明白啊:(
请各位给我解释一下,谢谢!!!
*/

|
你这是链表,跟java有什么关系
而程序很正常,有什么可能是死循环
这样看行不:
if (--i > 0)
  next = new Snake(i, (char)(x + 1)); //问题1。
else
  next = null;

|
这个程序没有什么问题啊!
next = new Snake(i, (char)(x + 1))
next我认为应该是指向你新生成的snake的一个指针!
每一个next都是如此!
在内存中就象是一个链表结构的!
呵呵,我也是新手,如果有错请指出


|
1问题一
你忽略了next = new Snake(i, (char)(x + 1));的前提条件是
if (--i > 0)
既是只执行了4次。

2问题二
  上面的问题,你如果能理解,这个就不难了,如楼上所说System.out.println(s)其实是5个Snake对象存的字符变量(a,b,c,d,e)

3问题三
  s += next.toString(); 
  是因为对作为class的next进行强制类型转换时发生的。

|
链表是一种很有用的数据结构,它由一个一个数据单元组成,就像蛇的一节一节。每一个数据单元由一个数据体和一个“指针”构成。指针指向下一个单元内的数据体,就这样延长下去。最后一个单元内的指针指向NULL。(我是初学者,有什么说的不对的请各位指出,谢谢:)  )

|
因为你每次new一个snake对象他的next被初始化的值是default的
是null

|
你这个贪吃的蛇有人实现了,你可以到www.chinajavaworld.com去,就在首页上。

|
你的toString方法并没有执行啊 因为你没有调用它

|
vj++6.0

|
学习

|
C++的连表就把我搞的头都大了
最后决定改学java 了,怎么这里还有连表啊!!!
看不懂啊,怎么办?
:(

    
 
 

您可能感兴趣的文章:

  • 推荐java站点:这个站点上的内容是全体成员辛苦劳动的成果,上面会有你感兴趣的东西,
  • ***iamcyh(蓝色虾)与hanson_yi() 领分******Java 学的好辛苦啊,想了好几天还是不明白啊:(***
  • 请教大家!!!java如何实现多重继承?接口该如何使用?份数可以再加,只要我明白了
  • 我初学java,用的是jdk1.3,但是有一点不明白?整个java程序的入口在什么地方?
  • 我是JAVA新手,所以我不明白(JPanel)类的东西
  • 请问:什么是组合?看了THINGKING IN JAVA后,还是不是很明白
  • 我是菜鸟,请帮助我。编译JAVA程序时,“e.hasMore Elements()”出错,不明白!
  • 菜鸟初学java,关于移位操作老看不明白,请高手帮忙解释一下
  • 不太明白,利用RMI实现JAVA分布式应用 和 EJB实现JAVA分布式应用有什么区别。
  • 请问java的switch语句有的用法,我真不明白
  • 我学java时有些东西始终弄不明白,希望能得到指点!
  • 看了不少文章,还是不明白。请问各位大侠,在java2中applet到底能不能通过jdbc访问网络数据库?答者有分!
  • 有一段JAVA程序看的不是很明白,希望高手指点(一定给分)
  • 有那位朋友看过Java2核心技术中的自定义布局管理器,在其中方法preferredLayoutSize的实现是怎样的?看不明白,高手解释一下
  • 《thinking in java》一个有关继承的程序不明白,请讲一讲,谢谢
  • java到底好在哪儿,我是死活不明白,求大家解释一下!
  • Serializable?使用和意思?在thinking in java里面看了半天一天也没有明白什么意思!谢谢高手大虾了
  • JAVA虚拟机是个什么东东?哪位明白的朋友讲一下。
  • java内部类的那些事儿_让你一看就弄明白
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • 要JAVA,还是JAVA顺眼
  • 请问::大家用Java是做application还是applet?我要是学Java,重点放在那儿部分?
  • 学习JAVA用JSDK开发还是VJ++?有什么区别吗?还是一样?
  • 请问,Juilder中采用的是java2还是java1.x?
  • 请教各位,是JAVA有前途还是C#有前途?多谢!
  • 好久没来了!做个一阵儿VB,现在感觉还是JAVA最亲切!~
  • 学JAVA是先学JSP还是SERVLET?
  • java 还是LINUX嵌入式???
  • 请问各位现在用JAVA为开发工具的多,还是用C++的多?
  • 学习java好 还是学习嵌入式开发好??
  • 我要学JAVA,从那里下手,学vj++ 还是j++builder
  • 学c++好还是java好?
  • 初学:买纯java书还是买开发工具的书?
  • 学java好,还是学C#好?
  • HTML标签参考手册 iis7站长之家
  • 大家说java没有指针,是好还是坏呢,为什么c++中
  • 不知道是继续vb6还是及时开始.net又或者是钻研java呢?
  • 初学java的话,从何入手呢?vj++,还是jbuilder?
  • 各位在linux下常用什么工具开发 , C , C++ 还是 Java ? 那个比较普遍一些
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3