Пізня відповідь, але я думаю, що це додає щось нове до цієї теми.
Жодна з попередніх відповідей не відповіла на початкове запитання. Деякі намагалися виправдати відсутність постійної, а інші показали способи, як ми можемо боротися з відсутністю постійної. Але ніхто не надав переконливого обґрунтування на користь постійної, тому її відсутність досі належним чином не пояснюється.
Константа була б корисною, оскільки вона не дозволить певним помилкам коду залишитися непоміченими.
Скажіть, що у вас є велика база коду із сотнями посилань на "". Хтось модифікує один із них, прокручуючи код і змінює його на "". Така зміна матиме високий шанс непомітно перейти у виробництво, і тоді це може спричинити певну проблему, джерело якої буде складно виявити.
OTOH, константа бібліотеки під назвою EMPTY, якщо вона зазнає тієї ж помилки, створила б помилку компілятора для чогось типу EM PTY.
Визначити власну константу все-таки краще. Хтось все-таки міг змінити його ініціалізацію помилково, але через широке використання вплив такої помилки буде набагато важче залишитися непоміченим, ніж помилка в одному випадку використання.
Це одна з загальних переваг, яку ви отримуєте від використання констант замість буквальних значень. Зазвичай люди визнають, що використання константи для значення, яке використовується в десятках місць, дозволяє легко оновити це значення лише в одному місці. Що рідше визнається, що це також запобігає випадковому зміненню цього значення, оскільки така зміна відображатиметься всюди. Так, так, "" коротше, ніж EMPTY, але EMPTY безпечніше використовувати, ніж "".
Отже, повертаючись до початкового питання, ми можемо лише припускати, що дизайнери мови, мабуть, не знали про цю перевагу надання констант для буквальних значень, які часто використовуються. Сподіваємось, одного дня ми побачимо додавання рядкових констант на Java.
outputBlah = ""
і він , ймовірно , вважає за кращеsomething == String.Empty
більше ,something.Length > 0
а також (пропустити перевірку нульовий.)