- 浏览: 248897 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
关键字: 深入理解tostring()
1. class A{int i;}
2.
3. public class VarArgs{
4. static void f(Object[] x){
5. for(int i=0;i<x.length;i++)
6. System.out.println(x[i]);
7. }
8. public static void main(String[] args){
9. f(new Object[]{
10. new Integer(47),new VarArgs(),
11. new Float(3.14),new Double(11.11)});
12. f(new Object[]{"one","two","three"});
13. f(new Object[]{new A(),new A(),new A()});
14. }
15. }
class A{int i;}
public class VarArgs{
static void f(Object[] x){
for(int i=0;i<x.length;i++)
System.out.println(x[i]);
}
public static void main(String[] args){
f(new Object[]{
new Integer(47),new VarArgs(),
new Float(3.14),new Double(11.11)});
f(new Object[]{"one","two","three"});
f(new Object[]{new A(),new A(),new A()});
}
}
运行结果为:
47
VarArgs@1ba34f2
3.14
11.11
one
two
three
A@13f5d07
A@f4a24a
A@cac268
===============
我对此代码的理解:
java使用new objectname()创建了该对象的引用。每一个对象都从Object继承一个toString()方法。当使用System.out.println输出一个引用的时候实际上调用了该对象的toString()方法。对于没有toString方法的类,println则输出该实例的“地址”。
在打印的时候,如果你在你的代码中没有重载toString()方法,那么java将自动调用object的toString()方法,而object的toString()方法一般就是打印某个对象的地址,所以诸如这里的class A,由于你没有重载toString()方法,所以调用object的toString()方法,打印了地址。而对于某些类,诸如这里的Integer,Float,Double对象,由于java已经在Double重写了toString(),虽然你没有再次重写,但它还是会根据Double里已经存在的toString()方法打印了
danceflash对此代码中输出地址的不同理解 ,关于调用object的toString()方法这一点上完全同意
但是要注意的是:
打印出来的"A@13f5d07"并非他的"地址",而是对象的所属类以及该对象的哈希值
以下是Object类的toString()方法的代码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
其中:
getClass().getName()返回对象所属类的类名
hashCode()返回该对象的哈希值
Integer.toHexString(hashCode())将对象的哈希值用16进制表示
因此最后得到了这样的结果:A@13f5d07
==================================
下面给出另外一个例子:
1. public class B
2. {
3. public String toString()
4. {
5. return "This is a ";
6. }
7. }
8. public class A
9. {
10. public static void main(String[] args)
11. {
12. System.out.println(new B());
13. }
14. }
public class B
{
public String toString()
{
return "This is a ";
}
}
public class A
{
public static void main(String[] args)
{
System.out.println(new B());
}
}
输出结果:This is a
理解:因为在B中已经声明了toString方法,实际是对toString方法进行了重载了,此时System.out.println(object)会自动调用该object的toString方法输出。
java中任何class都是默认从Object扩展而来,都有一个toString()方法,System.out.println(object)会默认调用这个object的toString方法,如果在class里面,重写了这个toString()方法,也就是说那么输出的时候,调用的toString方法就是class中所定义的了。
其实,System.out.println()的参数就是string ,他会把其中的参数转换为string类型,给你重写tostring方法,所以当把new b()转化成string时,将调用tostring 函数,而此时调用的就是你定义的函数。
例子3:
1.
2. public class TestToString {
3. public static void main(String[] args) {
4.
5. System.out.println("d:=" +new Dog());
6. Dog d1=new Dog();
7. Dog d2=new Dog();
8. Dog d3=new Dog();
9. System.out.println(d1+" "+d2);
10. }
11. }
12.
13. class Dog {
14. public String toString() {
15. System.out.println("###");
16. return "I'm a cool dog!";
17. }
18. }
public class TestToString {
public static void main(String[] args) {
System.out.println("d:=" +new Dog());
Dog d1=new Dog();
Dog d2=new Dog();
Dog d3=new Dog();
System.out.println(d1+" "+d2);
}
}
class Dog {
public String toString() {
System.out.println("###");
return "I'm a cool dog!";
}
}
输出结果:
###
d:=I'm a cool dog!
###
###
I'm a cool dog! I'm a cool dog!
发表评论
-
解析网页利器组合(正则、jsoup、beanshell、dozer)资源
2012-05-31 16:09 1465由于项目需要使用java正则、jsoup、dozer、bean ... -
Java正则表达式(二)
2012-05-31 15:47 867Matcher类: 使用Matcher类,最重要的 ... -
Java正则表达式(一)
2012-05-31 15:46 858正则表达式在处理文本方面用处非常大,最早像在Perl和awk语 ... -
Java正则表达式详解
2012-05-31 15:45 848如果你曾经用过Perl或 ... -
理解String与String.intern()
2012-01-05 15:44 8421. 首先String不 ... -
StringUtils工具类的常用方法
2011-11-25 15:24 947StringUtils 方法的操作对象是 java.lan ... -
主题:深入分析 Java 中的中文编码问题
2011-11-11 09:06 1010几种常见的编码格式 ... -
Java中的乱码问题
2011-09-01 09:35 1102Java中乱码问题很常见,原因也多种多样,这里做一个总结, ... -
java反射机制详解 及 Method.invoke解释
2011-08-26 11:40 1681JAVA反射机制是在运行状态中,对于任意一个类,都能够 ... -
java编程中'为了性能'一些尽量做到的地方
2011-08-25 11:42 875最近的机器内存又爆满了,出了新增机器内存外,还应该好好re ... -
利用java反射原理写了一个简单赋值和取值通用类
2011-08-22 09:50 2459由于项目的实际需要,所以利用java反射原理写了一个简单给be ... -
Java实现给图片添加水印
2011-08-22 09:41 2100周末在家上围脖,看到sina围脖上图片都有水印,想到Jav ... -
java获取当前类的绝对路径
2011-08-03 10:41 1191在jsp和class文件中调用的相对路径不同。在jsp里, ... -
深入浅出URL编码
2011-08-03 10:30 802深入浅出URL编码 版权声明:如有转载请求,请注明出 ... -
URLConnection的连接、超时、关闭用法总结
2011-08-03 10:25 1351Java中可以使用HttpURLConnection来 ... -
Apache Rewrite实现URL的跳转和域名跳转
2011-07-28 11:31 1100Rewirte主要的功能就是实现URL的跳转,它的正则表达式是 ... -
文件、流总结
2011-07-27 09:31 14041、File类:File类位于java ... -
java对cookie的操作(转)
2011-07-18 15:56 989java对cookie的操作比较简单,主要介绍下建立coo ... -
java泛型
2011-07-18 15:42 832在Java SE1.5中,增加了一个新的特性:泛型(日本语 ... -
j2ee学习笔记——初试ssh之泛型通用dao(转)
2011-07-18 15:39 916在做项目的时候每次都为每个POJO实体写一个对应的DAO很 ...
相关推荐
在本文中,我们将深入探讨这两种方法的用法和区别,以帮助开发者更好地理解和使用它们。 一、ToString()方法 ToString()方法是所有继承自Object类的对象都有的方法,包括基本数据类型和自定义类。它的主要作用是将...
本篇文章我们将深入探讨`toString`方法的初始应用,以及它在JavaScript对象中的工作原理。 首先,`toString`方法是所有JavaScript对象的原型`Object.prototype`上的一个方法。这意味着,无论你创建何种类型的对象,...
本文将深入探讨`toString()`方法,以及它在Java中的应用。 `toString()`方法是所有类(包括Object类)的成员方法,它的默认实现是返回类名加@加哈希值,例如`"java.lang.Object@123456"`。但通常我们都需要为自定义...
总的来说,通过深入理解并熟练运用`toString`方法,开发者可以更好地控制和展示JavaScript对象的信息,提高代码的可读性和调试效率。这篇博客文章可能是对这一关键知识点的深入探讨,对于任何想要提升JavaScript技能...
根据提供的信息,我们可以深入探讨C#中的`ToString`方法及其格式化选项,这对于处理和展示数值数据至关重要。本文将详细解析各种格式字符串的用途,并通过示例代码来具体说明每种格式的效果。 ### 1. 概述 在C#中...
### ToString格式大全:深入解析与应用 在.NET框架下,`ToString`方法是任何对象用于将其自身转换为字符串表示的基本工具。特别是在C#和ASP.NET开发中,掌握`ToString`的高级格式化技巧对于实现数据的精准展示至关...
理解valueOf()和toString()的调用规则对于编写更高效的JavaScript代码至关重要,尤其是在处理自定义对象和类型转换时。在自定义对象上重写这些方法时,应确保它们的行为符合预期,以避免出现意外的结果。
在本文中,我们将深入探讨C#中的`ToString()`格式大全,学习如何用它来格式化输出,如将数字转化为货币格式(例如¥2.50)。 `ToString()`方法是所有类都继承自`System.Object`的成员,因此几乎所有的C#对象都可以...
这里我们将深入探讨`ToString()`的使用及其各种格式化选项。 `ToString()`方法可以接受一个可选的格式字符串作为参数,用于控制输出的格式。格式化字符串由一系列的代码组成,每个代码对应一种特定的输出样式。以下...
在JavaScript中,几乎所有的数据类型都具有两个重要的方法:valueOf()和toString()。...通过本文的介绍,希望能帮助大家更好地掌握valueOf()和toString()方法的使用,进一步加深对JavaScript语言的理解。
在C#编程中,装箱、拆箱、自定义数据类型转换、ToString方法重载以及类方法扩展是几个核心概念,对于理解和优化程序性能至关重要。本文将深入探讨这些主题,并通过具体的实例来阐述它们的应用。 1. 装箱与拆箱 装箱...
在VB.NET编程环境中,获取计算机的操作系统版本信息是一项常见的任务,这对于开发跨平台或...了解如何利用这个方法以及解析其返回的信息,可以帮助我们更好地理解和适应各种运行环境,提高应用程序的稳定性和兼容性。
【标题】"前端开源库-safe-tostring-pmb"是一个专门针对前端开发的开源库,它的主要功能是提供一个安全的`...在实际应用中,开发者可以结合其源码,深入理解如何处理异常情况,提升自己在处理字符串转换时的技能。
让我们深入了解一下在不同情况下的行为: 1. **比较操作**:在进行相等性检查时,比如`aaa > 20`,JavaScript会尝试将`aaa`转换为数字来执行比较,因此会调用`valueOf`。如果`valueOf`返回的不是一个有效的数字,...
之前也看到过JavaScript的这个问题,但是没有深入了解,今天在StackOverflow上看到了答案,感觉不错,记下来分享给大家。问题的描述是这样的: 代码如下: console.log(10..toString());//10 console.log(10....
本教程将深入探讨如何使用`ToString()`方法与不同的参数来实现数字、日期和时间格式的枚举格式。 首先,我们来看日期和时间的格式化。在C#中,我们可以使用`DateTime`结构的`ToString()`方法来定制日期和时间的显示...
《深入理解redacted-compiler-plugin:Kotlin编译器插件的创新实践》 在现代软件开发中,Kotlin作为一种高效、简洁且富有表现力的编程语言,深受开发者喜爱。而`redacted-compiler-plugin`则是一个独特的开源项目,...
在Java开发中,经常需要打印对象的详细信息,以便于调试和理解程序的运行状态。`toString()`方法就是这样一个关键的工具,它能将对象的状态转化为字符串形式。 `ToStringUtil`类通常包含一系列静态方法,这些方法...