黑马程序员技术交流社区
标题:
字符串与null
[打印本页]
作者:
不愿一人
时间:
2013-12-29 12:16
标题:
字符串与null
public class Test {
public static void main(String[] args) {
String str = null;
//System.out.println(str.length());
String str1 = str + null;
System.out.println(str1.length());
}
}
复制代码
第一次打印时出现异常这个我可以理解,
但是第二次打印时为什么是8啊,网上查资料也搞不懂,
null不是空吗,什么都没有啊,如果能打印也应该是0啊,还有这句话为什么不报异常啊,
null值相加结果是什么,哪位同学能帮我解释一下
作者:
zzmxhm
时间:
2013-12-29 12:52
本帖最后由 zzmxhm 于 2013-12-29 12:54 编辑
当 null 和字符串相加时会被当作 "null" 来处理,可以试一下以下几个语句:
String str1 = "abc";
String str2 = null;
System.out.println(str1 + str2); // "abcnull"
System.out.println("abc" + str2); // "abcnull"
System.out.println(str1 + null); // "abcnull"
System.out.println("abc" + null); // "abcnull"
System.out.println(str2 + null); // "nullnull"
System.out.println(str2 + str2); // "nullnull"
System.out.println(null + null); // 编译不通过
复制代码
这也是用+连接字符串和用 String.cancat(String str) 的区别之一:+ 可以连接一个 null 值而 cancat 会抛出 NullPointerException
作者:
yekong262
时间:
2013-12-29 17:47
请问 您是怎么把这个代码像你上面那样发出来的???
谢谢~!
作者:
杨丽静
时间:
2013-12-30 23:38
public class KK { public static void main(String[] args) { String str = null; //System.out.println(str.length()); String str1 = str + null; System.out.println(str1.toString()); } }这样程序运行的结果为nullnull所以长度为8吧 我也不知道具体怎莫解释
作者:
Zenith
时间:
2013-12-30 23:54
这里用String 接受 所以 null也就是一个字符串对象了 那么+号 应该是连接符 str+null 也就是null+null 属于字符串的连接,你用断点试试 就可以看见是两个null值 做的连接了 所以长度自然是字符串的长度了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2