亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JDK 13 預覽功能:Textblock 對于 equals 和 == 返回 false。

JDK 13 預覽功能:Textblock 對于 equals 和 == 返回 false。

拉莫斯之舞 2023-09-06 15:39:55
equals并==返回false文本塊字符串,盡管它們在控制臺中打印相同的內容。public class Example {    public static void main(String[] args) {        String jsonLiteral = ""                + "{\n"                + "\tgreeting: \"Hello\",\n"                + "\taudience: \"World\",\n"                + "\tpunctuation: \"!\"\n"                + "}\n";        String jsonBlock = """                {                    greeting: "Hello",                    audience: "World",                    punctuation: "!"                }                """;        System.out.println(jsonLiteral.equals(jsonBlock)); //false        System.out.println(jsonBlock == jsonLiteral);    }}我缺少什么?
查看完整描述

1 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

讓我們把Strings 改短一些。


String jsonLiteral = ""

? ? ? ? + "{\n"

? ? ? ? + "\tgreeting: \"Hello\"\n"

? ? ? ? + "}\n";


String jsonBlock = """

? ? ? ? {

? ? ? ? ? ? greeting: "Hello"

? ? ? ? }

? ? ? ? """;

讓我們調試它們并打印它們的實際內容。


"{\n\tgreeting: \"Hello\"\n}\n"

"{\n? ? greeting: \"Hello\"\n}\n"

\tand "? ? "(四個 ASCII SP 字符,或四個空格)不相等,整個Strings 也不相等。您可能已經注意到,文本塊中的縮進是由空格形成的(而不是由水平制表符、換頁符或任何其他類似空白的字符)形成的。

以下是JEP 355 規范中的一些文本塊示例:

String season = """

? ? ? ? ? ? ? ? winter""";? ? // the six characters w i n t e r


String period = """

? ? ? ? ? ? ? ? winter

? ? ? ? ? ? ? ? """;? ? ? ? ? // the seven characters w i n t e r LF


String greeting =?

? ? """

? ? Hi, "Bob"

? ? """;? ? ? ? // the ten characters H i , SP " B o b " LF


String salutation =

? ? """

? ? Hi,

? ? ?"Bob"

? ? """;? ? ? ? // the eleven characters H i , LF SP " B o b " LF


String empty = """

? ? ? ? ? ? ? ?""";? ? ? // the empty string (zero length)


String quote = """

? ? ? ? ? ? ? ?"

? ? ? ? ? ? ? ?""";? ? ? // the two characters " LF


String backslash = """

? ? ? ? ? ? ? ? ? ?\\

? ? ? ? ? ? ? ? ? ?""";? // the two characters \ LF

就你而言,


String jsonBlock = """

? ? ? ? ? {

? ? ? ? ? ? ? greeting: "Hello"

? ? ? ? ? }

? ? ? ? ? """; // the 26 characters { LF SP SP SP SP g r e e t i n g : SP " H e l l o " LF } LF

要使它們相等,請替換"\t"為"? ? "。和equals都==應該返回true,盡管您不應該依賴后者。

查看完整回答
反對 回復 2023-09-06
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號