这个和你说的前后没有关系,是因为参数不同你的第一个调用lastIndexOf的参数是字符串你的第二个调用indexOf的参数是字符而实际上indexOf方法是不接收字符参数的,之所以这里没有问题,是因为Java会把这个字符根据ASCII码转换为对应的10进制数字所以说下面几个是等价的 int index =fileName.lastIndexOf(".");int index =fileName.lastIndexOf('.);int index =fileName.lastIndexOf(46);→因为ASCII码中.对应的10进制是46int index2 =email.indexOf("@");int index2 =email.indexOf('@');int index2 =email.indexOf(64);→因为ASCII码中@对应的10进制是64