Как уже отмечали другие '~'
- это символ ASCII / код Unicode, который больше всех букв ASCII; т. е. верхний и нижний регистр от «A» до «Z».
Следовательно, согласно спецификации 1 класса String
, "~"
следует после любого слова Engli sh.
Однако кодовая точка '~'
НЕ меньше, чем буквы с ударением и буквы в нелатинских алфавитах. Так что трюк "~"
не будет работать с кириллицей c или хинди. И если вы можете подумать о французском / немецком / португальском / et c слове с акцентированной первой буквой, оно не будет работать и на этих языках.
И с Emojis это тоже не сработает.
Короче говоря, этот код, использующий "~"
, как в вашем примере, не будет работать в интернационализированном контексте.
Вы можете использовать null
согласно ответу @ Dolda2000, или вы можете использовать "\u10ffff"
.
(\u10ffff
- максимально возможная кодовая точка Unicode. Однако этот подход также не является абсолютно надежным. Существуют допустимые строки Java, которые больше, чем "\ u10ffff"; например, "\ u10ffffZZZZ ". К сожалению, максимально возможное строковое значение не может быть записано как строковый литерал, и его представление смехотворно велико - примерно 2 ^ 31 байт!)
1 - порядок строк основан на упорядочении кодовых единиц UTF-16, а не на кодовых точках Unicode. Но для правильно сформированных струн нет разницы в двух способах мышления об этом.