求问:如题,两个字符串的区别是什么
String a="123";
String b="123"+"\0";
System.out.println(a);//输出123
System.out.println(b);//输出123
a.equals(b);//false
a.equals(b.trim());//true
主要疑惑得地方是为什么b.trim()后就变成true了
根据下面那位仁兄的回答,'123\0'
实际就是 '123\0\0'
, 那么 trim()
不是去空格函数么,为什么使用过后两个就相等了呢
你这tag打的又是C,又是Java,你是同时要问Java和C下的区别么?
就C来看,
"123"+"\0"
是不合法的,所以我假设问的是"123"
和"123\0"
。在C中,'\0'
会被隐式添加到literal string的后面来作为string terminator。当然,你也可以显式添加'\0'
,但这并不防止隐式'\0'
添加到后面,也就是说,如果你写"123\0"
,实际上是"123\0\0"
,这点你可以通过使用下面的例子来验证:str1占用的是4个byte,str2占用的却是5个byte!
扩展一下就是:
你猜会打印出什么?
Java我不会!
哎呀,我去,我答了C的,你又改成Java的,以后能不乱打tag么!