社区
Java SE
帖子详情
valueOf和空指针异常问题
bolziman123
2010-06-03 08:32:49
valueOf的源码是
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
可是为什么
if(String.valueOf(null).equals("null") ){
System.out.println("ss");
}
报空指针异常?
...全文
498
23
打赏
收藏
valueOf和空指针异常问题
valueOf的源码是 public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 可是为什么 if(String.valueOf(null).equals("null") ){ System.out.println("ss"); } 报空指针异常?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
「已注销」
2010-06-04
打赏
举报
回复
JDK的String类源码
bolziman123
2010-06-04
打赏
举报
回复
public String(char value[]) {
int size = value.length;
this.offset = 0;
this.count = size;
this.value = Arrays.copyOf(value, size);
}
这段代码是从哪来的?
xiaoshihenmei
2010-06-04
打赏
举报
回复
null.equals()肯定会报错啊
uqortbsa
2010-06-04
打赏
举报
回复
函数重载的问题!!!!
null在Java里是一个“神奇”的对象,既不是任何对象,又可以被强转为任何对象
Java编译器在处理函数调用时,会使用尽量精确的函数定义
查看String.valueOf函数
发现有个N个.排除基本类型为参数的及参数个数不一致的同名函数
只留下2个函数
String.valueOf(Object o)
String.valueOf(char[] data)
显然后者比前者更精确。因此编译器认为String.valueOf(null)调用的是后者.
而后者又调用 new String(char[])
so 空指针了
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
zhuyouyong
2010-06-04
打赏
举报
回复
顶[Quote=引用 1 楼 gesanri 的回复:]
Java code
public class Test{
public static void main(String args[]){
Object o = null;
if(String.valueOf(o).equals("null") ){
System.out.println("ss");
……
[/Quote]
bolziman123
2010-06-04
打赏
举报
回复
我的jdk api 1.60没看到有源码可以看啊?
「已注销」
2010-06-03
打赏
举报
回复
如1楼提到的代码
如果你是对一个变量调用其String.valueOf函数,则编译器取其字面类型。
除了被声明为char[]类型的null外,其它类型的null,其valueOf都返回"null"
「已注销」
2010-06-03
打赏
举报
回复
null在Java里是一个“神奇”的对象,既不是任何对象,又可以被强转为任何对象
Java编译器在处理函数调用时,会使用尽量精确的函数定义
查看String.valueOf函数
发现有个N个.排除基本类型为参数的及参数个数不一致的同名函数
只留下2个函数
String.valueOf(Object o)
String.valueOf(char[] data)
显然后者比前者更精确。因此编译器认为String.valueOf(null)调用的是后者.
而后者又调用 new String(char[])
so 空指针了
dracularking
2010-06-03
打赏
举报
回复
[Quote=引用 14 楼 bolziman123 的回复:]
如果没用到那个方法的话,那么valueOf的对参数的处理是怎样的?
[/Quote]
三楼提到过~
public static String valueOf(char data[]) {
return new String(data);
}
|
V
public String(char value[]) {
int size = value.length;
this.offset = 0;
this.count = size;
this.value = Arrays.copyOf(value, size);
}
value为空导致异常
bolziman123
2010-06-03
打赏
举报
回复
如果没用到那个方法的话,那么valueOf的对参数的处理是怎样的?
dracularking
2010-06-03
打赏
举报
回复
[Quote=引用 11 楼 bolziman123 的回复:]
原生方法的概念不大清楚
[/Quote]
就是根本没用到你这个方法
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
gjanyanlig
2010-06-03
打赏
举报
回复
这里应该是java.lang.String,此异常貌似和public static String valueOf(Object obj)是静态方法有关,大家怎么看呢?
bolziman123
2010-06-03
打赏
举报
回复
原生方法的概念不大清楚
dracularking
2010-06-03
打赏
举报
回复
你说valueOf的源码,这里用的String.valueOf还是java.lang.String的原生方法吧?
原生方法必然空指针
bolziman123
2010-06-03
打赏
举报
回复
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
24K純帥
2010-06-03
打赏
举报
回复
额( ⊙ o ⊙ )!
水中影子
2010-06-03
打赏
举报
回复
顶楼上!
gjanyanlig
2010-06-03
打赏
举报
回复
[Quote=引用 2 楼 lyqiang00 的回复:]
String.valueOf(null) = null,既然是null,那还能.equals()吗?
[/Quote]
同意,.equals()是比较是否具有相同的引用,既然是null了,根本就没任何引用,肯定报异常
危险的大猫
2010-06-03
打赏
举报
回复
[Quote=引用 2 楼 lyqiang00 的回复:]
String.valueOf(null) = null,既然是null,那还能.equals()吗?
[/Quote]
源码中很清楚说了,返回String类 "null"
bolziman123
2010-06-03
打赏
举报
回复
和四楼的想法一样,理解不了
加载更多回复(3)
跟宁哥学Go语言视频课程(10):反射
本课程的主要内容: 1. 为什么需要反射 2. reflect.TypeOf 3. reflect.
Value
Of 4. 编码S表达式 5. 解码S表达式 6. 显示类型的方法集 7. 获取结构体字段标识
关于Integer.
value
Of(param)报空指针
程序中有一行类似于这样的代码,报了个“
空指针异常
”,我还问了老同事,
value
Of不是不会报空指针么?同事说不会,就算报异常,也应该会报 java.lang.NumberFormatException,数字转换异常。可是,这一行确实报
Java中的
空指针异常
Java中的
空指针异常
一、什么是空...使用时自动拆箱导致
空指针异常
3.4 对象为空,但未判空导致
空指针异常
3.5 对key、
value
不能为null的容器put为null的key、
value
值导致
空指针异常
3.6 方法或者远程服务返回的list不是
java string 空指针_java – 为什么String.
value
Of(null)引起
空指针异常
?
因为String.
value
Of(null)选择带有char []参数的重载方法,然后在新的String(null)构造函数中失败.这个选择是在编译时进行的.如果要使用Object参数显式使用重载方法,请使用:String.
value
Of((Object) null)请注意,...
String.
value
Of
问题
数字转字符串的三种方法: int i = 7; String str = String.
value
Of(i)...入参为字符类型,当值为NULL的时候,会报
空指针异常
入参为对象类型,当值为NULL的时候,会返回一个"null"字符串. public static String v
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章