Синтаксическое значение ввода строк в скобках - PullRequest
2 голосов
/ 08 февраля 2011

Мне нравится путать себя с синтаксическими вещами, а не концентрироваться на реальных делах.:)

Я знаю, что я могу сделать с этой вещью, но я все еще хочу знать, что на самом деле происходит под капотом.

Итак ... Мне просто интересно, каковы причины и ситуациигде вставка строк в скобках имеет смысл.Я видел метод, который возвращает что-то вроде

return (string1 + " " + string2);

Ответы [ 5 ]

5 голосов
/ 08 февраля 2011

Скобки не влияют в этом примере. Код, который вы разместили, эквивалентен этому:

return string1 + " " + string2;

Вообще говоря, между скобками и String s или строковыми литералами нет особого взаимодействия. Круглые скобки имеют ту же семантику, что и в «нормальных» выражениях: для группировки операций.

В некоторых случаях в скобках может потребоваться указать правильную интерпретацию:

System.out.println("foo: " + 1 + 1);   // will print "foo: 11"
System.out.println("foo: " + (1 + 1)); // will print "foo: 2"
2 голосов
/ 08 февраля 2011

Это легальная конструкция, и она имеет ту же цель, что и скобки в алгебре, чтобы гарантировать, что операция будет выполнена до возврата.На самом деле в этом случае это не нужно, и если бы вы сделали

return string1 + " " + string2;  

Результат был бы таким же.Может быть, автор кода подумал, что он может быть более читабельным?

1 голос
/ 08 февраля 2011

Просто читабельность.Если вы хотите подчеркнуть возвращаемый объект, поставьте круглые скобки.Но они не нужны.

0 голосов
/ 08 февраля 2011

Мне просто интересно, каковы причины и ситуации, когда смысл заключать строки в скобки имеет смысл.

Вот еще один пример:

string1 + " " + string2.substring(a,b)

и:

(string1 + " " + string2).substring(a,b)

- два совершенно разных зверя.

0 голосов
/ 08 февраля 2011

Это делает return похожим на вызов функции, а на самом деле это не так.Итак, это пример, где вы не должны использовать скобки.

...