Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Что случилось ??? / 10 сообщений из 10, страница 1 из 1
25.09.2007, 11:37:42
    #34823702
iv_va
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
есть класс
****************************************************************************
public class Student {
private Long id;
private String name;

public Student() {
super();
}

public Student(Long id, String name) {
super();
this.id = id;
this.name = name;
}

public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return "id : "+id+" name : "+name;
}

}
********************************************************************************
public class Core {

public static void change(Integer count) {
count = new Integer(10);
System.out.println("inner change : "+count);
}
public static void change(Student student) {
student.setId(new Long(158));
}

public static void main(String[] args) {
Core core = new Core();
Integer iCount = new Integer("2");
change(iCount);
System.out.println("Obj Integer : "+iCount);

Student student = new Student(new Long(11),"Iv_va");
System.out.println("before change : "+student);
change(student);

System.out.println("after chanche Student : "+student);
}
*******************************************************************************

Что произойдет и почему ???? объясните почему ?? Огромное спасибо :))
...
Рейтинг: 0 / 0
25.09.2007, 11:40:50
    #34823714
jusio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
Думаю "неуд" будет=)
...
Рейтинг: 0 / 0
25.09.2007, 11:46:29
    #34823736
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
jusioДумаю "неуд" будет=) +1 Двойку в дневник и оставить на второй год.
...
Рейтинг: 0 / 0
25.09.2007, 12:10:06
    #34823844
iv_va
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
vas0 jusioДумаю "неуд" будет=) +1 Двойку в дневник и оставить на второй год.

А если подумать головой ?
...
Рейтинг: 0 / 0
25.09.2007, 12:18:10
    #34823892
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
iv_vaА если подумать головой ? ну если подумать головой, то так в java параметры передаються по значению, то такой метод как
Код: plaintext
1.
2.
3.
 public   static   void  change(Integer count) {
    count =  new  Integer( 10 );
    System.out.println("inner change : "+count);
}
выведет тебе новое значение, но не изменит ту ссылку котороя была передана как параметр (так как сдесь меняется уже копия этой ссылки).
Код: plaintext
1.
2.
 public   static   void  change(Student student) {
student.setId( new   Long ( 158 ));
}
а здесь меняется не ссылка, а состояние объекта. У тебя две ссылки указывают на один и тот же объект и если ты его состояние меняешь, то это будет видно через любую из ссылок.
...
Рейтинг: 0 / 0
25.09.2007, 12:18:29
    #34823894
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
iv_va vas0 jusioДумаю "неуд" будет=) +1 Двойку в дневник и оставить на второй год.

А если подумать головой ?
Если подумать - то лучше сразу выгнать
...
Рейтинг: 0 / 0
25.09.2007, 12:19:21
    #34823900
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
iv_va
Что произойдет и почему ???? объясните почему ?? Огромное спасибо :))
Потому что.
...
Рейтинг: 0 / 0
25.09.2007, 13:06:53
    #34824174
iv_va
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
vas0 iv_vaА если подумать головой ? ну если подумать головой, то так в java параметры передаються по значению, то такой метод как
Код: plaintext
1.
2.
3.
 public   static   void  change(Integer count) {
    count =  new  Integer( 10 );
    System.out.println("inner change : "+count);
}
выведет тебе новое значение, но не изменит ту ссылку котороя была передана как параметр (так как сдесь меняется уже копия этой ссылки).
Код: plaintext
1.
2.
 public   static   void  change(Student student) {
student.setId( new   Long ( 158 ));
}
а здесь меняется не ссылка, а состояние объекта. У тебя две ссылки указывают на один и тот же объект и если ты его состояние меняешь, то это будет видно через любую из ссылок.

Спасибо за ответ, я так и думал но никак не могу понять зачем было создавать Integer-объект
и int- примитив ???? и в книгах (если не ошибаюсь Философия Java Брюс Екель) описываеться объекты передаються по ссылке а примитивы по значению.

Всеровно огромное спасибо за ответ
...
Рейтинг: 0 / 0
25.09.2007, 13:11:59
    #34824204
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
автори в книгах (если не ошибаюсь Философия Java Брюс Екель) описываеться объекты передаються по ссылке а примитивы по значению. Быть такого не может (Эккель не может так заложать) :) В любой нормальной книжке по java написано, параметры pass by-value, pass by reference в java нет. Передаються всегда копии, для примитивов копии значения, для ссылок копии ссылок.
...
Рейтинг: 0 / 0
25.09.2007, 13:26:15
    #34824277
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что случилось ???
iv_vaСпасибо за ответ, я так и думал но никак не могу понять зачем было создавать Integer-объект и int- примитив???? и в книгах (если не ошибаюсь Философия Java Брюс Екель) описываеться объекты передаються по ссылке а примитивы по значению. Всеровно огромное спасибо за ответ
Насчет того как что передается здесь уже обсуждалось. Ищите на форуме. На мой взгляд, ваше утверждение не верно. Но если тут сейчас начать обсуждать - будет повторение.
Насчет int и Integer. Код не смотрел, т.к. он не отформатирован. Поэтому - если вопрос непосредственно о приведенном коде - то чтобы запутать, скорее всего. Если вопрос по языку, то
а). Примитивные типы работают гораздо быстрее классов-оберток;
б). Примитивные типы нельзя добавить в коллекции.
Для удобства в 5 версию языка было добавлено средство автоупаковки/распоковки объектов (autoboxing), с помощью которого преобразование int/Integer осуществляется автоматически в нужных местах. Но делать это нужно аккуратно и осторожно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Что случилось ??? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]