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

菜鸟问题系列2 关于string

    来源: 互联网  发布时间:2015-07-30

    本文导语:  我又碰到一个菜问题,先看下面的程序:                             MyPoint.java public class MyPoint {   public int x;   public int y;   public String toString() {     return ("[" + x + "," + y + "]");   } } ...

我又碰到一个菜问题,先看下面的程序:
                            MyPoint.java
public class MyPoint {
  public int x;
  public int y;

  public String toString() {
    return ("[" + x + "," + y + "]");
  }
}

                            TestMyPoint.java

public class TestMyPoint {
  public static void main(String[] args) {

    // Step 1: declare variables
    MyPoint start = new MyPoint();
    MyPoint end = new MyPoint();

    // Step 2: assign data attributes of start and end
    start.x = 10;
    start.y = 10;
    end.x = 20;
    end.y = 30;

    // Step 3: print out start and end
    System.out.println("Start point is " + start);
    System.out.println("End point is " + end);
    System.out.println();

    // Step 5: declare and assign stray to end
    MyPoint stray = end;

    // Step 6: declare and assign stray to end
    System.out.println("Stray point is " + stray);
    System.out.println("End point is " + end);
    System.out.println();

    // Step 7: assign new values to stray
    stray.x = 47;
    stray.y = 50;
    System.out.println("Stray point is " + stray);
    System.out.println("End point is " + end);
    System.out.println("Start point is " + start);
  }
}

   输出结果:
Start point is [10,10]
End point is [20,30]

Stray point is [20,30]
End point is [20,30]

Stray point is [47,50]
End point is [47,50]
Start point is [10,10]

    这是一个练习Reference Variable Assignment的例子,让我疑惑的是为什么能够直接显示Start、End、Stray(它们是reference variable),而不用调用Method toString?但是看显示的结果,似乎已经调用过toString。难道是编译器自动执行的?Java里有这样的规定吗?我读到目前的章节并没有介绍过相关的内容,以前学C++也没有类似的情况,这种突然出现又无法解释的问题真让人费解~~~~~~

    为此我又翻阅了侯捷译的《Thinking In Java 2e》,里面举的是Primitive Variable的例子:
   int x=0;
   String sString="…………";
   System.out.println(sString+x);
   编译器会自动将int 0转换成string "0"

   照这样看,可以认为编译器也会自动转换reference variable,正如上程序自动调用了Method toString。但是我又想到的是,如果没有Method toString,结果又会怎么样?我自己改了代码,运行结果如下:

Start point is MyPoint@256a7c
End point is MyPoint@720eeb

Stray point is MyPoint@720eeb
End point is MyPoint@720eeb

Stray point is MyPoint@720eeb
End point is MyPoint@720eeb
Start point is MyPoint@256a7c

结果是我看不懂的东西,它是allocate给MyPoint的instance的space的地址吗?
照这样看,还是缺不了Method toString。在要显示为string的情况下,必须要先declare Method toString吗?java是这样规定的吗?
可不可以不叫toString,改个名字,还是硬性规定为toString?

我实在是很疑惑,有没有人能指导一下我~~~~~~~~~~

|
toString()是Object提供的方法之一,当编译器遇到system.out.println(obj)时,会自动调用obj的toString()方法,如果在自己的类中没有覆盖它,会调用Object中的该方法,得到对象的地址。
至于Object还有什么方法,请参考Java Api 文档

|
toString()是基类Object的方法,在这个方法里面toString()返回字符串的格式为:类名◎地址.你自己不覆盖基类的方法,它就缺省调用基类的方法,你的MyPoint的基类是Object,所以就出现上面的结果....

|
Effective Java这本书里有一章就叫"永远要超载toString()"

|
在System.out.println()处理类类型时 会自动调用该对象的toString()方法

    
 
 

您可能感兴趣的文章:

  • 菜鸟问题-如何将char[]转化为string??
  • 菜鸟问一个关于j2ee的菜鸟问题
  • 菜鸟求问菜鸟问题 ,域名绑定
  • gcc问题---菜鸟发问之一,老大们帮忙啊!!菜鸟分不多,只好给这点了,对不起!!
  • 菜鸟又来问菜鸟问题了
  • 一个关于日期的问题!(菜鸟问题,请高手不吝赐教)
  • linux下游戏问题。(菜鸟问题)
  • 菜鸟问题:现在要做unix下的c/c+编程的几个问题?
  • 菜鸟问题,在jbuilder中的编程小问题
  • 超级菜鸟的~~不好意思问题~~REDHAT9的视频播放问题~!
  • 菜鸟问题 : 关于使用Flex的问题
  • [菜鸟问题]关于live555的问题
  • 小菜鸟问题请 遇到过相同问题的朋友们请介绍下经验,谢过先
  • (菜鸟飞飞)问个关于软中断和系统调用的问题
  • 菜鸟提问了,关于编译问题?
  • 菜鸟,java的运行问题
  • 菜鸟问题:如何在red hat 9下加入一个新的分区
  • 菜鸟问题:在Java中如何接收从键盘输入的字符串?
  • 菜鸟问题~~快点进来拿分
  • 菜鸟菜问题1
  • 菜鸟问题:如何在Solaris下配置显卡和显示器
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ----菜菜鸟第三问:-菜鸟菜问:JAVA如何求 根号、开次方? -----
  • 怎样从一个菜鸟级的java programer升级到一个菜鸟级的java developer
  • 一个连菜鸟都算不上的菜鸟
  • ===菜鸟系列===:写过毕业论文的前辈请进!!!菜鸟散分啦!!!!
  • 菜鸟的Linux练习疑问……
  • 菜鸟刚学jsp,还不知道怎么和sql server2000的数据库相连,我已经把odbc配好了,谁能给我一段和数据库相连的并显示所有数据的代码!菜鸟
  • 菜鸟提问,我怎么装redhat7。1
  • 菜鸟写的俄罗斯方块,请多多批评!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 一个菜鸟的请求: 哪位前辈能给晚辈讲讲“匿名类”
  • ※菜鸟送分之一※ Red Hat Linux 的最高版本是多少?
  • ★菜鸟问:怎么在RED HAT LINUX7.2中用169上网??
  • 菜鸟提问:包是什么概念?
  • 菜鸟又来问菜鸟问题了 iis7站长之家
  • 菜鸟的问题:求助,关于red hat linux 引导程序
  • 菜鸟问题,如何在Windows 设置CLASSPATH,我还没吃午饭
  • 菜鸟到此报到,各位前辈多多指教^_^
  • 初级菜鸟的简单问题,关于DeviceIoControl,各位高手指点一下吧!
  • 菜鸟问题!!!
  • 菜鸟提问:请问Unix下面有没有类似Win32下_T这样的宏?


  • 站内导航:


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

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

    浙ICP备11055608号-3