- 浏览: 413089 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
liyuanhoa_:
...
struts2.0中struts.xml配置文件详解 -
chenmingde:
...
Velocity应用(一) -
weizhikai_ai:
第二十六,当一个线程进入一个对象的一个synchronized ...
Java常见面试题(含答案) -
Aurora_lr:
...
Spring宠物商店学习笔记(一) - -
zs911zs:
all copy from http://www.iteye ...
Mule入门文档
到底是 str==null 快一些还是 null==str 快一些呢?
我们还是亲自测试一下看看吧,大家也可以看看代码,然后自己测试一下,不要人云亦云。包括我自己的结论也是这样,请有疑虑的人亲自测试,看结果。
先看测试代码
/**
* 测试传说中的null==str的性能问题。<br>
* 据说 null==str比str==null的性能高一些。<br>
* 我们来测试一下看看
*
* @author 老紫竹 JAVA世纪网(java2000.net)
*
*/
public class Test {
static int TIMES = 1000000000;
static String str = "JAVA2000.net";
public static void main(String[] args) {
long t1;
long t2;
// 测试10轮
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 个人认为,这个数量级的差距,我个人就不考虑了。呵呵呵
我们还是亲自测试一下看看吧,大家也可以看看代码,然后自己测试一下,不要人云亦云。包括我自己的结论也是这样,请有疑虑的人亲自测试,看结果。
先看测试代码
/**
* 测试传说中的null==str的性能问题。<br>
* 据说 null==str比str==null的性能高一些。<br>
* 我们来测试一下看看
*
* @author 老紫竹 JAVA世纪网(java2000.net)
*
*/
public class Test {
static int TIMES = 1000000000;
static String str = "JAVA2000.net";
public static void main(String[] args) {
long t1;
long t2;
// 测试10轮
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 个人认为,这个数量级的差距,我个人就不考虑了。呵呵呵
发表评论
-
java关键字native,volatile,transient
2009-02-25 15:12 13631.volatile:为了获得最佳速度,java允许线程保存共 ... -
quartz+spring
2009-02-12 14:48 3356Quartz 是一个强大的企业级 Schedule 工具,也是 ... -
Java虚拟机(JVM)参数配置说明
2009-01-08 16:02 2588在Java、J2EE大型应用中,JVM非标准参数的配置直接关系 ... -
@SuppressWarnings 详解
2009-01-08 15:27 971@SuppressWarnings J2SE 提供的最后一个 ... -
批量反编译java类文件
2009-01-08 10:30 1558所使用的软件是 DJ Java Decompiler 3.7。 ... -
LDAP定义
2008-12-23 10:20 1177LDAP是轻量目录访问协议 ... -
JMS总结和参考资料
2008-12-22 17:33 1811结束语 第 1 页(共3 页) 本教程提供了对 Ja ... -
JMS--Pub/Sub编程
2008-12-22 17:27 1082相同又不同 第 1 页(共1 页) 附录中有这两个 ... -
JMS--Pub/Sub接口
2008-12-22 17:24 1887介绍 第 1 页(共7 页) 现在让我们来查看 Pub/s ... -
JMS点对点编程
2008-12-22 17:15 1628介绍 第 1 页(共10 页) ... -
JMS点对点接口
2008-12-22 17:03 1483介绍 第 1 页(共8 页) ... -
JMS用公用接口进行客户机编程
2008-12-22 17:01 963绍 第 1 页(共11 页) 在这一节中,我们将查看 ... -
JMS公用接口
2008-12-19 18:01 1072在这一节中,我们将介绍 JMS 客户机编程的每一个重要 JMS ... -
JMS学习教程概述
2008-12-19 17:55 3117应用程序 第 1 页(共15 页) http://liy ... -
JNDI定义
2008-12-19 09:56 1051Java术语 英文全称是:Java Naming and ... -
Java 编程的动态性,第 8 部分: 用代码生成取代反射
2008-12-18 11:52 997运行时代码生成为获得 ... -
Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码
2008-12-18 11:51 1247Apache BCEL 让您深入 JVM 汇编语言进行类操作的 ... -
Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改
2008-12-18 11:50 1115用 Javassist 进行字节码 ... -
Java 编程的动态性,第 5 部分: 动态转换类
2008-12-18 11:48 1044学习如何在使用 Javassist ... -
Java 编程的动态性, 第四部分: 用 Javassist 进行类转换
2008-12-18 11:47 1045用 Javassist 转换字节码中的方法 文档 ...
相关推荐
本篇文章将深入剖析“==”运算符和equals()方法的区别与联系,帮助你在Java的笔试和面试中更好地应对相关问题。 首先,“==”运算符在Java中用于比较基本类型变量的值是否相等,例如int、char或boolean。对于引用...
在JavaScript中,判断两个字符串是否相等是...理解`==`和`===`的区别,以及何时使用适当的字符串比较方法,对编写健壮的JavaScript代码至关重要。同时,根据实际需求选择适当的方法,可以提高代码的可读性和准确性。
在上面的例子中,虽然 `str1` 和 `str2` 的值相同,但是它们是不同的对象,它们的地址不同,因此比较结果是 false。 正确的比较方式是使用 `equals()` 方法,这个方法是比较两个字符串的值是否相等。例如: ```...
System.out.println("str1和str2是否相等:" + isEqual); // 输出true } } ``` 在这个例子中,我们创建了两个字符串`str1`和`str2`。`str1`包含首尾空格,而`str2`没有。我们使用`trim()`方法去除了`str1`的首尾...
**字符串比较**:在测试`strcmp`时,要确保它可以正确地根据字典顺序比较字符串,同时测试相等和不等的情况。 通过这些测试用例,我们可以确保我们的字符串处理代码在各种情况下都能稳定、正确地工作。在实际项目中...
由于`str1`和`str2`是不同的对象,所以`if (str1 == str2)`为`false`,接着比较`str1 < str2`会报编译错误,因为字符串不能直接用比较运算符比较大小。 12. `String`对象创建与比较: - 创建`String str = new ...
- `str1`和`str3`都包含相同的字符串"hello",因此`strcmp(str1, str3)`返回0,表示这两个字符串相等。 - `str1`和`str2`分别包含"hello"和"world",由于在ASCII表中'h'的ASCII码值小于'w'的ASCII码值,`strcmp(str1...
这个问题涉及到Java中的数据类型、变量赋值、比较操作符以及空值(NULL)的处理。让我们深入探讨这个Java谜题,了解何时使用“==”和“!=”,以及如何正确处理NULL。 首先,我们要知道Java中的“==”操作符用于比较两...
31. `STRCMP(str1, str2)`:比较`str1`和`str2`,如果两者相等返回0,`str1`大于`str2`返回1,反之返回-1。 32. `REVERSE(str)`:返回`str`的反向字符串。 这些函数极大地丰富了MySQL对字符串的处理能力,使得...
// 判断str1和str2是否相等 str1 > str2; // 判断str1是否字典序大于str2 ``` 4. 字符串的连接 C语言中使用`strcat`和`strncat`函数进行字符串连接。它们需要确保目标数组足够大,以防止溢出。 ```c strcat(st1,...
在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别对于编写出正确、健壮的代码至关重要。 首先,`==`运算符用于基本类型(如int, char, boolean)的比较,...
// 比较 str1 和 str4(注意大小写) int result3 = strcmp(str1, str4); printf("strcmp(str1, str4): %d\n", result3); // 输出:一个大于 0 的值,因为 "Hello" 在字典序上大于 "hello"(由于大小写) // ...
当使用等号`=`来比较`NULL`值时,即便是两个`NULL`值,它们也不会被视为相等。这是因为`NULL`表示的是未知,而不是具体的一个值,所以`NULL = NULL`的比较结果是`UNKNOWN`,而非`TRUE`。这就是为什么在最初的例子中...
Eg2中,STRCMP函数比较'test'和'test1',由于不相等,STRCMP返回-1,所以IF返回'yes'。 3. **IFNULL(expr1,expr2)**:如果expr1为NULL,返回expr2的值。Eg1中,1不是NULL,所以返回1;Eg2中,NULL被替换为10。 4. ...
"=="和"equals()"是两种常用的字符串比较方法,但它们之间存在一定的区别和使用场景。这篇博客将深入探讨这两个方法的工作原理以及何时应该使用它们。 首先,"=="运算符在Java中主要用于比较基本类型变量的值,如...
* undefined和null的区别:undefined表示变量未定义,null表示变量为空。 5. JavaScript数组知识点:了解数组的方法和使用场景。 * map()方法:对数组中的每个元素执行函数。 * parseInt()函数:将字符串转换为...
这两种方式都可以用来比较字符串内容,但有细微差别。`str.equals("abc")`会先检查`str`是否为`null`,如果`str`为`null`,则会抛出`NullPointerException`。而`"abc".equals(str)`则不会抛出异常,因为`"abc"`是一...
根据提供的文件信息,本文将详细解释C语言中的四个字符串处理函数:`strcpy`, `strcmp`, `strlen`, 和 `strcat` 的功能与实现原理。这些函数在日常编程中极为常见,掌握它们对于深入理解C语言及其字符串操作至关重要...
17. **STRCMP(s1, s2)**:比较两个字符串s1和s2,如果相等返回0,s1大于s2返回1,s1小于s2返回-1。 18. **TRIM(str)**:去除字符串str首部和尾部的所有空格。 19. **UCASE(str) 或 UPPER(str)**:将字符串str中的...