原文地址:http://www.java2000.net/p12096 到底是 str==null 快一些还是 null==str 快一些呢?
我们还是亲自测试一下看看吧,大家也可以看看代码,然后自己测试一下,不要人云亦云。包括我自己的结论也是这样,请有疑虑的人亲自测试,看结果。
先看测试代码
- public class Test {
- static int TIMES = 1000000000;
- static String str = "JAVA2000.net";
- public static void main(String[] args) {
- long t1;
- long t2;
-
- for (int i = 0; i < 10; i++) {
- t1 = test1();
- t2 = test2();
- System.out.printf("str == null:%13d\t", t1);
- System.out.printf("null == str:%13d\t", +t2);
- System.out.printf("Diff=%13d", t2 - t1);
- System.out.println();
-
- t2 = test2();
- t1 = test1();
- System.out.printf("str == null:%13d\t", t1);
- System.out.printf("null == str:%13d\t", +t2);
- System.out.printf("Diff=%13d", t2 - t1);
- System.out.println();
- }
- }
- public static long test1() {
- long t1 = System.nanoTime();
- for (int i = 0; i < TIMES; i++) {
- if (str == null) {
- ;
- }
- }
- return System.nanoTime() - t1;
- }
- public static long test2() {
- long t1 = System.nanoTime();
- for (int i = 0; i < TIMES; i++) {
- if (null == str) {
- ;
- }
- }
- return System.nanoTime() - t1;
- }
- }
我的测试结果
- str == null: 1331211649 null == str: 1306476382 Diff= -24735267
- str == null: 1325049972 null == str: 1310683341 Diff= -14366631
- str == null: 1321184396 null == str: 1314800066 Diff= -6384330
- str == null: 1308572459 null == str: 1310631659 Diff= 2059200
- str == null: 1322850530 null == str: 1312672142 Diff= -10178388
- str == null: 1310835595 null == str: 1312089385 Diff= 1253790
- str == null: 1324557172 null == str: 1311582059 Diff= -12975113
- str == null: 1311757780 null == str: 1329927686 Diff= 18169906
- str == null: 1325011978 null == str: 1305032064 Diff= -19979914
- str == null: 1325790010 null == str: 1309495201 Diff= -16294809
- str == null: 1308165144 null == str: 1316338529 Diff= 8173385
- str == null: 1321638644 null == str: 1310619646 Diff= -11018998
- str == null: 1305769309 null == str: 1306789550 Diff= 1020241
- str == null: 1324110187 null == str: 1307757550 Diff= -16352637
- str == null: 1311276712 null == str: 1309109957 Diff= -2166755
- str == null: 1323087432 null == str: 1308201741 Diff= -14885691
- str == null: 1305018096 null == str: 1304627264 Diff= -390832
- str == null: 1326120778 null == str: 1314136852 Diff= -11983926
- str == null: 1312848141 null == str: 1306828382 Diff= -6019759
- str == null: 1319538097 null == str: 1313048725 Diff= -6489372
我的结论:
1 测试10亿次,最大的差别在0.024秒
2 整体上 null==str的速度快于str==null
3 个别情况则正好相反
4 个人认为,这个数量级的差距,我个人就不考虑了。呵呵呵!
分享到:
相关推荐
$str1 = null; $str2 = false; echo $str1==$str2 ? ‘相等’ : ‘不相等’; $str3 = ”; $str4 = 0; echo $str3==$str4 ? ‘相等’ : ‘不相等’; $str5 = 0; $str6 = ‘0’; echo $str5===$str6 ? ‘相等’ : ...
第1章 声明和初始化 基本类型 1.1 我该如何决定使用哪种整数类型? 1.2 为什么不精确定义标准类型的大小? 1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的...
1.20 const char *p、char const *p和char *const p有什么区别? 10 复杂的声明 11 1.21 怎样建立和理解非常复杂的声明?例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 11 1.22 如何声明...
两个字符串相等的充要 条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存 储方式和链接存储方式。 下面我们来看看...
支持模糊移除事件,“BC.removeEvent(this, ”后面3个参数为模糊参数,可有可无,明确的参数必须相等才会移除. * 000 删除所有关于监听者的所有事件,通常在类销毁时使用一次 BC.removeEvent(this); * 001 指定相同...
function create($str, $encoding = null) { return new Stringy($str, $encoding); } }字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,...
和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL mysql> select concat_ws(',','11','22',NULL); +-------------------------------+ | concat_ws(',','11','22',NULL) | +-----...
递增和递减操作符: 位操作符: 布尔操作符: 加性操作符: 相等操作符 三、语句 for-in语句 label语句 一、数据类型 数据类型 基本数据类型(五种) Undefined Null Boolean Number String 复杂数据类型(一种...
CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,...
数据太多时,最好别使用上句,会使DBMS降低检索和应用程序的性能。(*通配符) 2、对数据类型的列可进行运算(如加减乘除)。 3、对列起别名:有直接起别名,加AS起别名,用双引号起别名等三种方法 (单引号,引起...
CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果...
这也意味着,除非它们的字段顺序匹配,否则Json对象将不会测试相等。 具有相同名称的多个字段可以存储和序列化。 永远不要这样做,但是对于与越野车软件进行互操作很有用。 该库具有一种类型, Json ,其定义如下:...
day 取时、分和秒:hour,minute,sec 星期函数:dow,cdow 数据类型转换函数: 数值转换为字符串:str 字符串转换为数值:val 字符串转换为日期或日期时间:ctod,ctot 日期时间转换为字符串:dtoc,ttoc 宏代换:& 测试函数...
m (多行查找) vaScript动态正则表达式问题 请问正则表达式可以动态生成吗? 例如JavaScript中: var str = "strTemp"; 要生成: var re = /strTemp/; 如果是字符连接: var re = "/" + str + "/"即可 但是要...
说明上面三种描述的区别; 如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量; 如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。 (1)const char *p 一个...
assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。 24、GC是什么? 为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方...
assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。 27、GC是什么? 为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的...
面向对象的软件工程是面向对象方法在软件工程领域的全面应用,它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。...