С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/47: Рейтинг темы: голосов - 47, средняя оценка - 4.55
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229

Для чего нужен This?

26.03.2013, 23:43. Показов 9472. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объясните пожалуйста на примере, для чего конкретно нужен идентификатор This?
В доках почитал его назначение, смутно понял,.. Но реально, что бы куда то его по существу, с пользой использовать, ну не вижу толку с него и все.

Как я понял, идент. This используется для указания использования конкретной переменной, именно/только в методе.

к примеру:
- у нас есть глобальные переменные в главном классе,
-и переменные с таким же названием в методе,
-если нам нужно в главный класс передать и присвоить значение к глобальной переменной через метод , то мы используем Зис для конкретизации переменной - в какую получаем значение и какой передаем , так???
но смысл??? объясните!!!!!

почему не обозвать их просто разными именами или что то типа того????
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2013, 23:43
Ответы с готовыми решениями:

Для чего нужен FileWriter?
Можете пожалуйста объяснить зачем нужен FileWriter, и что именно он делает ? На примере желательно. Спасибо.

Для чего нужен пустой вывод?
public class Matrix { public static void main(String args) { for (int w = 1; w < 10; w++) { for (int q =...

Для чего нужен этот код?
Добрый день форумчане, решал задачки по Абстракции, все понял, кроме одного кода, не могли бы вы мне объяснить, что он означает? ...

28
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
27.03.2013, 00:24
this - это ссылка на объект в котором он употребляется, т.е. на самого себя

банальнейшее применение в конструкторе:

Java
1
2
3
4
5
6
7
8
class Clazz {
 
   private Object property;
 
   public Clazz (Object property) {
      this.property = property;
   }
}
т.е. вот так у вас поле будет нулом:

Java
1
2
3
4
5
6
7
8
class Clazz {
 
   private Object property;
 
   public Clazz (Object property) {
      property = property;
   }
}
зачем? это удобно. на сколько это удобно начинаешь понимать только когда на замену переменным типа i, j, jaja1, moja666, medalyaja, trololosha, yatvoikodtrubashatal100500 приходят осмысленные названия

это сначала. потом приходит осознание, что это жизненно необходимо. например, нужно будет забадяжить логику по паттерну который юзается в том же StringBuilder (название паттерна я, естественно, не помню). там при вызове append(...) класс возвращает инстанс самого себя и потому можно строить конструкции типа:
Java
1
2
3
4
StringBuilder sb = new StringBuilder();
sp.append("мама мыла раму").append("\n")
   .append("смерть неизбежна").append("\n")
   .append("бога нет");
или например у вас есть две свинговые формочки. из одной нужно открыть другую. при этом когда открывается вторая нужно заблокировать первую, когда вторая закрывается - первую нужно снова разблокировать. эта задача невозможна без передачи первой формой себя самой второй (варианты есть конечно, но в сути все сводится к озвученному), дабы та при закрытии вызывала метод сетЭнейбэлд

короче велком ту ооп ворлд
3
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
27.03.2013, 00:46  [ТС]
Спасибо.
Понял что мало чего понял, но понял)

Я просто не совсем давно начал изучать жабу и порою очень зацикливаюсь на всех незнакомых и непонятных словечках, пока не пойму всей их прелести... Вот думаю правильно ли это? или же проходить все быстро, поверхностно и потом при нужде конкретного "чего-то" искать уже более подробную инфу и разбираться, как говорят, на месте..?
словом - весело.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.03.2013, 00:47
Цитата Сообщение от AckiyBolt Посмотреть сообщение
том же StringBuilder (название паттерна я, естественно, не помню)
Хочешь удивиться патерн называется билдер
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
27.03.2013, 01:01
Цитата Сообщение от mutagen Посмотреть сообщение
Хочешь удивиться патерн называется билдер
если мне память не изменяет билдер это вот это: http://en.wikipedia.org/wiki/Builder_pattern
а та фигня называлась как-то иначе

Добавлено через 1 минуту
Цитата Сообщение от Olllolll Посмотреть сообщение
Спасибо.
Понял что мало чего понял, но понял)

Я просто не совсем давно начал изучать жабу и порою очень зацикливаюсь на всех незнакомых и непонятных словечках, пока не пойму всей их прелести... Вот думаю правильно ли это? или же проходить все быстро, поверхностно и потом при нужде конкретного "чего-то" искать уже более подробную инфу и разбираться, как говорят, на месте..?
словом - весело.
это не джава. это нужно ооп подтянуть) тогда вопрос "зачем объекту нужна ссылка на самого себя?" как-то сам по себе отвалится
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
27.03.2013, 01:04  [ТС]
лично я вижу лишь один способ применения Зиса, и это еще в случае если я все правильно понял, тккак читал на английском:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
class PiuPiu{
int a;
int b;
 
public Mymetod(int a; int b){
this.a = a; //с руководящего класса вводим в переменную "а" метода Mymetod
               //какое то значение, оно передается в метод и присваивается глобальной
               //переменной "а" класса PiuPiu.
 //а если напишем :
b = b;
//то значение переменной "b" класса PiuPiu будет равно 0 даже если мы передадим .b(10)
// как то так,если правильно, то хорошо, и это для меня пока эдинственное
// "вменяемое" применение Зиса, такие дела.
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
27.03.2013, 01:19
да, я был прав. нужно подтянуть ооп)
сейчас покурю и напишу что ли небольшой ман... ато уже второй раз за последние пару недель...
1
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
27.03.2013, 01:38  [ТС]
Цитата Сообщение от AckiyBolt Посмотреть сообщение
это не джава. это нужно ооп подтянуть) тогда вопрос "зачем объекту нужна ссылка на самого себя?" как-то сам по себе отвалится
А как его подтянуть?? - только программировать монотонно одно и то же с учебником днями и часами , пока не откроется третий глаз, и когда это будет получаться без учебника на автомате, тогда можно переходить к новой и новой теме и так далее..

Добавлено через 3 минуты
Цитата Сообщение от AckiyBolt Посмотреть сообщение
да, я был прав. нужно подтянуть ооп)
так все плохо?
Цитата Сообщение от AckiyBolt Посмотреть сообщение
сейчас покурю и напишу что ли небольшой ман
было бы вообще очень здорово

Добавлено через 14 минут
Еще такой вопрос есть, сейчас читаю философию джавы.
И раздобыл еще одну неплохую книжечку: К. Сьерра, Б. Бейтс - Изучаем Java (Мировой компьтерный бестселлер) - 2012
еще не читал, но пролистал, и по оформлению на первый взгляд очень понравилась, все поясняется с привидением простых аналогий на предметах. Кто читал эту книгу? что можете сказать?
и вообще, будет ли толк в таком сочетание, прочитать философию, потом эту книгу?
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
27.03.2013, 02:27
Цитата Сообщение от Olllolll Посмотреть сообщение
А как его подтянуть?? - только программировать монотонно одно и то же с учебником днями и часами , пока не откроется третий глаз, и когда это будет получаться без учебника на автомате, тогда можно переходить к новой и новой теме и так далее..
ооп конкретно к джаве никак не относится. это джава относится к ооп, точно так же как плюсы, шарп и много чего еще. короче говоря это теория типа тех же алгоритмов, графов и т.д.. т.е. не зная или не понимая теорию написать что-то можно конечно, но адекватным оно будет врядли

Цитата Сообщение от Olllolll Посмотреть сообщение
Еще такой вопрос есть, сейчас читаю философию джавы.
И раздобыл еще одну неплохую книжечку: К. Сьерра, Б. Бейтс - Изучаем Java (Мировой компьтерный бестселлер) - 2012
еще не читал, но пролистал, и по оформлению на первый взгляд очень понравилась, все поясняется с привидением простых аналогий на предметах. Кто читал эту книгу? что можете сказать?
и вообще, будет ли толк в таком сочетание, прочитать философию, потом эту книгу?
философия джавы это как бы классика и вообще. про вторую не слышал вообще.
мне лично очень нравится двухтомник Хортсмана, хотя сам учился по Блинову, будь он проклят
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
27.03.2013, 03:10  [ТС]
Цитата Сообщение от AckiyBolt Посмотреть сообщение
хотя сам учился по Блинову, будь он проклят
почему так категорично? там же все програмно демонстрируется, пол книги кода.

Добавлено через 11 минут
Цитата Сообщение от AckiyBolt Посмотреть сообщение
ооп конкретно к джаве никак не относится. это джава относится к ооп, точно так же как плюсы, шарп и много чего еще. короче говоря это теория типа тех же алгоритмов, графов и т.д.. т.е. не зная или не понимая теорию написать что-то можно конечно, но адекватным оно будет врядли
это понятно, но целесообразней учить ооп в кнтексте отдельно выбранного профиля, то бишь языка, ведь продуктивней будет учить на примерах, примеры сразу оформлять программно.. если у меня цель учить жабу, к чему мне примеры на с#? Теория это конечно хорошо, но без практики она быстро испаряется в связи с приплывом новых апорий программирования которые требуют значительные затраты серого вещества, а его порою так не хватает)

Добавлено через 2 минуты
Цитата Сообщение от Olllolll Посмотреть сообщение
сейчас покурю и напишу что ли небольшой ман
Сегодня уже не стоит ждать? Если я Вас правильно понял вы о мануале для изучения ООП??
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
27.03.2013, 07:07
Цитата Сообщение от Olllolll Посмотреть сообщение
почему так категорично? там же все програмно демонстрируется, пол книги кода.
составлено крайне отвратно

Цитата Сообщение от Olllolll Посмотреть сообщение
это понятно, но целесообразней учить ооп в кнтексте отдельно выбранного профиля, то бишь языка, ведь продуктивней будет учить на примерах, примеры сразу оформлять программно.. если у меня цель учить жабу, к чему мне примеры на с#? Теория это конечно хорошо, но без практики она быстро испаряется в связи с приплывом новых апорий программирования которые требуют значительные затраты серого вещества, а его порою так не хватает)
арррр. эта трехбуквенная штука не связанна с языком. это точка зрения с которой нужно смотреть на реализацию ПО, а не сама реализация ПО. пролистайте Буча - Объектно-ориентированный анализ и проектирование. это толстенная библия на 718 страниц, из которых код встречается в аппендиксе на 30 страниц. и то где бегло рассматриваются ОО языки. ну причем тут джава и шарп?

Цитата Сообщение от Olllolll Посмотреть сообщение
Сегодня уже не стоит ждать? Если я Вас правильно понял вы о мануале для изучения ООП??
ща выложу
не совсем. получилось скорее что есть ООП вкратце и как его было бы неплохо понимать. с примерами на джаве естественно

к стати, буду признателен если меня шарящие люди попинают и я этот маленький ман доведу до ума т.к. опыта написания тех. статей у меня нет
https://www.cyberforum.ru/blog... g1258.html
0
8 / 8 / 0
Регистрация: 28.01.2013
Сообщений: 58
27.03.2013, 08:43
Цитата Сообщение от Olllolll Посмотреть сообщение
лично я вижу лишь один способ применения Зиса, и это еще в случае если я все правильно понял, тккак читал на английском:
Позволю себе немного резюмировать ответ AckiyBolt. Твоему объекту возможно понадобиться передать себя как параметр в метод какого-нибудь другого объекта. Что ты будешь делать без this в такой ситуации?
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
27.03.2013, 17:12  [ТС]
Цитата Сообщение от AckiyBolt Посмотреть сообщение
ну причем тут джава и шарп?
при том что джава и шарп это языки программирования, а ООП расшифровывается как объектно ориентированное ПРОГРАМИРОВАНИЕ, и я выше написал что учить ооп целесообразней на примерах которые в последствие изученной какой то части должны бить интерпретированы на том языке программирования к которому стоит приоритет.
Не пойму о чем вообще спор
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
27.03.2013, 18:32
ок. умываю руки
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
28.03.2013, 03:07  [ТС]
Цитата Сообщение от AckiyBolt Посмотреть сообщение
https://www.cyberforum.ru/blogs/353423/blog1258.html
жаль, нет прав доступа

Добавлено через 8 часов 26 минут
тема актуальна
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
28.03.2013, 08:25
Например, может понадобиться передать ссылку на самого себя внутри одного из методов.
Java
1
2
3
4
5
public class My implements ActionListener {
   public void doSomeWork(JButton button) {
      button.addActionListener(this);
   }
}
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
28.03.2013, 10:50
ещё вариант для создания инстанса приватного внутреннего класса если есть с таким же именем внешний, но вы написали свою реализацию
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class External {
    
    void doExternal() {
        this.new Internal().doSmth();
    }
    
    
    private class Internal {
        
        public void doSmth(){
            // bla bla
        }
    }
}
1
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
29.03.2013, 14:50
Я вот тут нашла еще пару любопытных вариантов:
Глава 5 Thinking in Java 4th edition: Ключевое слово this.

Первый, с возвращением самого объекта, на практике по-моему не поподался (не приходилось реализовывать). Хотя, он стоит того, чтобы взять его на заметку
Второй, где объект передается "куда-то внутрь" ... тоже интересный пример. Но, не уверена, что пример достаточно показательный. Ведь, операции по "удалению шкурки" скорее всего будут в Apple, а вызываем мы их почему-то из другого класса.
С другой стороны, если эти операции будут в методе Peeler, то он получается знает слишком много о нашем классе Apple. Что не есть хорошо, т.к. образовываются тесные связи между классами.
Вариант, когда шкурки хранятся отдельно от яблок я не рассматриваю ... думаю, по понятным причинам

3й (с конструкторами) встречается нередко. Когда используется несколько перегрузок конструкторов и они могут дергать друг друга.
1
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
06.04.2013, 04:01
о. вот эта тема
спасибо мутагену, теперь можно почитать заметочку в моем бложике. оно по умолчанию было закрыто для непосвященных
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
06.04.2013, 09:51
Цитата Сообщение от Antenka Посмотреть сообщение
Первый, с возвращением самого объекта, на практике по-моему не поподался
Этот подход хорош если у класса есть несколько обязательных параметров и несколько опциональных
Делаем конструктор на обязательные и аппендеры на опциональные (у них могут быть дефолтные значения внутри)
чтобы не городить лес конструкторов аппендеры возвращают this и можно выполнить красиво инициализацию
Java
1
SomeClass sc = new SomeClass(mustHave1, mustHave2).setOptional1(opt1).setOptional2(opt2);
либо
Java
1
SomeClass sc = new SomeClass(mustHave1, mustHave2).setOptional1(opt1);
либо
Java
1
SomeClass sc = new SomeClass(mustHave1, mustHave2);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.04.2013, 09:51
Помогаю со студенческими работами здесь

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

Для чего нужен метод dispose()?
Для чего нужен метод dispose()? Чем можно заменить оператор & в условном операторе если в условии есть: if...

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

Для чего нужен с++?
Я школьник, мне 16 лет, учусь в 10 классе, планирую поступить на факультет защиты информационных технологий. Сейчас начал изучать с++, не...

Для чего нужен C#?
Для чего нужен C#? На чем луче писать интернет-приложения и Online игры?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru