日期:2014-05-20  浏览次数:20629 次

java indexof(int ch)不解,忘高手解惑。
偶然看到一段源码(FreeMarker 中的),去除部分其他代码,主要类似代码如下:


Java code

String name = "http://www.csdn.net";

int zIdx = name.indexOf(0);

if (zIdx != -1)
   return null;




我试了很多字符串作为name的值,zIdx 值都为-1,
很想知道在什么情况下zIdx 值不等于-1, 再有indexof(0) 的作用究竟是什么?

查看了indexof方法的注解,可惜英文不是很好,不能理解它的意思,忘高手能解惑!感谢~~

------解决方案--------------------
indexOf(char c)
indexOf(String s)

参数第一次出现的位置。

name.indexOf('h') 0
name.indexOf("t") 1
------解决方案--------------------
Returns the index within this string of the first occurrence of the specified character.

char 本质上是一个16bit的int

Java code
        int a = 'a';

------解决方案--------------------
这个 indexOf(0) 应该是 c字符串的结尾NULL。
http://stackoverflow.com/questions/318775/null-u0000-in-java-string
------解决方案--------------------
public int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。如果在此 String 对象表示的字符序列中出现值为 ch 的字符,则返回第一次出现该字符的索引;如果此字符串中没有这样的字符,则返回 -1。 

0对应的字符是什么?我也好奇一下,等高手解答,

if (zIdx != -1 && zIdx < cppIdx) return null;
//当字符串中包含该字符(0对应的字符),且该字符出现的位置在字符串“:\\”之后,返回null