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了吧。println与toString()的更多相关文章
- 重写toString()方法来描述一个类
package com.zch.test; /* toString方法以及重写toString方法 toString方法是一个自我描述方法 方法本身返回的是该对象的实现类的 类名 + @ + hash ...
- 14、java中的equals()和toString()方法
/* 所有对象的父类Object Object中的方法: equals() 对象是否相同的比较方法 toString()对象的字符串表现形式 */ class Person { String name ...
- Java中区别.toString() ,(String),valueOf()方法
在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...
- String、String.valueOf、toString 它们三者的区别总结
今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...
- 玩坏JVM很简单--toString的递归调用
在JVM的内存管理机制下很少发生内存溢出的情况.至少我碰见的少,好像在SSH我多次发布项目时候出现过一次.今天看见一个特简单的方法让内存溢出(好吧,我似乎作死了--!): public class I ...
- 基础学习day08---多态、简单工厂、Object类equals和toString
一.多态 1.1.多态概念 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型:猫 x = new 猫(); 同时猫也是动物中的一种,也可以 ...
- java10-2 toString()方法
public String toString():返回该对象的字符串表示. Integer类下的一个静态方法: public static String toHexString(int i):把一个整 ...
- JAVA中toString方法的作用
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不 ...
- Arrays.toString Arrays.asList
import java.util.Arrays; public class TestCalc{ public static void main(String[] args) { ,,,,,,,}; / ...
随机推荐
- Node.js superagent 采集 URL 编码问题
今天在用Node学习采集的时候遇到一个问题,如这个链接地址 http://www.meishij.net/胡萝卜 就是用浏览器的方式访问链接可以打开,但用superagent 去模拟请求,就请求不到 ...
- OpenGL的gluLookAt和glOrtho的关系
OpenGL的gluLookAt和glOrtho的关系 一直不明白gluLookAt()和glOrtho()两者之间的关系:gluLookAt()是观察变换,glOrtho()是正交投影.glLook ...
- iOS开发 判断用户是否开启了定位
- (BOOL)achiveUserLocationStart { CLAuthorizationStatus status = [CLLocationManager authorizationSta ...
- commonJS — 事件处理(for Event)
for Event github: https://github.com/laixiangran/commonJS/blob/master/src/forEvent.js 代码 (function(w ...
- Vcenter 添加域管理员权限
授予相应管理权限
- iconv 文件编码相互转换
iconv 文件编码相互转换 示例: iconv -f utf-8 -t gbk ~/a.txt > ~/b.txt -f 从哪种格式转换 -t 要转换到哪种格式 a.txt要转换的文件 b.t ...
- 【bzoj1023】仙人掌图
[bzoj1023]仙人掌图 题意 给一棵仙人掌,求直径. \(n\leq 100000\) 分析 分析1:[Tarjan]+[环处理+单调队列优化线性dp]+[树形dp] 分开两种情况处理: ①环: ...
- 应用 Middleware
主要应用场景:过滤HTTP请求 laravel本身自带了几个Middleware在app/http/middleware目录下面 然后在app/http/kernel.php中注册 自定义一个midd ...
- XPath的语法
XPath 是XML的查询语言,和SQL的角色很类似.以下面XML为例,介绍XPath 的语法. <?xml version="1.0" encoding="ISO ...
- C实现多线程
#include <stdio.h> #include <pthread.h> #include <unistd.h> #include <iostream& ...