2013-08-13 3 views
0

Итак, я хотел добавить символ в строку и в некоторых случаях хотел удвоить эти символы, а затем добавить его в строку (то есть сначала добавить к ней). Я попробовал это, как показано ниже.Почему я могу добавлять символы в строки, но не символы в символы?

char s = 'X'; 
String string = s + s; 

Это вырвало ошибку, но я уже добавил один символ в строку, так что я пробовал:

String string = "" + s + s; 

который работал. Почему включение строки в суммирование заставляет ее работать? Является ли добавление свойства строки, которое может использоваться только символами, когда они преобразуются в строки из-за наличия строки?

+1

возможно дубликат [Как конкатенации символов в Java?] (HTTP://stackoverflow.com/questions/328249/how-to-concatenate-characters-in-java) –

+0

Ошибка, которую она забросила, вероятно, ответ на ваш вопрос;) – bengoesboom

+0

Персонаж может быть только длиной 1. Java doesn ' t "know" вы собираетесь присвоить это выражение String. –

ответ

6

Это потому, что String + Char = String, подобно тому, как int + double = double.

Char + Char включен, несмотря на то, что вам говорят другие ответы.

String s = 1; // ошибка компиляции из-за несоответствующих типов.

Ваш рабочий код (String + Char) + Char. Если вы это сделали: String + (Char + Char), вы получите номер в своей строке. Пример:

System.out.println("" + ('x' + 'x')); // prints 240 
System.out.println(("" + 'x') + 'x'); // prints xx - this is the same as leaving out the (). 
+1

Ну, вы имели в виду 'char', а не' Char', но хорошая строка о ints независимо :) – keyser

+0

Я на самом деле написал char/Character изначально, но тогда я не хотел его поддерживать, поэтому я удалился и пошел на компромисс. :) Вы правы, хотя. На Java нет ничего. – Xabster

0

Когда вы char s = 'X'; String string = X + X;

Почему бы не сделать это вместо этого? char s = 'X'; String string = s + s;

+2

Я думаю, что OP был просто неаккуратным во время публикации: p – keyser

+0

Я не профессионал в java - так что я думал, что его решение могло быть таким простым: p – kelorek

4

char + char возвращает int поэтому компилятор жалуется, что String string = (int), что на самом деле не так.

Для конкатенации символов, вы можете использовать пустую строку ("") в начале, так что оператор + будет для String конкатенации или Использовать StringBuilder что можно добавить запись символов, а также.

char s = 'X'; 
String string = new StringBuilder().append(s).append(s).toString(); 

Примечание: переменная char является s, не X.

+1

@Pshemo 'char' +' char' = 'int'. Попробуйте это: 'char a = 'a', b = 'b', c; c = a + b; ' –

+0

О, вы правы. Исправьте мой комментарий – Pshemo

+0

+1 и добавьте некоторую информацию: результат 'char1' +' char2' - это 'int', который является суммой позиций' char1' и 'char2' в [UnicodeTable] (http: // unicode- table.com/en/). Таким образом, для результата ''X' + 'X'' будет' 88 + 88' = '176', который, если OP хотел бы передать на char, будет' ''. – Pshemo

0

Добавление в "" изменяет тип возвращаемого значения на строку. Оставляя это, означает, что тип возврата - это символ, который не соответствует.

0

Строка string = "" + X + X;

- пример конкатенации. Предварительно ожидая пустую строку, вы указываете, что результат должен быть строкой. Первая строка кода сообщает компилятору, что вы добавляете 2 символа (или int), которые должны приводить к int, а не к строке.

1

В Java char является примитивным целочисленным числовым типом. Таким образом, оператор + определяется как дополнение двух символов, с результатом int. Оператор означает конкатенацию только по строкам. Так один из способов сделать это

"" + char1 + char2 

Это принуждать правый операнд в строку, которая является то, что вы хотите достичь.

Боковой пункт: char - единственный неподписанный примитивный числовой тип на Java, и в одном из моих проектов я специально использую его как таковой.

0
String string = X + X; 

Здесь X I'ts threated как переменная

Вы должны использовать что-то как

String string ="x x"; 

Или

String x = "something"; 
String y = "else"; 

затем String string= x+y; должен работать просто прекрасно, это потому, что вы concatening со знаком "+", можно также использовать

string = string.concat(x+y); 

или

string = string.concat("something"+"else"); 
Смежные вопросы