0 0

关于toString()方法谢谢大家0

问题:

List list = new ArrayList();
list.add("a");
list.add(null);
list.add("b");

for(int i=0;i<list.size();i++){
     System.out.println(list.get(i).toString());
     在遍历第二个null值时就报空指针异常
但是我写成
    System.out.println((String)list.get(i));//遍历第二个值等于null时候就没错是为什么?
}
 
2013年7月29日 20:31

6个答案 按时间排序 按投票排序

0 0

toString方法是object类里的方法.所有的类都继承了object.自然也就有了toString方法.但是一般来说,这个toString方法不适合我们自己的类.所以就要重写这个方法.至于重写成什么样,就随便了.
toString的好处是在碰到“println”之类的输出方法时会自动调用,不用显式打出来
比如说
public class Point
{
private int x; // x轴坐标
private int y; // y轴坐标
@Override // 这个Annotation会检查是不是重写
public String toString()
{
return "x轴坐标: " + this.x + " ,y轴坐标: " + this.y;
}
}

2013年7月30日 15:02
0 0

看看system.out.println()的源码
public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }
在看看String.vauleOf();
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
    }
在看看OBJECT 类的toString方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
    } 你还不豁然开朗? 当一个OBJECT==null的时候,并没有被初始化,没初始化怎么能调用toString方法呢

2013年7月30日 11:44
0 0

看到你的问题,提的非常好,在很多开源的源码中都使用了第二种方式,比如Struts,第一种我想大家都明白,那么第二种强制转换(String)null为什么可以,表面理解,(Integer)null,(Map)null都可以,也就是说null可以通过强制转换,转换成任意的对象object,并且指向为空,从深层次理解:以指针的角度来看,它代表着一个对象只有指针,没有指针所对应的地址,所以无论你怎么转换对象,变的都只是定义了一个指针,至于指针是什么类型的,只有在分配地址的时候才有用,也就是new的时候才会用到。在强制转换中null根本没有分配地址,所以系统可以通过,当然深层次是我个人的理解,可能存在偏差,但是概括一点就是,null的强制转换没有对指针所对应的内存地址空间发生变化,所以java可以不抱错

2013年7月30日 01:02
0 0

因为null可以强转为任何类型(当然除了8种基本类型)。
System.out.println((String)list.get(i));
当i==1时,list.get(i) =null,
相当于Sysout((String)null);

2013年7月29日 22:38
0 0

空值去.toString()当然会报空指针
String s = ""/String s = "null"和String s = null不是一个概念
也许下面这段不好理解,

String s = null;
//下面是错误的!!!
System.out.println(s.toString());

那么看这段:
String s = new String((String)null);
System.out.println(s.toString());

因为s指向了空(null),所以空指针
在看源码有这么一段:
public String(String original) {
int size = original.count;
。。。。。。。
}

original.count的类型为int,null点count会是int类型吗?
本人也是菜鸟,只是说说自己极其肤浅的理解,明显很不透彻,不过还是希望能给楼主点参考,希望能对楼主有所启发或帮助,我们一起探讨

2013年7月29日 22:07
0 0

1.null是不能toString的,如:

String s = null;
//下面是错误的!!!
System.out.println(s.toString());

2.一般不是这么迭代的,迭代如下:
Iterator it =  list.iterator();
   while(it.hasNext()){
      System.out.println(it.next());
   }

3.list.get(i)输出就可以了,不必画蛇添足来个toString了
for (int i = 0; i < list.size(); i++) {
	System.out.println(list.get(i));
	}

2013年7月29日 20:44

相关推荐

    js中toString方法3个作用.docx

    js 中 toString 方法的 3 个作用 js 中的 toString 方法是 Object.prototype 上的一个方法,每个对象都可以调用该方法。该方法的主要作用是将对象转换为字符串形式,以便于对象的表示和处理。在 js 中,toString ...

    重写toString和equals方法

    Java 对象的toString和equals方法重写 在 Java 中,每个对象都继承自 Object 类,而 Object 类中定义了两个重要的方法:toString() 和 equals()。这两个方法都是非常重要的,它们分别用于对象的字符串表示和对象...

    C#示例:装箱、拆箱、自定义数据类型转换、ToString方法重载、类方法扩展

    在C#编程中,装箱、拆箱、自定义数据类型转换、ToString方法重载以及类方法扩展是几个核心概念,对于理解和优化程序性能至关重要。本文将深入探讨这些主题,并通过具体的实例来阐述它们的应用。 1. 装箱与拆箱 装箱...

    ToString()和Convert.ToString()的用法区别

    在一般情况下,ToString()和Convert.ToString()方法都可以通用,但是在处理可能为null的对象时,Convert.ToString()方法更为安全。因为ToString()方法在对象为null时将抛出异常,而Convert.ToString()方法则返回一个...

    java常用包。Date类,tostring方法视频

    java内常用包,date类,toString的使用方法

    最好的java对象ToString处理方案,ToString基类

    `ToString`方法是Java中一个常用的功能,用于将对象的属性以字符串的形式展示出来,这对于调试和日志记录非常有用。在给定的`标题`中提到的"最好的java对象ToString处理方案,ToString基类"指的是一个优化的`...

    toString完美解释

    在 Java 中,toString() 方法是一个非常重要的方法,它是 Object 类中的一个方法,所有继承自 Object 的类都会继承这个方法。toString() 方法的主要作用是将对象转换为字符串形式,以便于输出或显示。 toString() ...

    C#ToString()方法一些特殊用法

    C#ToString()方法一些特殊用法

    为 java文件 书写 ToString方法

    1.自动为指定包下面的所有JAVA 文件书写toString方法代码。 2.自动为指定Class模板类书写toString方法代码。 3.使用该类前最好做备份,编码格式一定要提前设置。

    JavaScript Object toString 初始

    通过阅读《https://will-2011.iteye.com/blog/1006184》这篇博客,你可以获取更多关于`toString`方法的详细信息,包括它在不同上下文下的行为、可能遇到的问题,以及如何有效利用`toString`进行调试。同时,`Object_...

    toString()方法1

    在Java编程语言中,`toString()`方法扮演着重要的角色,它是`Object`类的一个实例方法。由于Java中所有的类都隐式地继承自`Object`类,所以每个类的实例都可以调用`toString()`方法。默认情况下,`Object`类的`...

    C#t中有关tostring函数的格式

    C# 中的 ToString 函数是一种常用的格式化字符串方法,它可以将各种类型的数据转换为字符串。ToString 函数可以接受一个可选的格式化代码字符串作为参数,该参数可以控制输出字符串的格式。 数值格式化: * C:...

    浅析JAVA中toString方法的作用

    在Java编程语言中,`toString()`方法是一个非常重要的功能,尤其对于对象的表示和输出。该方法源自`Object`类,由于所有的Java类都隐式或显式地继承自`Object`,因此所有类的对象都可以调用`toString()`方法。这个...

    Java Object toString方法原理解析

    Java Object toString方法原理解析 Java Object 的 toString 方法是每个 Java 开发者都应该了解的基础知识。本文将通过示例代码详细介绍 Java Object toString 方法的原理解析,帮助开发者更好地理解和应用此方法。...

    C# ToString格式大全

    下面将详细介绍每种格式的使用方法和示例。 一、货币格式(C 或 c) 货币格式使用大写或小写的 C 来表示,例如:`Console.Write("{0:C}", 2.5);` 输出结果为:$2.50。货币格式通常用于表示货币价值,例如人民币、...

    java中的tostring方法的具体用法

    Java 中的 toString 方法的具体用法 Java 中的 toString 方法是一种非常重要的方法,用于将对象转换为字符串形式,以便于打印或显示对象的信息。在 Java 中,每个对象都有一个 toString 方法,该方法返回对象的字符...

    JavaScript Object toString 初始补充

    在JavaScript中,`toString`方法是一个内置的方法,用于将对象转换为字符串表示。这个方法对于理解和操作JavaScript对象至关重要,尤其当我们需要将对象的信息以文本形式展示或者在控制台打印时。`toString`方法的...

    vb.net Tostring()

    在VB.NET中,`ToString()`方法是一个非常重要的成员,它被广泛用于各种数据类型的对象,以便将它们转换为字符串形式。这个方法具有高度的灵活性,可以根据传入的参数和格式化代码来定制输出的字符串样式。以下是一些...

    ToString()格式设置大全

    在编程中,ToString()方法是用于将对象转换为字符串的通用方法。在本篇文章中,我们将详细介绍ToString()方法的格式设置大全,包括数字、日期时间、货币等多种格式的设置。 数字格式设置 在ToString()方法中,可以...

    C#中的Tostring()用法

    "C#中的Tostring()用法" C#语言中的ToString()方法是一个非常重要的方法,它可以将对象转换为...ToString()方法是一个非常重要的方法,开发者需要细心掌握它的使用方法,以便在应用程序中正确地使用ToString()方法。

Global site tag (gtag.js) - Google Analytics