`

String..

阅读更多

今天关于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.H

    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仿真和代码)305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)...

    String.xml Excel 相互转换工具

    `String.xml`文件是Android系统用来存储应用中所有文本资源的主要方式,它使得开发者能够方便地管理和国际化应用的文本内容。本工具就是专为处理`String.xml`与Excel表格之间的相互转换而设计的,方便开发者进行批量...

    基于Keil实现字符串函数string.h的简单应用

    基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用...

    Excel和String.xml 互相转换工具

    在IT行业中,尤其是在Android或者iOS应用开发中,`String.xml` 文件是用于管理应用程序中所有字符串资源的关键文件。它允许开发者集中地定义、管理和翻译应用中的文本,提高代码的可维护性和可扩展性。本工具则专注...

    android String.xml Excel 相互转换工具

    为了方便管理这些多语言资源,Android使用`String.xml`文件来存储应用中的文本字符串。然而,手动编辑这些XML文件既耗时又容易出错,尤其是在处理大量文本时。这时,就需要借助一些工具进行`String.xml`与Excel之间...

    最新单片机仿真 字符串函数string.h应用举例

    最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h...

    String.h函数详解

    String.h函数详解 1、strcpy  函数名: stpcpy  功 能: 拷贝一个字符串到另一个  用 法: char *stpcpy(char *destin, char *source);  程序例:  #include &lt;stdio.h&gt;  #include &lt;string.h&gt;  int main...

    string.Format 的用法

    ### string.Format 的用法详解 在.NET框架中,`string.Format`是一个非常强大的字符串格式化方法,它允许我们按照特定的格式输出字符串。这在处理数据展示、日志记录等场景时极为有用。本文将详细介绍`string....

    c# string.Format 的用法

    使用c#的string.format 的一些常用的参数

    String.XML转Excel的工具应用

    `string.xml`文件是存储应用程序中所有本地化字符串的地方,便于维护和更新。然而,随着应用的复杂度增加,`string.xml`文件可能会变得非常庞大,管理起来相当不便。这时,"String.XML转Excel的工具"就显得尤为实用...

    js写的string.format函数

    js 写的string format函数,功能模仿C#中的string.Format方法,已实现(整数 :D、小数:F、货币数字:C、科学计数:E 等4种)数字格式化。参数可以传递数组,也可以传多个参数。

    JAVA String.format方法使用介绍

    在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一...

    string.format实例

    在Java编程语言中,`String.format()`方法是一个非常实用的工具,它允许程序员按照特定的格式来构造字符串。这个方法提供了强大的灵活性,可以方便地控制字符串中的数字、日期、时间等元素的显示方式。在本实例中,...

    string.h库文件

    *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文件

    标准库 - &lt;string.h&gt; 简介 string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。

    String.prototype.padStart:String.prototype.padStart的符合ES规范的填充程序

    String.prototype.padStart 符合ES2017规范的String.prototype.padStart填充程序。 如果不可用,请调用其“ shim”方法对String.prototype.padStart进行填充。 该软件包实现了接口。 它可以在ES3支持的环境中工作...

    js中的string.format函数代码.docx

    JS 中的 string.format 函数代码详解 JS 中的 string.format 函数代码是 JavaScript 中的一种格式化字符串的方法,该方法可以将变量的值插入到字符串中,从而生成一个完整的字符串。下面将详细介绍 JS 中的 string....

    单片机C语言实例38:字符串函数string.h应用举例.txt

    单片机C语言实例38:字符串函数string.h应用举例.txt

    .NET 3.5 String.cs 源代码

    .NET 3.5 String.cs 源代码

Global site tag (gtag.js) - Google Analytics