2015-10-05 2 views
-3

Почему я не могу это сделать? Я понимаю, что объединение int и строки или с булевым (true или false) возможно, но не добавление логического с int.Конкатенация булева и int

Что именно происходит, когда вы добавляете int с булевым? Почему это ошибка?

System.out.println(a.length() + a.startsWith("a")); 

я также понимаю, что работа вокруг этого кода

System.out.println(""+a.length() + a.startsWith("a")); 

который использует конкатенацию.

+0

Это не обходной путь. Это правильный способ сделать то, что вы хотите сделать. – zubergu

+0

Нет стандартного определения того, что должны делать 'boolean' или' Boolean' и 'int'. Для String это обычный метод. –

+0

@zubergu, используя '(" "+ a.lenght())' это не только неправильный способ сделать это, но и очень уродливое обходное решение. –

ответ

2

Поскольку операция + имеет различные функции.

В первом примере вы попробуете Number + Boolean. И это не имеет смысла, поэтому компилятор дает ошибку.

Во втором примере вы попробуйте String + Number (который разрешен как String - концентрация и возвращает строку). После этого вы пытаетесь использовать String + boolean (что также допускается)

+0

Да. Java знает, что вы выполняете арифметическую операцию, когда выполняете операцию + на двух числах (целые числа, удваивает и т. Д.). Java также знает, что вы выполняете конкатенацию, когда у вас есть две строки против операции +. Как сказал Денис, Number + Boolean не сразу становится очевидным, и поэтому Java выдает ошибку, указывающую, что вам нужно быть более явным. – shrmn

1

Что именно происходит, когда вы добавляете int с булевым? Почему это ошибка?

Поскольку оператор + не определен для этих операндов.

0

Используйте Boolean.toString() статический метод, чтобы получить строковое представление логического значения:

Boolean.toString(a.startsWith("a")); 
Смежные вопросы