![]() |
1
152
如果您不关心潜在的溢出问题,此函数的执行速度将比使用
|
![]() |
2
56
你有,但你只能抓住
|
![]() |
3
35
做了一个快速的基准测试。异常实际上并不是那么昂贵,除非您开始返回多个方法,并且JVM必须做大量工作才能使执行堆栈就位。当保持同样的方法时,他们并不是表现不佳的人。
输出:
我同意乔纳斯·K的解决方案也是最有力的。看起来他赢了:) |
![]() |
4
34
因为有可能人们仍然访问这里,在基准测试后会对regex产生偏见…所以我将给出基准测试的更新版本,以及regex的编译版本。与之前的基准相比,这一个显示了regex解决方案实际上具有始终如一的良好性能。 复制自《蜥蜴比尔》并用编译版本更新:
结果:
|
![]() |
5
28
虽然Java的标准LIB确实忽略了这样的效用函数。 我认为Apache Calm是每个Java程序员必须具备的。 可惜还没有移植到Java5上 |
![]() |
6
22
这部分取决于您所说的“可以转换为整数”。 如果你的意思是“可以用Java转换成int”,那么乔纳斯的回答是一个很好的开始,但并不能很好地完成这项工作。例如,它将通过999999999999999999999999999。我将在该方法的末尾添加来自您自己问题的正常try/catch调用。 字符按字符检查将有效地拒绝“不是整数”的情况下,留下“它是一个整数,但Java不能处理它”的情况下,会被更慢的异常路由所捕获。你 能够 也可以用手来做,但这是一个 许多 更复杂。 |
![]() |
7
14
关于regexp只有一条评论。这里提供的每个示例都是错误的!。如果要使用regexp,请不要忘记编译模式需要花费大量时间。这是:
还有:
导致在每个方法调用中编译模式。要正确使用它,请执行以下操作:
|
![]() |
8
12
我复制了Rally25rs答案中的代码,并添加了一些非整数数据的测试。不可否认的是,结果支持乔纳斯·克莱明发表的方法。当您有整数数据时,我最初发布的exception方法的结果非常好,但如果没有,它们是最差的,而regex解决方案的结果(我敢打赌很多人会使用)是 一贯地 坏的。见 Felipe's answer 对于已编译的regex示例,这要快得多。
结果:
|
![]() |
9
8
有番石榴版本:
如果无法分析字符串,它将返回空值,而不是引发异常。 |
![]() |
10
6
这是更短的,但更短并不一定更好(它不会捕获超出范围的整数值, as pointed out in danatel's comment ):
就个人而言,由于实现是在一个助手方法中进行的,而正确性胜过长度,所以我将使用类似于您所拥有的(减去捕获基
|
![]() |
11
6
可以使用String类的matches方法。[0-9]表示它可以是的所有值,+表示它必须至少有一个字符长,*表示它可以是零个或多个字符长。
|
![]() |
12
3
如果字符串数组包含纯整数和字符串,那么下面的代码应该可以工作。你只需要看第一个角色。 例如,[“4”,“44”,“ABC”,“77”,“Bond”]
|
![]() |
13
3
您也可以使用 Scanner 类及其使用 hasNextInt() -这也允许您测试其他类型,如float等。 |
![]() |
14
2
你只要检查一下 数字格式异常 -
|
![]() |
15
2
|
![]() |
16
2
这是Jonas Klemming回答的Java 8变体:
测试代码:
测试代码的结果:
|
![]() |
17
1
怎么样:
|
![]() |
18
1
您可能还需要考虑用例:
如果大多数时候您希望数字是有效的,那么捕获异常只会在尝试转换无效数字时造成性能开销。但是打电话给
|
![]() |
19
1
这是对 乔纳斯 '检查字符串是否在要转换为整数的范围内的代码。
|
![]() |
20
1
如果您使用的是Android API,则可以使用:
|
![]() |
21
1
另一种选择:
|
![]() |
22
1
如果你想检查字符串是否代表一个整型的整型,我对jonas的答案做了一些修改,这样那些代表大于integer.max_value或小于integer.min_value的整型的字符串将返回false。例如:“3147483647”将返回false,因为3147483647大于2147483647,同样,“-2147483649”也将返回false,因为-2147483649小于-2147483648。
|
![]() |
23
0
|
![]() |
24
0
你所做的是有效的,但你可能不应该总是这样检查。抛出异常应该为“异常”情况保留(也许这适合您的情况,但是),并且在性能方面非常昂贵。 |
![]() |
25
0
|
![]() |
26
0
这只对正整数有效。
|
![]() |
27
0
这对我有用。只需标识字符串是基元还是数字。
|
![]() |
28
0
要检查所有int字符,只需使用双负。 如果(!)searchString.matches(“[^0-9]+$”)… [^0-9]+$检查是否有非整数字符,如果为真,则测试失败。但不是那样,你就会成功。 |
![]() |
29
0
发现这可能有帮助:
|
![]() |
30
0
我相信发生异常的风险是零的,因为正如您在下面看到的,您总是安全地分析
所以:
实际上,我们有:
结果是:
同样,您可以验证
我希望我帮助 |