Быстрый вопрос. Есть ли эквивалент в применении к строкам в Java:
Например, я могу сделать @"c:\afolder\afile"
в C# и имеют его, игнорируют символы ESC при обработке вместо того, чтобы иметь необходимость сделать "c:\\afolder\\aFile"
. Существует ли эквивалентный Java?
хм: stackoverflow выходит на мне.. lol. Второй пример должен читать:
c: (двойная обратная косая черта) afolder (двойная обратная косая черта) aFile
№ . Ваш единственный выбор - экранирование / экстернализация строки.
Как сказали Кент и Джон, нет.
Я отвечаю только для того, чтобы указать, что даже если бы это было, для вашего конкретного случая, это было бы плохой идеей в общем случае, если бы предполагалось, что программа будет более чем разовой.
Java-программы работают не только на Windows, но и на других платформах, у которых другие разделители файлов. Таким образом, вместо того, чтобы иметь дело с экранированными обратными косыми чертами, правильный способ обработки вашего конкретного примера - получить свойство разделителя файлов:
String sep = System.getProperty("file.separator");
String filename = ROOTDIR + sep + "folder" + sep + "afile";
Где вы бы отдельно создали ROOTDIR на основе какой-либо политики - не только платформы, но и того, хотите ли вы "файл" должен относиться к фактическому корню файловой системы или к домашнему каталогу пользователя.
Но, безусловно, использование свойства разделителя файлов делает ваши программы более удобными. Это больше работы? да. Как говорит Ванда Сайкс: «Но оно того стоит».
Нет, в Java нет дословных строковых литералов.
Если вам нужен Java-подобный (и основанный на Java-VM) язык, который имеет, то вам стоит обратить внимание на Groovy, который имеет различные формы строковых литералов.