(String)强制转换、toString()和String.valueOf()的区别
- String:毫无疑问,这种就是强转形式,简单方便,效率高。java程序员可能看到效率高或许有些激动,但是它有他的不好,那就是局限性。在java的世界里没有什么东西是没有缺点的,总有一些好的方面同时也有一些不好的。不好的就是,他只能是强转原本就是字符串的东西,如果原本不是字符串的话,那么就会报错。比如:
12345
Boolean boolean1 =true;String str3 = (String)boolean1;//这行代码会报错,编译不过String str4 = boolean1.toString();//正常String str5 = String.valueOf(boolean1);//正常通过上面的例子我们就很清晰的明白了,String强转的方式固然轻松,那么它是有很大的局限性的。在用的时候要谨慎。
- toString():在API文档中是这样说的,返回此对象本身(它已经是一个字符串了!!!)。按照它的意思就是说一般的对象或者参数都是有toString()的方法的,只是要注意在一个参数定义为int类型是就没有这个方法了。还有就是当参数为空的时候.toString()方法就会报出空指针异常,这是这个方法的不好的地方使用时需要仔细斟酌一下。比如:
12
Object obj = getObject();Syystem.out.println(obj.toString());就如这上面的代码表示的一样,如果obj不为空,那么就能正常编译,那么如果obj取出来为空的话,那么就会报出空指针异常的。
- 最重要的角色出场了String.valueOf():这个方法是静态的,直接通过String调用,可以说是完美,只是平时不习惯这样写而已,这样的实现避免了前面两个的不足和缺点。首先来看看他内部的实现机制:
1
publicstaticString valueOf(Object obj){return(obj==null) ?"null": obj.toString()};在内部就是做了为空的判断的,所以就不会报出空指针异常。
总结:
这三者的使用,个人觉得应该使用String.valueOf()的方式。这样的使用安全可靠,不会带来异常。说的有不对的地方,希望大家指正批评。
(String)强制转换、toString()和String.valueOf()的区别的更多相关文章
- String、toString、String.valueOf()三个有啥区别?
今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...
- c# string.format和tostring()
字符 说明 示例 输出 C 货币 string.Format("{0:C3}", 2) $2.000 D 十进制 string.Format("{0:D3}", ...
- JSON和Map,List,String互相转换
1)Map 和 JSON 互相转换 Map 转成 JSON Map<String, List> map = new HashMap<>(); map.put("xAx ...
- java String int转换的不同方法
参考了网上某篇日志的内容,现摘录如下: String转int: 最常见:int i = Integer.parseInt("123"); 罕见:Integer i= Integer ...
- 转:char*, char[] ,CString, string的转换
转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准 ...
- char[],char *,string之间转换
char []与char *之间转换 char []转char *:直接进行赋值即可 // char[] 转char *char str[] = "lala";char *str1 ...
- C# 输出&输入&类型强制转换
输入字符串 String s; s=Console.ReadLine(); 输出字符串 Console.WritrLine(s); 输出分两种 ①占位符输出:Console.WriteLine(&qu ...
- Map集合中key不存在时使用toString()方法、valueOf()方法和强制转换((String))之间的区别
1.toString()方法 底层代码 public String toString() { return this; } 其返回值为String类型的字符串本身 Map<String, Obj ...
- 转换String三种方式比较:toString()、String.valueOf()、(String)
简单介绍: 1.toString,需要保证调用这个方法的类.方法.变量不为null,否则会报空指针. 2.String.valueOf.这个方法在使用的时候是有些特殊的.一般情况下,如果是确定类型的n ...
随机推荐
- gitlab--ci文件
1.when: manual 手动执行(加到哪个脚本中,哪个就会变成手动执行)
- PAT A1120 Friend Numbers (20 分)——set
Two integers are called "friend numbers" if they share the same sum of their digits, and t ...
- 动手动脑(lesson 8)
一. 上面程序在不注释第一个i/j会出错,这是因为程序会顺序运行,在运行到try之前就已经出错,因此不会跳到异常处理. 异常处理基础知识: 二. 三. 运行结果: 运行结果: 四. 运行结果: 总结: ...
- JavaWeb学习总结-12 JSTL标签语言
一 JSTL JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了 ...
- Luogu4609 FJOI2016 建筑师 第一类斯特林数
题目传送门 题意:给出$N$个高度从$1$到$N$的建筑,问有多少种从左往右摆放这些建筑的方法,使得从左往右看能看到$A$个建筑,从右往左看能看到$B$个建筑.$N \leq 5 \times 10^ ...
- React-使用Redux-thunk中间件实现ajax数据请求
把异步函数放在生命周期函数里写,生命周期函数会变得越来越复杂,组件会变得越来越大.Redux默认只处理同步,借助redux-thunk ,可以把异步请求放在actionCreators.js里管理,而 ...
- Ionic buid android下的此工程不是一个android项目问题
今天编译Ionic项目的时候报如下错误,甚是费解,之前一直都是好的 首先去检查了,相关JavaHome的环境变量,确定是好的,java -version 命令没有问题. 经查阅网上的解决方法,思路大都 ...
- jdk8+Mybatis3.5.0+Mysql读取LongBlob失败
问题:在mysql中存储base64,因为太长,基本就是几百K,所以用longBlob 描述:在mysql中,LongBlob.blob算是二进制流文件了,所以用普通的数据格式是不行的,这里用Type ...
- Logview_pro破解版
logViewer Pro 是一款log文件查看器,它可以在短短数秒内打开上G的LOG文件,支持高亮某行文字(例如警告,错误),支持Unicode名字,支持查看的编码:ANSI, OEM, Unico ...
- WPF没落了吗?
从08年开始一直到现在,碰到所有的项目,我个人经手的,都用wpf开发. wpf应该说一直没有火过,一直平平淡淡. 个人为什么一直执着用wpf,开始使用是因公司项目,做了两年wpf开发,后来换工作一直搜 ...