在Java里比如这个类: 为什么输出类的时候是toString方法的返回值而不是get方法的

图片说明

3个回答

toString方法是Object里面的方法,所有类都是继承Object,所以“所有对象都有这个方法”。当你System.out.println()它的时候,如果它不是String类型,它会自动调用toString方法输出。而如果你想输出get的值,你只能用实例.get()去调用方法。

这是java10中println的源码,可以看到当参数是一个对象时会先调用 String.valueOf()方法来获取一个字符串


    /**
     * Prints an Object and then terminate the line.  This method calls
     * at first String.valueOf(x) to get the printed object's string value,
     * then behaves as
     * though it invokes {@link #print(String)} and then
     * {@link #println()}.
     *
     * @param x  The {@code Object} to be printed.
     */
public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }

String.valueOf()源码如下:


/**
     * Returns the string representation of the {@code Object} argument.
     *
     * @param   obj   an {@code Object}.
     * @return  if the argument is {@code null}, then a string equal to
     *          {@code "null"}; otherwise, the value of
     *          {@code obj.toString()} is returned.
     * @see     java.lang.Object#toString()
     */
    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

这样就可以看到,实际上println(一个对象)时默认调用的是其toString()方法而非get方法

我觉得你这个问题好蠢,你的逻辑都是混乱的,你输出的是类不是get方法,既然输出的是类怎么会给你输出get的返回值,System.out.println()
括号里的值会自动调用toString方法,所有的类都继承了Object,所以所有的类都有toString方法

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java类的tostring方法
tosting方法重写 java类中的tostring来用来输出类的信息。 我们先直接调用tostring方法看看会输出什么。 test类: package csdn; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Student a = n...
Java类里面的toString方法
在Java里面所有的类都有一个共同的父类Object,不管你愿不愿意都得继承他(默认继承,不用加extends)。那么我们今天要说的toString方法就是存在于Object里面的一个方法,换而言之,所有的类都会具有这个方法。那么这个方法的作用是什么呢?我自己总结为:需要把该类转换成String类型的时候就会调用这个方法。 例如:在用System.out.println();在输出...
为什么是“面向对象”,而不是“面向类”?
一道面试题目,向听听各位的见解。
Object类toString方法
这门课程是让初学者开始接触面向对象编程思想,为日后的项目开发做准备。
String类的toString方法
刚看了下JDK1.7的源码,发现String类里有一个char数组,构造方法都是将值存入这个char数组,但是发现toString方法返回的是this,并注释好本对象已经是字符串,但是还是不明白为什么不是将char数组中的东西返回呢
Object类为什么有toString()方法?
rn昨天,总监问了这样一个问题:rnrn问什么Object类要有toString()方法?rnrn这是面向对象的一个知识,可是究竟为什么呢?rnrn请大家帮忙解释!!
构造函数而不是类
构造函数而不是类 前面提到过,有关JavaScript OOP的最奇怪的事情是,JavaScript不想C#或C++那样,它没有类。在C#中,在执行类似下面的操作时: Dog spot = new Dog();  将返回一个对象,该对象是Dog类的实例。但在JavaScript中,本来就没有类。与访问类最近似的方法是定义构造函数,如下所示: function DogConstructor(n...
Java类为什么要有Set和Get方法
心中不解 推荐博文 记录 心中不解 之前在上家公司的时候,公司项目用了Spring框架或者SpringBoot框架,然后所有的Java Bean里面都有Set、Get方法,当然这也是大多数程序员最熟悉的。至于为什么要有Set、Get方法,我一直都不知道,记得当初问老师也只是说这都是Spring框架规定的。 来到现在的公司,没有用任何的框架,所有的Bean都要自己维护管理,我就发...
JAVA中Object类的toString()方法
toString public String toString() 返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 Object 类的 toString 方法返回一个字符串,它的值等于: getClass().getName() + '@' + Integer.toHe...
每个Java类都有的toString方法
每个Java类都有的toString方法
Java之重写Object类的toString方法
有任何问题加群讨论,还可以领取精美学习资料噢~ 群号:733899823 加群时请备注CSDN~ 一、先看看重写之前的效果: package com.xiao.toString; /** * @author 笑笑 * @Date 2018年4月14日下午10:16:36 * */ public class Student { private String name; ...
Java零基础-重写Object类的toString方法
Java视频教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常细腻,由浅入深。如果您是非计算机专业,想转行做Java开发的朋友,或者您想让Java基础更扎实
输出为什么是0,而不是1
public static int foo() rn int x = 0;rn try rn return x;rn finally rn ++x;rn rnrnrnpublic static void main(String[] args) rn int res = foo();rn System.out.println(res);rnrnrnJVM会将finally中代码块内容复制到try和catch中正常return和异常throw 之前 ,这也是finally一定会执行的原因,这样不应该先执行x++,后return x吗?
Object类的toString方法的练习
一、Object类的toString方法 public class ToStringTest{ static int i = 1; public static void main(String args[]){ System.out.println("love " + new ToStringTest());//love java ToStringTest a = new ToStringTest...
object类中的方法-----toString()
toString():public String toString(),返回值类型是string。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 Object类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。与clone方法返回的内容形式一样System.out.println(p1.t...
重写Object类的toString方法
1. 我们在写Java程序的时候有时候需要对某个对象进行操作了之后加入需要查看对象里面的属性的话需要重写Object类的toString方法,但是一般涉及到的是好几个属性,有的属性是没有进行初始化的,那么假如这个使用开发工具来自动生成toString方法的话,那么也会把那些空的属性的值也输出来,但是我们往往需要看不为空的属性这个时候就需要自己去根据具体情况来自己重写一下toString方法了 2...
Object类的toString方法的组成
<p style="font-size:16px;">n 本课程是《零基础学Java》课程的第六阶段课程,课程内容详实、细致,讲解通俗易懂!本课程采用Eclipse4.9版本进行教学。内容包括以下常用JavaAPI的讲解:n</p>n<p style="font-size:16px;">n 1. Object类/Scanner类n</p>n<p style="font-size:16px;">n 2.<span></span>String类/StringBuffer类/StringBuilder类n</p>n<p style="font-size:16px;">n 3.<span></span>数组高级和Arrays类n</p>n<p style="font-size:16px;">n 4.<span></span>基本类型包装类(Integer,Character)n</p>n<p style="font-size:16px;">n 5.<span></span>Math类/Random类/System类n</p>n<p style="font-size:16px;">n 6.<span></span>BigInteger类/BigDecimal类n</p>n<p style="font-size:16px;">n 7.<span></span>Date类/DateFormat类/Calendar类n</p>
Object类的toString方法示例
文章目录(一)源码示例(二)分析1.是什么(1)toString2.为什么3.怎么做 (一)源码示例 package com.mession; public class ToStringTest { static int i=1; public static void main(String[] args) { System.out.println("love ...
private的访问限制为什么是类级别而不是对象级别
请看如下代码,是可以正常运行的:rnclass Cloner rnprivate:rn int i;rnpublic:rn Cloner( int v ) rn i = v;rn rn Cloner( Cloner &a ) rn i = a.i;//同类的对象能访问私有变量!!!rn rn;rnrnvoid main()rnrn Cloner *a1 = new Cloner(15);rn Cloner *a2 = new Cloner(*a1);rnrn我认为这样很不安全,为什么不把限制放到对象一级?rn同样的,成员函数有this指针的信息,是否能够有对象标识?如果有,它应该能够把访问控制限制到对象一级,为什么不这样做?
请教:解释器为什么是类模式而不是对象模式?
interpreter中首先有个抽象类,这个抽象类有两种派生类:表示终结符的类和表示非终结符的类。rn这和composite模式很像,表示终结符的类类似于leaf,表示非终结符的类类似于容器。rn那为什么interpreter是行为型模式?看了一些解释,始终理解有些别扭,还请高手点拨rnrn还有一个问题,interpreter的类结构其实只区分了终结符和非终结符,而文法规则其实是由对象复合表现出来的(非终结符包含对终结符和其他非终结符对象的引用)。rn也就是说interpreter主要由对象复合描述,而不是由类的继承描述,这不是更像一个对象模式吗?为什么叫它类模式?rn请高手指点!
java类中的toString构造方法
贴代码: 1.创建的类: public class TestToString { private String name1; private String name2; private String name3; private String name4; public TestToString() {} public TestToString(String name1, ...
C#中的ToString(),为什么是虚方法,而不是抽象方法呢?
今天看了赵老师的视频,关于重写ToString(),视频中说它是object父类的虚方法。我也看了object中的内容,里面的确是虚方法。我不明白ToString()为啥不能是抽象方法呢?rn请各位可以帮我解答下,谢谢了
Object类之toString方法和equals方法
Object类之toString方法和equals方法 位于rt.jar\java\lang\Object.class   注意:Object类是所有类的父类(Java中只有一个根基类,C++中有多个),若没有明确使用extends关键字明确表示该类继承哪个类,那么它就默认继承Object类,也就可以使用Object中的方法:   所有对象,包括数组,都实现了Object类的方法。   我...
Java里Object类的方法
Java语言不同于C++语言,是一种单继承结构语言,也就是说,Object类是所有类的父类,位于java.lang包中。(PS:任何类的对象,都可以调用Object类中的方法,包括数组对象。)object类的结构Object类有12个成员方法,按照用途可以分为以下几种:1)构造函数 2)hashCode和equale函数用来判断对象是否相同, 3)wait(),wait(long),wait(lo...
Java中Object类的方法(toString方法和equals方法)
Object是所有类的父类(国外成为超类superclass),Object类的方法是相当少的(理解为教室人越多,他们的共同点越少)。 Object的toString()方法帮助我们返回一个字符串,这个字符串的格式是固定的:类名@hashcode。这个hashcode是一串数字(16进制),在Java中叫句柄/(虚拟)地址。但是*句柄不是内存地址*。 toString方法定义的
文档类里输出
大侠们,问你们个幼稚的问题,rn在文档类里面想在Client区输出文字,rn怎么得到视类的句柄?
InetAddress类中的getAddress()方法的返回值为什么直接是null?
正在学习java的socket编程。在看源码时候发现,InetAddress类中的getAddress()方法的返回值为null;n表示很蒙圈,望大神能解答
PHP输出类里的所有属性方法
PHP输出类里的所有属性方法 $wxapi = new \Home\fewt(); print_r($wxapi); exit(); //输出如下 \Home\fewt Object ( [app_id:\Home\fewt:private] => wefawef [app_secret:\Home\fewt:private] =>
类里的function返回值问题
我有个class,将读取一系列数据,比如纪录1的id,name,记录2的id,name,等等等,然后把所有的纪录返回。现在我能返回2维数组,但是我想已对象的形式返回,请问如何做?rnrn比如class里有个getall();rnrn现在调用:rn$a=getall();rnforeach ($a as $b)rn each $b->id;rn each $b->name;rnrnrn还请问,正规的写法是应该返回数组还是对象?谢谢,得到答案马上结贴
Java之初识Object类——toString方法和equalsf方法
Java之Object类 定义:JDK默认的提供的一个类,所有类默认继承Object类 Object类是所有类的父类,使用Object类可以接收所有类的对象(还可以接收所有引用数据类型-----数组和接口) 取得对象信息:toString(); 默认输出的是一个地址编码,而使用系统输出String常量时,输出的是字符串内容,本质原因在于Object类提供的toString()有没有被类覆写...
一个类的示例,程序输出怎么是类的属性值,而不是类的名字呢??
// person.csrnusing System;rnclass Personrnrn private string myName ="N/A";rn private int myAge = 0;rnrn // Declare a Name property of type string:rn public string Namern rn get rn rn return myName; rn rn set rn rn myName = value; rn rn rnrn // Declare an Age property of type int:rn public int Agern rn get rn rn return myAge; rn rn set rn rn myAge = value; rn rn rnrn public override string ToString()rn rn return "Name = " + Name + ", Age = " + Age;rn rnrn public static void Main()rn rn Console.WriteLine("Simple Properties");rnrn // Create a new Person object:rn Person person = new Person();rnrn // Print out the name and the age associated with the person:rn Console.WriteLine("Person details - 0", person);rnrn // Set some values on the person object:rn person.Name = "Joe";rn person.Age = 99;rn Console.WriteLine("Person details - 0", person);rnrn // Increment the Age property:rn person.Age += 1;rn Console.WriteLine("Person details - 0", person);rn rnrnrn程序声明了一个person类的实例,rn用Console.writeline方法怎么打印的是类的属性值呀??rn
关于java Object类中toString()方法与equals方法问题
/*由于这是本人在自学Java过程中的理解,如有不正确之处请予以指正,谢谢合作*/ toString方法:是Object类的方法之一(来自哪?)        概念:public String toString() :返回该对象的字符串表示。         为什么要重写?            toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。   ...
为什么java里的main在类里啊?
是java就这么定义的吗这样理解?
【idea】自动引入类的时候是引入单个类,而不是import.*
刚开始写代码,每次代码被提交上git,领导都把我代码给改掉了????黑人问号脸?????后来才发现是import的类的问题。我的代码都是import .*,同事的都是一个一个import的。BTW,这个可是alt+enter自己生成的呀,在空闲时间终于在idea中找到了设置。Settings-&amp;gt;Editor-&amp;gt;Code Style-&amp;gt;JavaImports-&amp;gt;Class c...
FileOutputStream类的read方法返回值
FileInputStream in=new FileInputStream("F:/Test.txt");rn FileOutputStream out=new FileOutputStream("G:/Test.txt");rn int b;rn rn while((b=in.read())!=-1)n out.write(b);n System.out.println(b);rn rn in.close();rn out.close();n以上代码输出n206rn210rn202rn199rn186rn195rn200rn203nnb不应该是每次读取到的byte个数且为1吗?n对于这段代码中out.write(b)如何理解?说明文档中解释的是将指定字节写入此文件输出流,n为何b会输出上述数值?n
SpringMvc Controller类的方法返回值
•Controller控制器,是MVC中的部分C,是部分的原因是因为此处的控制器主要负责功能处理部分: •收集、验证请求参数并绑定到命令对象; •将命令对象交给业务对象,由业务对象处理并返回模型数据; •返回ModelAndView(Model部分是业务对象返回的模型数据,视图部分为逻辑视图名) ; •而DispatcherServlet主要负责整体的控制流程的调度部分: •负责将请求委...
继承Thread类 为什么输出对象 输出的不是内存地址?
[img=https://img-bbs.csdn.net/upload/201604/06/1459943749_722174.png][/img]
为什么输出的string类内容是乱码
为什么程序显示的x.content是乱码?rnrn[code=C/C++]void File::Printmainfile(char* fn1)rnifstream fin(fn1,ios::in|ios::binary);rn if(!fin)rn cerr<
为什么这段程序输出是18而不是是17?
为什么这段程序输出是18而不是是17?rnrnrnclass J_SuperClassrnrn int m_data;rn rn J_SuperClass()rn rn mb_add(1);rn rn rn public void mb_add(int i)rn rn m_data += i;rn rn rn public void mb_print()rn rn System.out.println(m_data);rn rnrnrnclass J_SubClass extends J_SuperClassrnrn J_SubClass()rn rn mb_add(2);rn rn rn public void mb_add(int i)rn rn m_data += i*2;rn rnrnrnpublic class J_TestClassrnrn public static void mb_method(J_SuperClass a)rn rn a.mb_add(6);rn a.mb_print();rn rn rn public static void main(String args[])rn rn mb_method(new J_SubClass());rn rn
laravel request 类里 get方法和input的方法的区别?
同样一个post请求,以form-data的形式传送一个数据'title'的时候,get('title')和input('title')都可以取到。 但是以json的形式传送的时候,get('title')得到的是null,而input('title')却可以正确的取到值。 对于get请求,get和input方法都可以取到相同的值。 get和input的方法的实现类其实并不一样。 get在...
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件