String.valueOf 空指针
    发现一个奇怪的问题,求大神解释

            TreeMap<String,Object> ttt = new TreeMap<String,Object>();
    if(ttt.get("xxxx") == null){
        System.out.println(String.valueOf(ttt.get("xxxx")));  //程序运行这里没报错
    }

    System.out.println(String.valueOf(null));  //程序运行这里报错了
0

7个回答

前面的是一个对象,后面只是一个值,一个对象对应一个内存地址,前面你是转换一个名称为xxxx值为null对象,而后面你直接转换null此时的null为java中的一个关键字,不属于任何一个类型,null可以转化为任意类型,比如Integer a = null;那么此时那就是int类型

1

Map集合的value值是Object,而Object是java类中的基本对象,所以String.valueOf(map.get(key))相当于获取对象的字符串地址;而null是空,使用String.value(null)获取的当然是个异常,是个报错~~

1
0

并没有错。你尝试clean,重新运行程序

0
qq_38494537
chenjiexixi 不好意思,刚刚测试了下,的确报错了
接近 2 年之前 回复

下面一个写成System.out.println(String.valueOf((Object)null));就不会报错,上面没报错也是因为返回的null属于Object,就是这个意思。

0

String valueOf(Object obj)方法有参数返回规则,这里和你的问题一样,你可以参考一下:http://blog.csdn.net/u011450110/article/details/51026102

0

String valueOf(Object obj) 这个方法是把其他类型(基本数据类型和引用类型)的数据转换为String类型的数据,首先传null没有意义,强转Object不报错说明传null运行的时候JVM根本不知道传的什么东东啊!

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
容易入坑的 String.valueOf()方法
String.valueOf 方法经常有人用,非常方便的一个方法,但是有个小地方需要留意一下class X { String s; public String getS() {  return s; } public void setS(String s) {  this.s = s; }}public class B { public static void main(String[] args...
Java的字符串操作,强转换,toString以及String.valueOf()
我现在知道的Java对象转换为字符串的方法如下(以后还有再补充): 1、java.lang.Object类的toString()方法,对于这个方法,通常需要Object的子类进行Override(重写); 2、java.lang.String类的valueOf()方法; 3、String的强制转换,(String) obj   分析上面三中方法: 1、java.lang.Objec...
使用String valueOf(Object obj)的陷阱,体现阅读源码的重要性
使用 String.valueOf() 要注意, 其源码是: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 如果直接传入一个null,null==null 就报错了。 而如果这样 Map,Object> map = new Has
类型转换的那些事儿——浅谈.valueOf()与parseDouble() and so on
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在项目中,经常需要对数据类型进行转换,一不小心,一个NPE就来了,今天做一下笔记,提醒下自己。 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;以前我一直记得toString()会有问题,容易抛出空指针异常,用String.valueOf()就可以了,所以我就形成了一种思维,对
String的valueOf方法源码解读
String中的valueOf方法大致可以分为三种: String.valueOf(Object)、String.valueOf(char[])、String.valueOf(基本数据类型) 案例: Integer arg = null; String.valueOf(arg); // 输出 null String.valueOf(null); // 抛java.lang.NullPoint...
String.valueOf引发的错误
String.valueOf引发的错误背景近日在配合客户端调试的时候,客户端无法解析restful返回的失败返回值,需要服务器端配合解决,该问题,查看了服务端的log,返回值以json格式正常返回了,没有异常,那问题出在哪里呢?怀疑是客户端解析问题导致。分析问题查看了客户端的解析返回值的代码,发现疑点,客户端使用String.valueOf(byte []),将收到的byte []转换了为Strin
JAVA中String.valueOf()、进制转换、类型转换等相关问题分析
进制转换基本语句 System.out.println(Integer.toBinaryString(arg0));//十进制转换为二进制 System.out.println(Integer.toOctalString(arg0));//十进制转换为八进制 System.out.println(Integer.toHexString(arg0));//十进制转换为十六进制 System.out....
String.valueOf引发的血案
1.String.valueOf(null) 会报错吗 感觉jdk做了容错处理不信你看源码 public static String valueOf(Object obj) { return (obj == null) ? &quot;null&quot; : obj.toString(); } 点进去报错的地方看看 public static String valueOf(char data[]) { ...
注意map 获取出来的对象进行String.valueOf的转化后的问题。
结果如下:
(String)强制转换、toString()和String.valueOf()的区别
在做项目的时候报出了这个错误:Java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String 原因是因为BigDecimal 类型无法强制转换成String类型,在代码中我的写法是(String)BigDecimal,查了网上的资料,其实方法有三种:i代表其他类型 1》String.va
string字符串的contains方法,valueOf方法
例子 for(int i=125;i String str = String.valueOf(i); 将int 类型的i变为string类型 利用str.contains("1")判断i是否含有“1“,返回true or false
Double.valueOf容易出现的问题!
String a = "100"; String b = "100"; System.out.println(Double.valueOf(a)==Double.valueOf(b));//false System.out.println(Double.parseDouble(a)==Double.parseDouble(b));//true
Junit Test 常见问题
anyString()什么时候使用1.1).比如在controller层,API地址中有映射参数时,那么when的时候(模拟service层调用)就要用到anyString() eg: Controller Layer: @DeleteMapping(value = "/detail/lock/{guid}") @ApiOperation(value = "delete the l
继承 空指针 spring
继承 空指针 spring 继承 空指针 spring
Java中的空指针异常问题.doc
Java中的空指针异常问题Java中的空指针异常问题.docJava中的空指针异常问题.doc
关于toString()、string.valueOf()、""三种转换字符串方式的比较及mysql中空字段的转换
一、关于三种方式的效率问题在此就不做过多的讨论了。toString()&gt;String.valueOf()&gt;""。在执行效率上toSting()是最快的。 二、关于“”和null能使用哪种方式进行转换字符串及转换后是什么? 1.首先来看“”的转换 public static void main(String[] args) { System.out.prin...
applicationdemo
application存储数据会出现空指针的demo,演化空指针的过程
一次阿里的面试题,不知道对不对,各位大神指导一下啊?
题目是这样的如下:现在有1万条数据,需要调用方法A(简单考虑,入参为数据,返回值为Integer)做处理,处理完成后,需要给出成功处理多少数据、处理失败多少数据,并将成功处理结果数据加和,输出;要求:    (1)对数据分组,每组大小默认为N(简单考虑,N取值为10,即每组10条数据);    (2)每次会取M组数据做处理(简单考虑,M取值为5,即每次需要处理5组数据);    (3)M组数据处理...
JAVA初学,写了个计算器
package calculator; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class Calculator {    public static void mai
JavaWeb响应下载(包含工具类)
纸上得来终觉浅,绝知此事要躬行!今天博主分享是关于javaweb的响应(response)下载以下是我的Demo:页面我就粘主要部分的代码<a href = "${pageContext.request.contextPath }/user/courseTab">模板下载</a>当然,现在的项目大家都使用框架,这里我使用的是(SSM),好了,粘代码@Controller @RequestMappin
String.valueOf()抛NumberFormatException异常
[code=java]temp = String.valueOf(Double.parseDouble(left)*Double.parseDouble(right));[/code]rn其中left、right都是string类型的数字。rn为什么会抛NumberFormatException异常
一滴水:关于Java容器类库概念及Map.put();方法的使用
一滴水:关于Java容器类库概念及Map.put();方法的使用author:张馨 参考书籍:《Java面试宝典》 Java容器类库一共有两种主要类型:Collection和Map; : Collection和Map的区别在于容器内每个“槽”所存储的元素个数不同;Collection中每个“槽”只有一个元素,Map接口中,持有Key-Value关联(又叫键值关联:将键映射到值的一个映射,不能包
String 看程序写结果
1 String 类的== 和equals()方法 String s1="hello"; String s2="hello"; System.out.println(s1==s2); 1 System.out.println(s1.equals(s2)); 2 System.out.println("--------------------"); S
字符串转换
String ss =String.valueOf(a); char[] ch = ss.toCharArray(); 第一句将A转化成String类型,赋值给SS, 第二句将ss转化成字符数组类型,赋值给ch
Java学习——复习 第八天 Swing程序设计、AWT绘图、事件监听
16.Swing程序设计    1.Swing概述--Swing主要用来开发GUI程序,GUI即图形图像界面,他是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮等元素。        1.1Swing的特点--允许开发人员跨平台时指定统一的外观和风格,Swing不依赖操作系统,可以在多平台上使用,将Swing组件称为‘轻量级组件’AWT组件则相反比较依赖本地操作系统,所以被称为‘重量级组件...
数据库SQLite<一>
一、SQLite数据库简介 SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。 二、Android中如何使用SQLite 1.
redis分布式锁实现
public synchronized boolean getLock2(final String lockKeyPrefix, final String lockKeySuffix) { int retryTimes = 5; //重试次数 while (true) { boolean result = redisTemplate.execute(new RedisCallback() {
android微信支付
这段时间一直在忙着弄支付这块的东西,支付宝也好,银联都很简单,基本按照文档和Demo就可以了支付成功,最坑的就属微信支付了。微信支付会有各种各样的坑等着你去跳,第一次做的人往往会摸不着头脑,所以把我在微信支付中遇到的坑和怎么解决的发出来,希望大家遇到时可以顺利解决 第一个坑,就是我们下载的微信官方的Demo运行不起来,这个解决方法很简单,就是我们打开测试手机的应用管理,清除微信的缓存,然后再次运行就
关于String.valueOf()和.toString的问题
我一般转换成字符串时喜欢用.toStringrn但有一个项目里我用.toString以后总报无法类型转换的异常。rn这让我很郁闷,后来我把.toString 都改成 String.valueOf() 就不报任何错误。rn所以我想问什么时候应该用.toString,什么时候应该使用String.valueOf()。rn另外它们两的转换机制是什么?
请问一下String.valueOf问题
public void initArray()rn rn ResultArray ra = new ResultArray();rn ra.open();rn String strSql = String.valueOf(String.valueOf((new StringBuffer("select name,name from type_cityarea where agentno = '")).append(strAgentNo).append("'")));rn arrCityArea = ra.getList(strSql);rn strSql = String.valueOf(String.valueOf((new StringBuffer("select name,name from type_contact where agentno = '")).append(strAgentNo).append("'")));rn arrContactType = ra.getList(strSql);rn strSql = String.valueOf(String.valueOf((new StringBuffer("select prop.rs_guid,prop.property_name from usr_con_pro as prop where prop.agen" +rn"tno = '"rn)).append(strAgentNo).append("'")));rn arrOther = ra.getList(strSql);rn ra.close();rn rnrnrnrn请问一下这句怎么理解啊String.valueOf(String.valueOf((new StringBufferrn为什么要用两个String.valueOf,String.valueOf是什么意思啊,
String.valueOf和byte的问题
大家好!rnrnbyte数组是:rn[code=java]rnbyte[] WriteBytes = new byte[17];rn WriteBytes[0]=0x66;rn WriteBytes[1]=0x00;rn WriteBytes[2]=0x0B;rn WriteBytes[3]=0x00;rn WriteBytes[4]=0x10;rn WriteBytes[5]=0x00;rn WriteBytes[6]=0x10;rn WriteBytes[7]=0x11;rn WriteBytes[8]=0x22;rn WriteBytes[9]=0x33;rn WriteBytes[10]=0x44;rn WriteBytes[11]=0x55;rn WriteBytes[12]=0x66;rn WriteBytes[13]=0x77;rn WriteBytes[14]=(byte)0x88;rn WriteBytes[15]=(byte)0x99;rn WriteBytes[16]=(byte)0xFF;rn[/code]rn我用下面这句代码开看的时候:rnrn[code=java]rnToast.makeText(Commviewer_ControlActivity.this, i+", "+String.valueOf((int)input[i]), Toast.LENGTH_SHORT).show();rn[/code]rn出现这样, 提示:rn1,0,rn2,11,rn3,0,rn4,16rn。。。rn16,-1rn怎么0xFF变成了-1?0x0B变成了11,0x10变成了16?
ListViewDemo
解决ListView空指针的异常的Demo
Java部分笔记
数据类型 Arrays.fill(arr,94)//将数组中的元素填充为94 Arrays.fill(arr,1,4,0)//将数组中的第a[1]个元素到a[4]之前的元素全部换成0 String str=&quot;abc&quot;; str=str.contac(&quot;de&quot;)//contac方法是在str字符串末尾添加“de” String a=String.valueof(b)//将b的值赋给字符串a ...
bug记录——toUpperCase 方法失效
今天发现一个超级隐藏性的bug,首先放上我的源代码: if (Character.isLetter(arr[i])) { String s = String.valueOf(arr[i]); s.toUpperCase(); sb.append(s);...
Boolean.valueOf的用法(字符串转boolean时注意)
valueOf public static Boolean valueOf(String s) 返回一个用指定的字符串表示值的 Boolean 值。如果字符串参数不为 null 且在忽略大小写时等于 "true",则返回的 Boolean 表示 true 值。 参数:s - 字符串。 返回:该字符串所表示的 Boolean 值。 其他任何情况为false
【utils】基于jackson的解析转换JsonUtil
jackson version: 2.8.6 /** * @description json工具类,依赖jackson * @author paul * @date 2017年7月10日 上午10:54:43 * @update 2017年7月10日 上午10:54:43 * @version V1.0 */ public class JsonUtil { private s
空指针和0、NULL之间的关系
详细叙述了空指针和0、NULL之间的关系
string.valueOf的功能是什么??
string.valueOf(2005)输出“2005”没错,但为什么string.valueOf(02005)会输出“1029”呢?这个方法到底实现什么功能?菜鸟求教!
String.valueOf(Socket s)
想巩固一下J2SE的内容,最终决定做一个模仿QQ的聊天程序,因为这个小程序里几乎包含了J2SE的大部分知识。有人会说:你这不就是个C/S的通讯吗。 你这个不就是个什么什么吗。rn 是的,我这个就是一个小东西,因为不会所以我才做动手做。rnrn 我程序的大概思路是:某一个用户登录,通过服务器把自己的信息和在线好友的信息全部下载到本地,这里好友的信息包括Socket的一部分内容,我想在某一个用户发起对好友会话时候新new一个TCP或UDP的链接。rn 但是,目前看来是不可以的,因为如果这么做的话,对方要是走路由器的话,那么信息就不会接收到。rnrn 于是我想到用服务器进行转发(这里我不知道腾讯是不是这么做的,用服务器转发消息?如果知道的朋友可以告诉我一下)rn 因为用服务器转发是在服务器端保留用户的Socket信息,通过getOutPutStream来进行通讯;所以我还有另一种想法:rn 客户登陆时候我保存一些信息,那么我可不可以用这些信息给转变成一个Socket呢?rn 也就是强制类型转换,这样的话我就可以把信息存到数据库中,等某个用户需要时再从数据库中拿出相关信息 进行类型转换,变成Socket。rnrn 我的问题就是:1.这种类型转换可能实现么?如何实现?rn 2.腾讯公司是用服务器转发消息吗?rnrn 在这里先谢谢各位!
Obj.toString()和String.valueOf(Obj)的区别?
Obj.toString()和String.valueOf(Obj)的区别?rn我感觉没有什么区别,但实际上是有区别的吧。不知大家怎么看?