我已将String定义为
String s = "\\";
int length = s.length(); // returns 1
System.out.println(s); // prints only one "\"
如何使它的大小等于2
?
更新:问题不在于获取大小为2的字符串。我需要获取我定义字符串的源字符计数。
String s = "\\";
包含的只是反斜杠字符 \
,由于它是一个特殊字符,所以需要用反斜杠字符进行转义。
为了获得一个长度为2的字符串,你可以使用两个反斜杠进行转义,如下所示:
String s = "\\\\";
这个没有大小为4
,而是2
,因为有一些字符(比如反斜杠)在编辑器中并不是由单个可视元素表示的。
还有一些字符在打印时可能完全看不见(例如蒙古语元音分隔符),但在源代码中以不同的方式表示(使用它们的Unicode码)。例如,可以将蒙古语元音分隔符表示为:
String mongolianVowelSeparator = "\u180"; <-- one character only, invisible when printed
所以我们只有一个字符(Unicode字符U+180E
),但是我们使用了五个编辑字符来表示它。
4
作为答案。 - SeniorJD\\
在Java中具有特殊含义。它被视为 转义字符 。 - TheLostMind字符字符和字符串转义序列允许表示一些非图形字符,以及在字符字面量(§3.10.4)和字符串字面量(§3.10.5)中表示单引号、双引号和反斜杠字符。
...
\ \ /* \u005c: 反斜杠 \ */
\
在Unicode 转义中使用:\
,输入处理必须考虑到有多少其他的\
字符连续地在它之前,将其与非\
字符或输入流的开头分隔开。如果这个数字是偶数,则\
符号可以用于开始一个Unicode转义;如果这个数字是奇数,则\
符号不能用于开始一个Unicode转义。
值得一提的是,你的字符串可以写成:
\u005c
005c
是\
的Unicode值。String s = "\\";
int length = s.length();
for(int i = 0; i < s.length; i++)
if(s.charAt(i) == '\')
length++;
"123\123"
,会怎么样? - SeniorJD
"\\"
和定义为"\u005c"
的字符串字面量,因为它们都表示相同的字符串;但是,在源代码中它们的长度不同。 - Andy Turner