Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01KqJyCidz3ZgRyHABv2GVJh
40 lines
2.8 KiB
Plaintext
40 lines
2.8 KiB
Plaintext
$ java Upgrade (JDK 25)
|
|
java.version = 25.0.4.1
|
|
"hello" (literal) length=5 coder=0 byte[].length=5
|
|
"h\u00E9llo" (e-acute, Latin-1 supplement) length=5 coder=0 byte[].length=5
|
|
"h\u20ACllo" (euro sign) length=5 coder=1 byte[].length=10
|
|
"hello" + "\u20AC" (concat) length=6 coder=1 byte[].length=12
|
|
wide = "\u20ACabcdef" length=7 coder=1 byte[].length=14
|
|
wide.substring(1) (all Latin-1 again) length=6 coder=0 byte[].length=6
|
|
wide.replace('\u20AC', 'E') length=7 coder=0 byte[].length=7
|
|
wide.toLowerCase() length=7 coder=1 byte[].length=14
|
|
new String("caf\u00E9".getBytes(UTF_8), UTF_8) length=4 coder=0 byte[].length=4
|
|
new String(utf8 bytes of ASCII, UTF_8) length=5 coder=0 byte[].length=5
|
|
new String(char[] {'a','b'}) length=2 coder=0 byte[].length=2
|
|
new String(char[] {'a','\u4E2D'}) length=2 coder=1 byte[].length=4
|
|
"\uD83D\uDE00" (emoji, a surrogate pair) length=2 coder=1 byte[].length=4
|
|
StringBuilder("ascii only").toString() length=10 coder=0 byte[].length=10
|
|
... after append('\u20AC'), toString() length=11 coder=1 byte[].length=22
|
|
... after setLength(0) + ASCII, toString() length=13 coder=0 byte[].length=13
|
|
length() of the emoji: 2 (UTF-16 code units, not code points)
|
|
|
|
$ java -XX:-CompactStrings Upgrade (JDK 25)
|
|
java.version = 25.0.4.1
|
|
"hello" (literal) length=5 coder=1 byte[].length=10
|
|
"h\u00E9llo" (e-acute, Latin-1 supplement) length=5 coder=1 byte[].length=10
|
|
"h\u20ACllo" (euro sign) length=5 coder=1 byte[].length=10
|
|
"hello" + "\u20AC" (concat) length=6 coder=1 byte[].length=12
|
|
wide = "\u20ACabcdef" length=7 coder=1 byte[].length=14
|
|
wide.substring(1) (all Latin-1 again) length=6 coder=1 byte[].length=12
|
|
wide.replace('\u20AC', 'E') length=7 coder=1 byte[].length=14
|
|
wide.toLowerCase() length=7 coder=1 byte[].length=14
|
|
new String("caf\u00E9".getBytes(UTF_8), UTF_8) length=4 coder=1 byte[].length=8
|
|
new String(utf8 bytes of ASCII, UTF_8) length=5 coder=1 byte[].length=10
|
|
new String(char[] {'a','b'}) length=2 coder=1 byte[].length=4
|
|
new String(char[] {'a','\u4E2D'}) length=2 coder=1 byte[].length=4
|
|
"\uD83D\uDE00" (emoji, a surrogate pair) length=2 coder=1 byte[].length=4
|
|
StringBuilder("ascii only").toString() length=10 coder=1 byte[].length=20
|
|
... after append('\u20AC'), toString() length=11 coder=1 byte[].length=22
|
|
... after setLength(0) + ASCII, toString() length=13 coder=1 byte[].length=26
|
|
length() of the emoji: 2 (UTF-16 code units, not code points)
|