zoukankan      html  css  js  c++  java
  • println与toString()

     

      

    public class Test{
            public static void main(String[] args) {
            Mankind mk=new Mankind();
            System.out.println(mk);//打印50
            System.out.println(".......................");
            Person per=mk.new Person();
            per.speak();
            System.out.println(mk.toString());
        }
    }
    
    class Mankind{
        private int old=50;
        public String toString() {
            // TODO Auto-generated method stub
            return "ok";
        }
        class Person {
          void speak() {
            // TODO Auto-generated method stub
              System.out.println("old="+new Mankind());
              System.out.println("old="+Mankind.this);
                   }
            
        }
    }

    下面是解释:

    1、System.out.println(center.toString())这句对应的源码:

    public void println(String x) {
        synchronized (this) {
            print(x); // 打印x
            newLine(); // 换行
     }
    }
    这能看懂吧,直接输出了传进来的参数x(center.toString())
    2、System.out.println(center)这句对应的源码:
    public void println(Object x) {
            String s = String.valueOf(x); // x对象转换为String
            synchronized (this) {
                print(s);
                newLine();
            }
        }
     主要看String s = String.valueOf(x);这句,然后再看看是怎么把对象x转换为String的,
     String.valueOf(x)对应的源码:
     public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
        }
      这下看到了吧,把刚才那x(也就是你的center)转换为String是调用了obj.toString()得到
      的。
      所以"直接输出对象时,会默认调用对象toString()方法"
      3、我把 toString 改成 tostring 其变输出 ClassRoom@7150bd4d
      这里就直接调用到Object.toString()方法了,看看这方法的源码:
      public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
        这下知道为啥输出ClassRoom@7150bd4d了吧。
  • 相关阅读:
    Xna小游戏开发【飞机空间大战】 碧血黄沙
    参考XNA官方Platformer模版,修改Platformer为横版可以滚动的小游戏 碧血黄沙
    云计算「半步巅峰」
    get_custom_field使用
    CCTM_FormElement 类
    php opendir说明
    js(chrome)打印对象函数
    operamasks.omItemSelector获取右边框ID方法
    {$vo.CreateDate|date="ymd H:i:s",###}
    添加xmlns:android="http://schemas.android.com/apk/res/android"的意思
  • 原文地址:https://www.cnblogs.com/NeilLing/p/4020471.html
Copyright © 2011-2022 走看看