添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

简单介绍:

1、toString,需要保证调用这个方法的类、方法、变量不为null,否则会报空指针。

2、String.valueOf。这个方法在使用的时候是有些特殊的。一般情况下,如果是确定类型的null传入,返回的是字符串“null”,而如果直接传入null,则会发生错误。

3、(String) 字符串类型强转。需要保证的是类型可以转成String类型。

这里重点介绍valueOf。

举个例子:

String teString=null;
            teString=String.valueOf(teString);
            System.out.println(teString);
这样的写法,因为确定了传入的是String类型,在valueOf调用对应构造函数时不会发生错误,因此,返回的是字符串“null”。
String.valueOf(null);
但如果改为以上的写法,则提示空指针。

问题分析:为何会出现以上两种不同的结果,看源码我们即可知道原因。

valueOf有以下几种重载:

在代码中写下如下:

 boolean temp = false;
            String.valueOf(temp);
            char temp1 = 0;
            String.valueOf(temp1);
            double value = 0;
            String.valueOf(value);
            Object object=null;
            String.valueOf(object);
            float f = 0;
           String.valueOf(f);
           int i = 0;
           String.valueOf(i);
           long l = 0;
           String.valueOf(l);
           System.out.println("------------分割线---------------");
           //导致空指针
         char[] chars=null;
         String.valueOf(chars);
          //导致空指针
          String.valueOf(null, 0, 0);

运行后,可看到导致空指针的只可能是后面的两种方式。源码中valueOf(char[])会最终走到valueOf(char[],int,int)这个重载中,因此我们直接看对应的源码,如下:
 public String(char[] data, int offset, int charCount) {
        if ((offset | charCount) < 0 || charCount > data.length - offset) {
            throw failedBoundsCheck(data.length, offset, charCount);
        this.offset = 0;
        this.value = new char[charCount];
        this.count = charCount;
        System.arraycopy(data, offset, value, 0, count);
    }
这里将导致空指针。

知道了导致空指针的原因,还有一个疑惑,那就是为什么String.valueOf(null),会走到valueOf(char[])这个重载,而不是其他重载呢?

因为java中对重载的匹配是,当重载都能匹配的时候,优先选择范围小,精度高的方法,因此,它自动重载了char[]这个方法。

通过以上,发现String.valueOf()方法是有可能出现null的。在使用时需要注意。

字符串类型的转型在java中常用的方法有标题中的三种。简单介绍:1、toString,需要保证调用这个方法的类、方法、变量不为null,否则会报空指针。2、String.valueOf。这个方法在使用的时候是有些特殊的。一般情况下,如果是确定类型的null传入,返回的是字符串“null”,而如果直接传入null,则会发生错误。3、(String) 字符串类型强转。需要保证的
文章目录( String )强转 toString () String . valueOf (),推荐使用,返回字符串“null”尾语 ( String )强转 ( String )强转,简单方便,效率高, 是标准的类型转换 缺点:只能是强转原本就是字符串的东西,如果原本不是字符串的话,那么就会报错 看下面这个例子: int aaa = 0; String str3 = ( String )aaa;//这行代码会报错,编译不过 String str4 = aaa. toString ();//会提示没有. toString ()方法
在开发中,经 看到好多同事转字符串用 toString ()方法,这个方法看似用起来简单,但是用不好也很容易埋雷。我在开发中就改过类似的很多个bug,都是 toString ()方法使用不当引起的。 1.容易引起NullPointException()异
一、 valueOf ()【1】undefined和null没有 valueOf ()方法undefined. valueOf ();//错误 null. valueOf ();//错误 【2】布尔型数据true和false返回原值。布尔型数据的包装对象返回true或falsetrue. valueOf ();//true typeof true. valueOf ();//'boolean' false. valueOf ...
( String ) 这是标准的类型转换,将对象强制转换为 String 类型,前提是该对象必须能保证转成 String 类型,否则将抛出ClassCastException异 toString API源码
由于在项目中,出现 String 类型转换的问题,我在网上查了一下,然后总结了一下。 1、( String ) 这是标准的类型转换,将object转成 String 类型的值。使用这种方法时,需特别小心的是因定义为 Object 类型的对象在转成 String 时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外小心。 例: Object obj = new Integer(1...
在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,那么什么情况下使用哪种方法更快捷,以及这些方法使用时的一些注意事项都有哪些呢?这篇文章参考自《掘金》上大佬的头条三面: toString ()、 String . valueOf 、( String )强转,有啥区别? - 掘金 ,来叙述一下这三种方法的使用场景。废话少说,直接上代码! 一、基本类型转换 1. toString () 基本类型是没有 toString () 方法的 2. String . valueOf () 基本类型转.
string . valueOf ()方法和 toString ()方法都是将一个对象转换为字符串的方法。 string . valueOf ()方法接受一个参数并返回一个字符串,这个参数可以是任何对象类型,包括数字、字符、布尔值等等。如果参数是null,则返回字符串“null”。 ToString ()方法也是将一个对象转换为字符串的方法,但是它是在 java .lang.Object类中定义的。因此,所有的 Java 类都继承了 toString ()方法,包括 String 类。 ToString ()方法可以被覆盖,使得每个类都可以自己定义如何将自己转换为字符串。 总的来说, string . valueOf ()方法是用于简单的转换一个对象为字符串,而 toString ()方法是更加 用且高级的方式,因为它可以被自定义覆盖,让每个类都可以自定义转换方式来适应自己的特点和需要。