Разыменование целочисленного значения цикла for в Java - PullRequest
5 голосов
/ 22 августа 2011

Я только что понял, что когда я делаю это на Java:

for(int x = 0; x < 3; x++)
{
    String bla = "bla";
    bla += x.toString();
}

Он (в данном случае Netbeans) скажет мне, что я не могу разыменовать свое целое число x таким образом (как я бы в C #).

Почему это?

Ответы [ 6 ]

8 голосов
/ 22 августа 2011

Примитивные типы не являются объектами в Java, поэтому для этого вам нужно использовать другие методы, в данном случае:

Integer.toString(x);
7 голосов
/ 22 августа 2011

int является примитивом, а не объектом, и, следовательно, не имеет метода toString ().

Но вы можете сделать это:

String bla = "bla" + x;
5 голосов
/ 22 августа 2011

int не объект, а примитивный тип. Таким образом, вы не можете вызывать методы из int. Если вы определили его как Integer, сообщение об ошибке исчезнет. Тем не менее, вы действительно можете просто избавиться от toString, потому что x будет автоматически приведен к String.

4 голосов
/ 22 августа 2011

Вы объявили x типа int, который является примитивным значением, а не объектом.Примитивы не могут иметь методы (например, toString()), вызываемые на них.Вы можете использовать примитивную оболочку Integer, если хотите вызвать toString(), или вы можете просто удалить вызов toString(), и специальная обработка Java строк и примитивов сама по себе позаботится.

4 голосов
/ 22 августа 2011

x не является Integer, это int, а int является примитивным типом, поэтому у него нет toString.

3 голосов
/ 22 августа 2011

В java примитивные типы (boolean int, short, char, long, float, double) НЕ являются объектами.

Однако они имеют тип оболочки (Integer, Character, ...), который имеет 1) статические функции и 2) их экземпляры могут переносить примитивные значения.

...