原文地址: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 个人认为,这个数量级的差距,我个人就不考虑了。呵呵呵!
分享到:
相关推荐
本篇文章将深入剖析“==”运算符和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中的...