快捷搜索:  汽车  科技

string variable ignored怎么解决(建议你去String.valueOf)

string variable ignored怎么解决(建议你去String.valueOf)使用instanceof做一个类型检查所以我建议:(String)是标准的类型转换,将Object类型转为String类型,使用(String)强转时,最好使用instanceof做一个类型检查,以判断是否可以进行强转,否则容易抛出ClassCastException异常。需要注意的是编写的时候,编译器并不会提示有语法错误,所以这个方法要谨慎地使用。为了方便演示。我就直接截图了。这样能看得更清楚些感觉String.valueOf() 可以包含万物。推荐使用。还是一样。基本类型 无法被强制转换掉,下面看看Object类 大家都知道 Object类是根类 所有的父类,它能往下走。能往下转,但是人类 怎么能”谋朝篡位“ 呢,所以肯定不行,报空

写在前面

当我们想要将一种非字符串类型的值去转换成字符串,都是怎么转的,你可能会toString() 也可能String.valueOf() 还有的可能强转(String),所以大家可能是随心所欲的使用的,不会在这几个当中犹豫,那有什么不同呢?

有一句话说得好,存在即是合理的,所以既然jdk出来这几种方法,那肯定有它存在的地方。那是否有优劣之分呢,平常开发中应该先考虑使用哪一种呢?

那我告诉你,建议你平常使用String.valueOf()。为什么呢,我们下面来理理。

我们分为两部分。先抛出问题实例,再深入源码。

代码实例

为了方便演示。我就直接截图了。这样能看得更清楚些

  • 1、首先看基本类型没有toString()方法

string variable ignored怎么解决(建议你去String.valueOf)(1)

  • 2、但是可以使用String.valueOf()

string variable ignored怎么解决(建议你去String.valueOf)(2)

感觉String.valueOf() 可以包含万物。推荐使用。

  • 3、试试强转

string variable ignored怎么解决(建议你去String.valueOf)(3)

还是一样。基本类型 无法被强制转换掉,下面看看Object类 大家都知道 Object类是根类 所有的父类,它能往下走。能往下转,但是人类 怎么能”谋朝篡位“ 呢,所以肯定不行,报空

string variable ignored怎么解决(建议你去String.valueOf)(4)

所以我建议:(String)是标准的类型转换,将Object类型转为String类型,使用(String)强转时,最好使用instanceof做一个类型检查,以判断是否可以进行强转,否则容易抛出ClassCastException异常。需要注意的是编写的时候,编译器并不会提示有语法错误,所以这个方法要谨慎地使用。

使用instanceof做一个类型检查

string variable ignored怎么解决(建议你去String.valueOf)(5)

封装类型测试

上面我们用了int基本类型来进行测试的。下面我们用下封装类型Integer

string variable ignored怎么解决(建议你去String.valueOf)(6)

与基本类型不同的是。 封装类型可用toString方法,String.valueOf() 自然也是可以的

string variable ignored怎么解决(建议你去String.valueOf)(7)

下面看一种空指针的问题

string variable ignored怎么解决(建议你去String.valueOf)(8)

但是String.valueOf 是没有问题的

string variable ignored怎么解决(建议你去String.valueOf)(9)

null值得转换问题

string variable ignored怎么解决(建议你去String.valueOf)(10)

好的。代码实例 我们就写到这里。我们看下源码 为什么会出现上述情况,为什么我建议你去String.valueOf(),看源码

源码

先来看toString()的源码

string variable ignored怎么解决(建议你去String.valueOf)(11)

string variable ignored怎么解决(建议你去String.valueOf)(12)

String.valueOf的源码

string variable ignored怎么解决(建议你去String.valueOf)(13)

可以明显的看到String.valueOf()比toString多了一个非空判断。

总结
  • toString(),可能会抛空指针异常

在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以java对象都可以调用此方法。但在使用时要注意,必须保证object不是null值,否则将抛出NullPointerException异常。采用这种方法时,通常派生类会覆盖Object里的toString()方法。

  • String.valueOf(),推荐使用,返回字符串“null”

String.valueOf()方法是小编推荐使用的,因为它不会出现空指针异常,而且是静态的方法,直接通过String调用即可,只是有一点需要注意,就是上面提到的,如果为null,String.valueOf()返回结果是字符串“null”。而不是null。

  • (String)强转,不推荐使用

(String)是标准的类型转换,将Object类型转为String类型,使用(String)强转时,最好使用instanceof做一个类型检查,以判断是否可以进行强转,否则容易抛出ClassCastException异常。需要注意的是编写的时候,编译器并不会提示有语法错误,所以这个方法要谨慎地使用。

猜您喜欢: