三种判断字符串是否是数字性能的比较

不多说,下面是代码和结论:

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);

}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值