Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.06.2021
Сообщений: 8

объявление ссылочной переменной

06.06.2021, 15:43. Показов 744. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему так компилируется

Java
1
2
3
4
5
6
7
public class Main {
   //Cat cat = new Cat();
   public static void main(String args[]) {
       Cat cat = new Cat();
       cat.setName("Васька");
       System.out.println("Кота зовут " + cat.getName());
   }
а так ошибка

Java
1
2
3
4
5
6
7
8
public class Main {
   Cat cat = new Cat();
   public static void main(String args[]) {
       //Cat cat = new Cat();
       cat.setName("Васька");
       System.out.println("Кота зовут " + cat.getName());
   }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2021, 15:43
Ответы с готовыми решениями:

Чем отличается объявление переменной без и с оператором new?
Только начал изучать java и сразу не понял, чем отличаются такие объявления переменных и их дальнейшее использование public static...

Тип ссылочной переменной
у меня совершенно наивный вопрос, человека топчущегося в начале пути! Влияет ли как то "тип"ссылочной переменной суперкласса,...

Присвоение примитивного типа ссылочной переменной
В одном из курсов по Java утверждается: "примитивные значения нельзя присваивать объектным переменным". Действительно, такой код ...

14
Модератор
Эксперт Java
 Аватар для alecss131
2850 / 1358 / 405
Регистрация: 11.08.2017
Сообщений: 4,332
Записей в блоге: 2
06.06.2021, 15:48
Потому что нельзя вызывать нестатичное поле из статичного метода
0
0 / 0 / 0
Регистрация: 06.06.2021
Сообщений: 8
06.06.2021, 15:58  [ТС]
а когда вы объявили сылочную переменную в методе то в чём разница?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
06.06.2021, 15:59
Цитата Сообщение от petr2021 Посмотреть сообщение
то в чём разница?
В области видимости.
0
0 / 0 / 0
Регистрация: 06.06.2021
Сообщений: 8
06.06.2021, 16:11  [ТС]
ведь переменная объявленная в классе распространяется и на метод и она по сути статическая для этого метода?

Добавлено через 1 минуту
причем тут видимость в этом случае?

Добавлено через 2 минуты
если вы объявили в методе то она статическая, а если в классе то нет?

Добавлено через 3 минуты
или просто нельзя объявлять в классе ссылочные переменные за пределами методов и конструкторов?

Добавлено через 3 минуты
но ведь можно объявлять ссылочную String....
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
06.06.2021, 17:03
Цитата Сообщение от petr2021 Посмотреть сообщение
ведь переменная объявленная в классе распространяется и на метод
на нестатический метод, а у тебя main --- статический.
0
0 / 0 / 0
Регистрация: 06.06.2021
Сообщений: 8
06.06.2021, 17:17  [ТС]
а где вы такое правило взяли? Может правильный ответ следующий - объект созданный в методе принадлежит методу и потому есть статический, а объект созданный в классе принадлежит объекту класса и потому нестатический.

Добавлено через 8 минут
хотя понятие статический относится только к понятию класса.... Вот как объект в методе может быть статическим для всего класса??? Я могу к этому объекту тогда обратится по имени класса, если он тогда статический?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.06.2021, 17:40
Цитата Сообщение от petr2021 Посмотреть сообщение
объект созданный в методе принадлежит методу и потому есть статический, а объект созданный в классе принадлежит объекту класса и потому нестатический
Что за ахинея?

Добавлено через 2 минуты
petr2021, ты вообще понимаешь разницу между классом и экземпляром этого класса?
0
0 / 0 / 0
Регистрация: 06.06.2021
Сообщений: 8
06.06.2021, 17:42  [ТС]
а с другой стороны время жизни объекта внутри метода равно времени выполнения метода - то тогда какой он статический?

Добавлено через 1 минуту
я то да, а вот ты объяснить не можешь ...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.06.2021, 17:43
Цитата Сообщение от petr2021 Посмотреть сообщение
я то да
А вот похоже что нет

Добавлено через 38 секунд
Статическое поле принадлежит классу, а не экземпляру этого класса.
0
0 / 0 / 0
Регистрация: 06.06.2021
Сообщений: 8
06.06.2021, 17:48  [ТС]
объявление ссылочной переменной в статическом методе создаёт статическую переменную чего? Когда понятие "статическое" относится только к понятию класса.

Добавлено через 41 секунду
это элементарно понятно ....
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.06.2021, 17:48
Цитата Сообщение от petr2021 Посмотреть сообщение
объявление ссылочной переменной в статическом методе создаёт...
локальную для этого метода переменную.
0
0 / 0 / 0
Регистрация: 06.06.2021
Сообщений: 8
06.06.2021, 18:10  [ТС]
и ещё статическая переменная должна жить всё время работы программы. А как же объект внутри метода, он сколько живёт?

Добавлено через 1 минуту
а какая она статическая или не статическая?
0
 Аватар для Coffeini
753 / 370 / 133
Регистрация: 01.02.2020
Сообщений: 1,096
Записей в блоге: 1
06.06.2021, 18:11
Цитата Сообщение от petr2021 Посмотреть сообщение
он сколько живёт?
До тех пор, пока сборщик мусора не обратит на него внимание?
А вообще тут бы критерии "жизни" объекта неплохо написать.
0
0 / 0 / 0
Регистрация: 06.06.2021
Сообщений: 8
06.06.2021, 18:20  [ТС]
а.... на локальные переменные это не распостраняется...... понятно это просто локальная переменная))

Добавлено через 6 минут
ну вот и правильный ответ - объект внутри метода это просто локальная переменная не имеющая понятия "статическая", а если ее объявить в классе то это "нестатическое поле". Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2021, 18:20
Помогаю со студенческими работами здесь

Объявление переменной
public class Test { public static void main (String args) { int i1 = 01234; System.out.println(i1 ); }} вывод:668 как...

Объявление переменной. В чем ошибка?
Есть задание: " Какие варианты объявления дробной переменной верны (никакие переменные предварительно не объявлены)? 1. float a; ...

Объявление переменной внутри цикла
Смотрю курсы, и там приводиться следующий метод для инвертирования массива: public static void invert(int data) { for(int k =...

Объявление переменной для хранения безразмерного массива
Добрый день!.Работаю в среде Eclipse на java. Подскажите пожалуйста, можно ли указать переменную для хранения длины или элементов...

Изменение ссылочной переменной
Может задам глупый вопрос, но возможно ли в данном коде изменить ссылочную переменную b, не вызывая конструкторов? Используя именно ссылку,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru