今天关于String看到一个测试:
String a = "abc";
String b = "abc";
String ab = "ab";
String c = ab+"c";
String d = "ab"+"c";
System.out.println(a == b);
System.out.println(a == c);
System.out.println(a == d);
结果当然是true,false,true;
用javap反编译来解释一下:
Code:
0: ldc #2; //String abc
2: astore_1
3: ldc #2; //String abc
5: astore_2
6: ldc #3; //String ab
8: astore_3
9: new #4; //class java/lang/StringBuilder
12: dup
13: invokespecial #5; //Method java/lang/StringBuilder."<init>":()V
16: aload_3
17: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
20: ldc #7; //String c
22: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
25: invokevirtual #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
28: astore 4
30: ldc #2; //String abc
32: astore 5
34: getstatic #9; //Field java/lang/System.out:Ljava/io/PrintStream;
37: aload_1
38: aload_2
39: if_acmpne 46
42: iconst_1
43: goto 47
46: iconst_0
47: invokevirtual #10; //Method java/io/PrintStream.println:(Z)V
50: getstatic #9; //Field java/lang/System.out:Ljava/io/PrintStream;
53: aload_1
54: aload 4
56: if_acmpne 63
59: iconst_1
60: goto 64
63: iconst_0
64: invokevirtual #10; //Method java/io/PrintStream.println:(Z)V
67: getstatic #9; //Field java/lang/System.out:Ljava/io/PrintStream;
70: aload_1
71: aload 5
73: if_acmpne 80
76: iconst_1
77: goto 81
80: iconst_0
81: invokevirtual #10; //Method java/io/PrintStream.println:(Z)V
84: return
第一个println是比较astore_1和astore_2,而它们指向的常量池中#2号字符串常量“abc”,所以,a==b;
第二个println是比较astore_1和astore 4,分别指向#2和#7,所以a!=c;
第三个println是比较astore_1和astore 5,都是#2,结果就很明显了;
分享到:
相关推荐
C语言头文件 STRING.HC语言头文件 STRING.HC语言头文件 STRING.HC语言头文件 STRING.HC语言头文件 STRING.HC语言头文件 STRING.HC语言头文件 STRING.HC语言头文件 STRING.HC语言头文件 STRING.HC语言头文件 STRING....
305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)...
`String.xml`文件是Android系统用来存储应用中所有文本资源的主要方式,它使得开发者能够方便地管理和国际化应用的文本内容。本工具就是专为处理`String.xml`与Excel表格之间的相互转换而设计的,方便开发者进行批量...
基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用...
在IT行业中,尤其是在Android或者iOS应用开发中,`String.xml` 文件是用于管理应用程序中所有字符串资源的关键文件。它允许开发者集中地定义、管理和翻译应用中的文本,提高代码的可维护性和可扩展性。本工具则专注...
为了方便管理这些多语言资源,Android使用`String.xml`文件来存储应用中的文本字符串。然而,手动编辑这些XML文件既耗时又容易出错,尤其是在处理大量文本时。这时,就需要借助一些工具进行`String.xml`与Excel之间...
最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h...
String.h函数详解 1、strcpy 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main...
### string.Format 的用法详解 在.NET框架中,`string.Format`是一个非常强大的字符串格式化方法,它允许我们按照特定的格式输出字符串。这在处理数据展示、日志记录等场景时极为有用。本文将详细介绍`string....
使用c#的string.format 的一些常用的参数
`string.xml`文件是存储应用程序中所有本地化字符串的地方,便于维护和更新。然而,随着应用的复杂度增加,`string.xml`文件可能会变得非常庞大,管理起来相当不便。这时,"String.XML转Excel的工具"就显得尤为实用...
js 写的string format函数,功能模仿C#中的string.Format方法,已实现(整数 :D、小数:F、货币数字:C、科学计数:E 等4种)数字格式化。参数可以传递数组,也可以传多个参数。
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一...
在Java编程语言中,`String.format()`方法是一个非常实用的工具,它允许程序员按照特定的格式来构造字符串。这个方法提供了强大的灵活性,可以方便地控制字符串中的数字、日期、时间等元素的显示方式。在本实例中,...
*string.h - declarations for string manipulation functions * * Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: * This file contains the function declarations for the string * ...
标准库 - <string.h> 简介 string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。
String.prototype.padStart 符合ES2017规范的String.prototype.padStart填充程序。 如果不可用,请调用其“ shim”方法对String.prototype.padStart进行填充。 该软件包实现了接口。 它可以在ES3支持的环境中工作...
JS 中的 string.format 函数代码详解 JS 中的 string.format 函数代码是 JavaScript 中的一种格式化字符串的方法,该方法可以将变量的值插入到字符串中,从而生成一个完整的字符串。下面将详细介绍 JS 中的 string....
单片机C语言实例38:字符串函数string.h应用举例.txt
.NET 3.5 String.cs 源代码