Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
6 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 60

Слово this - для чего оно?

17.07.2018, 09:54. Показов 4311. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читал, что слово this используется в первую очередь для устранения конфликта локальных и глобальных переменных.
Пример кода:
Java
1
2
3
4
5
6
7
8
class ThisTest {
   int var1, var2;
   
   ThisTest(int var1, int var2) {
      this.var1 = var1;
      this.var2 = var2;
   }
}
То есть в конструктор прописываются 2 параметра.
1-й вопрос: переменная this.var1 - это глобальная переменная или локальная (параметр конструктора)? Иными словами, переменная с приставкой this - это переменная, объявленная выше (сначала), или же та переменная, что в скобках у конструктора?
2-й вопрос: разъясните, пожалуйста, применение this вот в таких конструкциях: this(b, c) - где такое используется и зачем?
3-й вопрос: какие есть ещё применения слова this в Java?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.07.2018, 09:54
Ответы с готовыми решениями:

Что такое событие, для чего оно нужно
Помогите разобраться, что ли Вчера пытался понять что же такое событие, для чего оно нужно, зачем ему делегат Ну и собственно вот...

OpenVZ, VMware® ESXi 64-bit - для чего оно нужно?
Извиняюсь, может не там создал тему, но не нашел более подходящего раздела. Объясните зачем нужно виртуализировать систему? Для чего это...

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

72
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.07.2018, 10:01
Лучший ответ Сообщение было отмечено Рауль Вулкан как решение

Решение

https://docs.oracle.com/javase... a/TOC.html
rtfm же, там целый раздел есть
1
 Аватар для Aviz__
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
17.07.2018, 10:03
кнопка "вперед" все расскажет и даже больше, если нет возможности почитать литературу

0
6 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 60
18.07.2018, 15:25  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
кнопка "вперед" все расскажет и даже больше, если нет возможности почитать литературу
Возможность-то есть, но есть и три "камня преткновения":
1. В этой самой литературе частенько разжуют одно и опустят другое, вот и сидите, мол, гадайте, как там оно далее, а я не цыган.
2. С документацией - то же: целые катакомбы разделов, тем и темочек - в такие стоит поисковик встраивать (плюс все эти катакомбы написаны на инглише, легко проворонить то, что тебе нужно).
3. Искал не только "Вперёд", но и в Яндексе. Или вы думаете, я не искавши, не смотревши тему запиливаю? Искал и на stackoverflow'е, и на qaru.

Добавлено через 3 минуты
Цитата Сообщение от xoraxax Посмотреть сообщение
rtfm же
Точно rtfm. Особенно буква f правильно поставлена (я совершенно серьёзно).
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.07.2018, 15:27
ради такого даже скрин сделать не заломало
Миниатюры
Слово this - для чего оно?  
1
 Аватар для Aviz__
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
18.07.2018, 18:08
Цитата Сообщение от Рауль Вулкан Посмотреть сообщение
Искал не только "Вперёд"
сомнительно, т.к. на днях это усилено обсасывалось.
Цитата Сообщение от Рауль Вулкан Посмотреть сообщение
С документацией - то же
все зависит от того, для чего тебе java? если для будущей работы, то ты даже и не "нюхал", те объемы знаний, которые тебе нужно держать в голове постоянно((. а ты, даже, знакомиться с ними не желаешь, ввиду тяжести...
0
6 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 60
20.07.2018, 14:28  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
если для будущей работы, то ты даже и не "нюхал", те объемы знаний, которые тебе нужно держать в голове постоянно
Согласен. Но ведь не все знания сразу в голову загружать - сначала то, потом сё. Вначале синтаксис, затем его применение, потом уже API, их совмещение с языком и, наконец, и их применение. Мозг ведь не винчестер - хотя бы потому, что в винчестере тараканов нет, а уж в мозгу они обязательно найдутся. Нет, неправильно выразился - они сами вас найдут.
0
 Аватар для Aviz__
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
20.07.2018, 14:49
Цитата Сообщение от Рауль Вулкан Посмотреть сообщение
сначала то, потом сё.

Не по теме:

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

0
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
20.07.2018, 15:14
Лучший ответ Сообщение было отмечено Рауль Вулкан как решение

Решение

1. this - переводится как "этот", в данном случае "этот объект".
Если извне описания класса вы обращаетесь к полю obj.a то внутри класса, вместо имении объекта используется слово this , т.к. классу неизвестно что за объект будет это использовать. т.е. обращение внутри класса к полю этого класса будет выглядеть как this.a. java позволяет не использовать слово this и записать просто a, что на самом деле обозначает this.a.
Использование this особенно удобно, при совпадении имени поля и параметра. (ваш пример)

т.е. когда хирург на рабочем столе оперирует Алексея, то он вырезает "Почку Алексея", если Сергея - "почку Сергея". Но когда он описывает студентам как оперировать почку, он может говорит "эта почка" (либо просто "почка")

2. this() - это вызов конструктора внутри класса. (a, b) - конструктора с параметрами.

3. Вы можете активно использовать слово this в комментариях. Например
//this comment does not make sense. I'll go read books on Java

p.s. И согласен с вышесказанным - это все разжевывается в любой книге по джава. в том числе рускоязычных. на любом сайте и онлайн уроках.
1
6 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 60
20.07.2018, 17:14  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
это идеальный случай
Пока что у меня именно такой случай.

Добавлено через 1 минуту
Цитата Сообщение от alexjun Посмотреть сообщение
т.е. когда хирург на рабочем столе оперирует Алексея, то он вырезает "Почку Алексея", если Сергея - "почку Сергея".
:rof l:

Добавлено через 26 минут
Цитата Сообщение от xoraxax Посмотреть сообщение
ради такого даже скрин сделать не заломало
Я зашёл в документацию. Непонятный мне кусок кода выглядит так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Rectangle {
    private int x, y;
    private int width, height;
        
    public Rectangle() {
        this(0, 0, 1, 1);
    }
    public Rectangle(int width, int height) {
        this(0, 0, width, height);
    }
    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
    ...
}
Написано, что слово this в этом случае вызывает такой же конструктор. То бишь, в нашем случае строка this(0, 0, 1, 1) вызывает ещё один конструктор Rectangle? Это для перегрузки используется или для чего вообще?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
20.07.2018, 17:24
видишь же три конструктора объявлено. this вызывает конструктор, в метод передается 4 параметра, значит вот этот
Цитата Сообщение от Рауль Вулкан Посмотреть сообщение
public Rectangle(int x, int y, int width, int height)
что тут не понятного может быть?
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.07.2018, 17:43
Цитата Сообщение от Рауль Вулкан Посмотреть сообщение
вызывает такой же конструктор
Не такой же, а того же класса. Разница есть...
1
 Аватар для Aviz__
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
20.07.2018, 17:51
скажем, тебя устраивает, что прямоугольник появится в точке (0,0), и тебе нужно задать лишь его ширину и высоту.
ты делаешь его так: new Rectangle(width, height); но полей то 4 и в Rectangle(int width, int height), как видишь, передается другому конструктору значения по умолчанию this(0, 0, width, height);
0
6 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 60
21.07.2018, 04:54  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Не такой же, а того же класса.
Вот-вот, я это и хотел сказать. Рука опечаталась.

Добавлено через 2 минуты
Цитата Сообщение от xoraxax Посмотреть сообщение
что тут не понятного может быть?
Всё, теперь понятно.

Добавлено через 10 минут
Цитата Сообщение от Aviz__ Посмотреть сообщение
скажем, тебя устраивает, что прямоугольник появится в точке (0,0), и тебе нужно задать лишь его ширину и высоту.
ты делаешь его так: new Rectangle(width, height); но полей то 4 и в Rectangle(int width, int height), как видишь, передается другому конструктору значения по умолчанию this(0, 0, width, height);
Ну вот, теперь всё понятно, всё ведь можно растолковать! А то: "зайди в гууууугл, в гууууугл... Немедленно зайди в гугл!" И, мол, расковыривай потом всё это. А ведь всё проще.
0
 Аватар для Aviz__
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
21.07.2018, 18:35
Цитата Сообщение от Рауль Вулкан Посмотреть сообщение
А ведь всё проще
так ведь можно было по нормальному спросить, а не тыкать пальцем в небо...
0
68 / 18 / 0
Регистрация: 26.01.2018
Сообщений: 166
24.07.2018, 21:45
Цитата Сообщение от Рауль Вулкан Посмотреть сообщение
Слово this - для чего оно? - Java SE
Я где-то в одной из тем на форуме этой темой интересовался, как я понял "this" используют в основном конструкторах и в геттерах и сеттерах.
0
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
25.07.2018, 09:25
.
Цитата Сообщение от Vladimir1982 Посмотреть сообщение
как я понял "this" используют в основном конструкторах и в геттерах и сеттерах
Не совсем так.
Java
1
2
3
4
5
6
7
8
class ThisTest {
   int var1, var2;
   
   ThisTest(int var1, int var2) {
      this.var1 = var1;
      this.var2 = var2;
   }
}
Может легко существовать и без this
Java
1
2
3
4
5
6
7
8
class ThisTest {
   int var1, var2;
   
   ThisTest(int var1_, int var2_) {
      var1 = var1_;
      var2 = var2_;
   }
}
В сеттерах тоже самое.
В геттерах вообще с трудом представляю использование this
Java
1
2
3
public int getVar(){
   return this.var1; // так? масло масляное. и так понятно, и компилятору и человеку читающему код
}
1
68 / 18 / 0
Регистрация: 26.01.2018
Сообщений: 166
25.07.2018, 11:03
Цитата Сообщение от alexjun Посмотреть сообщение
Не совсем так.
Да, и такое я тоже видел, только я не понял в чем разница?
0
 Аватар для Aviz__
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
25.07.2018, 11:10
Vladimir1982, а чем вас смущает это объяснение? https://www.cyberforum.ru/post12552084.html
0
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
25.07.2018, 11:57
Цитата Сообщение от Vladimir1982 Посмотреть сообщение
Да, и такое я тоже видел, только я не понял в чем разница?
разница в коде.
что конкретно непонятно?

Добавлено через 34 минуты
смотрите:
вы компилятор у вас есть шарик. например синий.
Java
1
2
3
4
public class Paint {
String ball="blue";
...
}
вам приносят точно такой же шарик, например зеленый. И говорят: "Сделайте шарик цветом как шарик"

Java
1
2
3
public void repaint(String ball) {
ball=ball; 
}
Вы охереваете, естественно. И думаете, что в результате должно получится. Два синих? Два зеленых? Вы не заморачиваетесь, и делаете принесенный шарик, цветом как... принесенный шарик. Ну ломает вас рисовать и заморачиваться... И говорите:"Вот. Шарик, цветом как шарик."
Человек понял, что его обманули... ниче не поменялось, а деньги вы с него взяли...

И тогда человек говорит: "Сделайте ВАШ шарик, цветом как шарик."

Java
1
2
3
public void repaint(String ball) {
this.ball=ball; 
}
Теперь вам все понятно. Вы красите. Человек со своим шариком сваливает в неизвестность. А у вас свежепокрашеный зеленый шарик на руках.
Приходит еще человек. А в руках у него... красный кубик! И он говорит: "сделайте шарик цветом как кубик!"
Вам все понятно. недомолвок и непонятностей нет. И вы мажете шарик в красный цвет.
Java
1
2
3
public void repaint(String cube) {
ball=cube; 
}
Человек может сказать "ВАШ шарик". Но это необязательно, т.к. других шариков в округе не видно. И вам вполне понятно, что "сделайте шарик цветом как кубик!" означает "сделайте ВАШ шарик цветом как кубик!"

Java
1
2
3
public void repaint(String cube) {
this.ball=cube; // допустимо, но необязательно 
}
Вот и сказочке конец, кто не слушал, тот дурак.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2018, 11:57
Помогаю со студенческими работами здесь

Swapfile.sys Что это такое и для чего оно?
Я считаю что этот файл занимает много места. Реально ли удалить. Я знаю как уменьшить pagefile.sys(файл подкачки) но про swapfile ничего не...

Правильно ли составлено выражение, и для чего оно нужно в данном коде?
Всем доброго времени суток! Нужно составить код для решения уравнения методом итераций 0.25х^3+x-1.2502=0 х Вопрос,...

Для чего необходимо распределять память при помощи new и как оно работает
Сижу вот думаю над таким куском кода и не могу понять, как он работает. Допустим мы объявляем структуру: struct nameofctruct { ...

Подскажите что такое md5 шифрование пароля и для чего оно надо ?
Подскажите что такое md5 шифрование пароля и для чего оно надо ?

Строка содержит одно слово. Проверить, будет ли оно читаться одинаково справа налево и слева направо (т.е. является ли оно палиндромом)
Строка содержит одно слово. Проверить, будет ли оно читаться одинаково справа налево и слева направо (т.е. является ли оно палиндромом). ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru