(String)强制转换、toString()和String.valueOf()的区别

1.String:毫无疑问,这种就是强转形式,简单方便,效率高。java程序员可能看到效率高或许有些激动,但是它有他的不好,那就是局限性。在java的世界里没有什么东西是没有缺点的,总有一些好的方面同时也有一些不好的。不好的就是,他只能是强转原本就是字符串的东西,如果原本不是字符串的话,那么就会报错。比如:


1

2

3

4

5

Boolean boolean1 = true;

        

String str3 = (String)boolean1;//这行代码会报错,编译不过

String str4 = boolean1.toString();//正常

String str5 = String.valueOf(boolean1);//正常

通过上面的例子我们就很清晰的明白了,String强转的方式固然轻松,那么它是有很大的局限性的。在用的时候要谨慎。

2.toString():在API文档中是这样说的,返回此对象本身(它已经是一个字符串了!!!)。按照它的意思就是说一般的对象或者参数都是有toString()的方法的,只是要注意在一个参数定义为int类型是就没有这个方法了。还有就是当参数为空的时候.toString()方法就会报出空指针异常,这是这个方法的不好的地方使用时需要仔细斟酌一下。比如:

1     public String toString() {
2         return toString(value);
3     }

1

2

Object obj = getObject();

Syystem.out.println(obj.toString());

就如这上面的代码表示的一样,如果obj不为空,那么就能正常编译,那么如果obj取出来为空的话,那么就会报出空指针异常的。

3.最重要的角色出场了String.valueOf():这个方法是静态的,直接通过String调用,可以说是完美,只是平时不习惯这样写而已,这样的实现避免了前面两个的不足和缺点。首先来看看他内部的实现机制:


1

publicstaticString valueOf(Object obj){return(obj==null) ? "null": obj.toString()};

在内部就是做了为空的判断的,所以就不会报出空指针异常。

总结:

  这三者的使用,个人觉得应该使用String.valueOf()的方式。这样的使用安全可靠,不会带来异常。说的有不对的地方,希望大家指正批评。

来源:https://www.cnblogs.com/aspirant/p/9805513.html

原文地址:https://www.cnblogs.com/banml/p/12342553.html

时间: 2024-07-30 08:03:48

(String)强制转换、toString()和String.valueOf()的区别的相关文章

浅谈(String),toString() ,String.ValueOf() 3种类型转换

由于在项目中,出现String类型转换的问题,我在网上查了一下,然后总结了一下. 1.(String) 这是标准的类型转换,将object转成String类型的值.使用这种方法时,需特别小心的是因定义为 Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在.这时要格外小心. 例: Object obj = new Integer(100); String strVal = (String)obj; 在运行时将会出错,因为将Integer类型强制转换为Stri

String、toString、String.valueOf()三个有啥区别?

今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下吧.用了这么长时间,才发现有这些的不同,也是挺惭愧的. 先说他们三的作用是什么吧:没什么特别的作用,就是让我们得到的对象或参数类型,按照要求转成字符串的形式. String:毫无疑问,这种就是强转形式,简单方便,效率高.java程序员可能看到效率高或许有些激动,但是它有他的不好,那就是局限性.在ja

转:char*, char[] ,CString, string的转换

转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中: CString(typedef CStringT > CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI与unicod

[2016-02-09][javascript][数据类型强制转换]

和隐式转换类似 Boolean()转换成布尔值 String()转换成字符串 Number()转换成数值类型 parseInt(string,radix)//转换成整型 string需要转换的字符串, 字符串以0开头,8进制 以其他数字开头,10进制 0x开头,16进制 以其他形式,会读取数字合法部分,(类似C语言中scanf读取int的时候) 注意:不能把bool转换成0 | 1 允许开头结尾有空格 不能转换成数字,返回NaN redix进制,默认10进制 parseInt(0x123);//

Map集合中key不存在时使用toString()方法、valueOf()方法和强制转换((String))之间的区别

1.toString()方法 底层代码 public String toString() { return this; } 其返回值为String类型的字符串本身 1 Map<String, Object> params = new HashMap<String, Object>(); 2 //Map集合中没有key为1的键值对 3 String result = params.get("1").toString(); 4 if (result == null)

(String)、toString、String.valueOf的区别

在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结. 常用的方法有(String)要转换的对象,Object#toString(),String.valueOf(Object)等. (String) 这是标准的类型转换,将object转成String类型的值.使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instanceof做个类型检查,以判断是否可以转换.否则容易抛出CalssCastException异

Java 常用之String.valueOf、toString、(String)

在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能 常用的方法有Object#toString(),(String)要转换的对象,String.valueOf(Object)等 字符串类型的转型在java中常用的方法有标题中的三种. 简单介绍: 1.toString,需要保证调用这个方法的类.方法.变量不为null,否则会报空指针. 2.String.valueOf.这个方法在使用的时候是有些特殊的.一般情况下,如果是确定类型的null传入,返回的是字符串"null

(String)、toString、String.valueOf用法区别(转)

在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结. 常用的方法有(String)要转换的对象,Object#toString(),String.valueOf(Object)等. (String) 这是标准的类型转换,将object转成String类型的值.使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instanceof做个类型检查,以判断是否可以转换.否则容易抛出CalssCastException异

【转】(String)、toString、String.valueOf的区别

在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结. 常用的方法有(String)+要转换的对象,Object.toString(),String.valueOf(Object)等. 1.(String) 这是标准的类型转换,将object转成String类型的值.使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instanceof做个类型检查,以判断是否可以转换.否则容易抛出CalssCastExcepti