不多说,下面是代码和结论:
package cn.test;
//import java.text.Character;
public class TestTryIf {
/**
* 异常
* @param str
* @return
*/
public boolean testTry(String str){
// String ret=str;
try{
Integer.parseInt(str);
}catch(Exception e){
return false;
// ret="";
}
return true;
}
/**
* 转为byte类型
* @param str
* @return
*/
public boolean testByte(String str){
byte[] by=str.getBytes();
// String ret="";
for(int i=0;i<by.length;i++){
if(by[i]>47&&by[i]<58){//48-57为数字
// ret+=(char)by[i];
}else{
return false;
}
}
return true;
}
/**
* 转换为char类型
* @param str
* @return
*/
public boolean testChar(String str){
char[] ch=str.toCharArray();
// String c="";
for(int i=0;i<ch.length;i++){
if(ch[i]>='0'&&ch[i]<='9'){
// c+=ch[i];
// System.out.println(ch[i]);
}else{
return false;
}
}
return true;
}
/**
* 得到的结果是最后一种方法最快,即是转换成字符进行判断是最快的
* 好像有直接用某个类的方法直接进行判断,没有找到这个方法~~ ^—^
* @param args
*/
public static void main(String[] args){
String ss="12345ss678902";
TestTryIf tt=new TestTryIf();
long ct1=System.currentTimeMillis();
for(int i=0;i<100000;i++){
tt.testTry(ss);
}
long end1=System.currentTimeMillis();
long ct2=System.currentTimeMillis();
for(int i=0;i<100000;i++){
tt.testByte(ss);
}
long end2=System.currentTimeMillis();
long ct3=System.currentTimeMillis();
for(int i=0;i<100000;i++){
tt.testChar(ss);
}
long end3=System.currentTimeMillis();
System.out.println(end1-ct1);
System.out.println(end2-ct2);
System.out.println(end3-ct3);
}
}