= оператор в Java - PullRequest
       29

= оператор в Java

4 голосов
/ 24 февраля 2010

Может кто-нибудь объяснить мне, почему это можно сделать:

String s = "foo";

как это возможно без перегрузки оператора (в этом случае "=")

Я из C ++, поэтому это объясняет ...

Ответы [ 4 ]

11 голосов
/ 24 февраля 2010

В этом случае перегрузка отсутствует. Часть java, которая отличается от C ++, - это определение "" - компилятор java преобразует что-либо в "" в java.lang.string, и поэтому это простое назначение в вашем примере. В C ++ компилятор преобразует "" в char const * и поэтому должен иметь преобразование из char const * в std :: string.

1 голос
/ 24 февраля 2010

присваивает простой литерал типа String s

В Java Строки являются неизменяемыми, если вам нужно определить постоянное значение, вы должны использовать ключевое слово final.

0 голосов
/ 24 февраля 2010

API говорит: :

"Строки являются постоянными; их значения не могут быть изменены после их создания. Строковые буферы поддерживают изменяемые строки. Поскольку объекты String являются неизменяемыми, они могут использоваться совместно. Например:

     String str = "abc";

"эквивалентно:

     char data[] = {'a', 'b', 'c'};
     String str = new String(data);
0 голосов
/ 24 февраля 2010

Это оператор присваивания в Java, который используется для присваивания значения объявленному типу, где перегрузка оператора не требуется. Даже в с ++

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...