Files
javademos/compact-strings/output/20-upgrade.txt
T

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)