Java中使用String类的方法时,有一些方法必须注意,因为在编译时,Java编译器并不会报错,然而在运行时会出错,原因在于对字符串的操作考虑不周。
工具/原料
Eclipse
String类的方法
Stringsubstring(intarg0)是获取当前字符串对象索引为arg0及其之后的字符串内容,作为新的子字符串。
方法/步骤
1、问题:对于String类的方法substring(intar壹执慵驾g)或者substring(intarg0,i荏鱿胫协ntarg1);有如下在运行时报错的代码:Stringmsg=fromServer.readUTF();intm1=msg.indexOf(":");Stringmsgnew=newString(msg.substring(m1));//==>此行报错
2、分析:然而代码的错误,可能并不只在报错的那一行;可以看到intm1=msg.indexOf(":");是有问题的,在运行时,如果msg中正好不含有“:”时,这行代码会返回-1,如此,代码msg.substring(m1)越界,即在运行时抛出字符串下表越界的异常。
3、解决:在不确定时,先做判断,判断msg中鋈守踬痊是否含有“:”,然后使用substring(intarg0)。Stringmsg=fromServer.readUTF();intm1=0;S墉掠载牿tringmsgnew=newString();if(msg.contains(":")){m1=msg.indexOf(":");msgnew=newString(msg.substring(m1));}