Java中转换为String类型几种方式注意事项

您所在的位置:网站首页 java中date转换成string Java中转换为String类型几种方式注意事项

Java中转换为String类型几种方式注意事项

2024-06-29 13:12| 来源: 网络整理| 查看: 265

Java中转换为String类型几种方式注意事项

在Java语言中把其他类型字段转换为String类型的方式有以下四种情况,每种情况形式不同,效果一样,小坑也很多,我们对这几种方法进行总结。

(String)ObjectObject.toString()String.valueOf(Object)Object + “” 方式一:(String)

这是标准的类型转换,将object转成String类型的值。使用这种方法时,需特别小心的是因定义为 Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外小心。

public static void main(String[] args) { Object obj = new Integer(1); String s = (String)obj; } //抛出异常 Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

因为将Integer类型强制转换为String类型,无法通过,因此在使用前最好用instanceof做个类型检查。 但是, 如果obj为null,不会报错,因null值可以强制转换为任何java类类型,(String)null也是合法的。

public static void main(String[] args) { Integer obj = new Integer(1); String str = (String)obj;//这里会报错:Inconvertible types; cannot cast 'java.lang.Integer' to 'java.lang.String' }

注意:在Java里不能以【(String)Integer】方式将Integer强制转换成String

因为 String 和 Integer 不是在同一个对象阶层。

Object / / String Integer

当你尝试强制转换时,仅仅会在同一个对象阶层转换。比如:

Object / / A / / B

在这种情况,(A)objB 或者 (Object)objB 或者 (Object)objA 可以进行转换。

将Integer转换成String可以使用以下方法:

String.valueOf(int) 或者Integer.toString(Integer)

很可能是被所有对象可以以字符串的形式表示而导致的,以为所有的对象在使用 (String)obj时,会使用 obj.toString(),所以才造成这种认为理所当然的错觉。

方式二:Object.toString()

Java语言中,从严格意义上任意的java对象都可以调用toString(),这里有一点需要注意,这个值不能为null,否则会报空指针异常。采用这种方法时,通常派生类会覆盖Object里的toString()方法

public static void main(String[] args) { Map map = new HashMap(); map.put("name",null); map.put("age",18); System.out.println(map.get("age").toString()); //这里取出的值为 null 然后在调用 toString() 就会抛出异常 System.out.println(map.get("name").toString()); } //运行结果: 18 Exception in thread "main" java.lang.NullPointerException at com.log.test.Test.main(Test.java:13) 方式三:String.valueOf(Object)

String.valueOf(Object)这种方式其实是建立在Object.toString()基础之上的,但不同的是String.valueOf()自带了判断为null的条件,当为null时,String.valueOf()返回的是"null",不是null 如下源码:

public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 方式四:Object + “”

这种方式其实很好理解,任何对象和字符串相加都会转换为字符串,这种方式不会出现前面容易发生的空指针异常,但是效率很低,不推荐使用

四种方式效率对比 public class Test { public static void main(String[] args) { Map m = new HashMap(); m.put("test", "521521"); //方式一:(String)Object long start1 = System.currentTimeMillis(); for (Integer i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3