|
|
|
Supreme Being
      
участник
Last Login: 01.10.2007 19:44
Сообщ.: 477,
Visits: 4 198
|
|
Все собираюсь спросить:
Если я в Си инициализирую строку, а потом захочу ее изменить в сторону увеличения, то должен использовать функцию strcat для этого, т.к. физически под нее отведено определенное место в памяти и не дай бог выйти за его пределы.
Если я делаю в Ява:
String str="12345";
и потом
str="1234567890";
компилятор ошибки не дает, но корректно ли это и зачем метод concat у типа String ?
И заодно второе - чем все-таки правильно пользоваться для сравнения строк - equals или compareTo ?
------------------------------
Мое почтение к уважаемому собранию!
|
|
|
|
|
Forum Member
      
участник
Last Login: 12.12.2006 17:30
Сообщ.: 45,
Visits: 83
|
|
| модифицировать строки java нельзя. если нужна модифицируемая строка используй класс StringBuffer. 1. String str = "123"; 2. str = "123456" str это указатель на объект, в первом случае он указывает на "123", во втором на "123456", почему здесь должна быть ошибка, вторым оператором ты меняешь значение указателя, а не содержимое строки функция concat создаст новую строку и вернет ее, она не модифициует текущую.. 2. имхо equals
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 10.11.2008 0:08
Сообщ.: 1 298,
Visits: 12 501
|
|
|
|
|
|
Supreme Being
      
участник
Last Login: 01.10.2007 19:44
Сообщ.: 477,
Visits: 4 198
|
|
Сэнкс
и еще
String str="12345';
String str=new String("12345");
есть ли разница и чем пользоваться в случае конкретно со строками?
str=str+"12345" - тоже новая строка будет?
------------------------------
Мое почтение к уважаемому собранию!
|
|
|
|
|
Forum Member
      
участник
Last Login: 12.12.2006 17:30
Сообщ.: 45,
Visits: 83
|
|
| String str = "123"; - объект создается на стадии компиляции String str = new String("123"); - объект создается во время выполнения кода str = str + "123" - это тоже новый объект
|
|
|
|
|
Forum Member
      
участник
Last Login: 12.12.2006 17:30
Сообщ.: 45,
Visits: 83
|
|
| Выражусь покорректнее String str = "123", str2="123", str3="123"; - оптимизируется на стадии компиляции, и в итоге str, str2, str3 указывают на один и тот же объект; String str=new String("123"), str2 = new String("123") .. - здесь же str и str2 указывают на разные объекты решай сам важное ли это различие..
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.05.2007 20:20
Сообщ.: 662,
Visits: 5 795
|
|
| danii, чувак, экзамен что ли сдал? Зачтено по всем пунктам =)) Давай зачетку.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 02.02.2008 19:48
Сообщ.: 480,
Visits: 5 178
|
|
И заодно второе - чем все-таки правильно пользоваться для сравнения строк - equals или compareTo ? equals вроде начинает с того, что убеждается что совпадает класс, а потом сверяет посимвольно. А compare вроде сразу посимвольно и показывает, в какую сторону отличие (>, = или <), что может быть полезно. Где-то видел изнурительную дисскуссию на тему, что быстрее. В зависимости от ситуации.
|
|
|
|
| | |