powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос про статику и пчм получается StackOverflowError =)
10 сообщений из 10, страница 1 из 1
Вопрос про статику и пчм получается StackOverflowError =)
    #39846704
Andrey53791
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет ребята. Столкнулся с проблемой, не могу понять почему код выдаёт ошибку.
Есть 2 класса, Test и Test1, почему в 1 примере код работает, а во 2 выдаёт ошибку, после того как я убрал static в классе Test1.

А вот и ошибка, которую выдаёт ошибочный пример
Exception in thread "main" java.lang.StackOverflowError
at Test.<init>(Test.java:2)

Пример 1, правильный.
class Test{
static Test s = new Test();
Test() {
System.out.println("s");}}


public class Test1{
public static void main(String[] str) {
Test f = new Test();}}

Пример 2, ошибочный.
class Test{
Test s = new Test();
Test() {
System.out.println("s");}}



public class Test1{
public static void main(String[] str) {
Test f = new Test();}}
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39846749
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стек трейс же должен выдаваться. Там должно быть видно где ошибка происходит.

Подсказка: в какой момент выполняется
Код: java
1.
static Test s = new Test();

и
Код: java
1.
Test s = new Test();

?
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39846801
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey53791, Все просто. static - один объект для всех созданных объектов. А если без статики то при каждом создании нового объекта класса Test будет создаваться еще объект класса Test, а в том еще один и т.д. А
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39846814
Andrey53791
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tsyklop, Добрый день. На самом деле не совсем понятно, почему выкидывает ошибку, ведь если будет создаваться еще 1 объект класса Test, то в чем проблема, это же грубо говоря будет как переменная или я не прав?
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39846816
Andrey53791
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. Sak, Добрый день.
Test s = new Test(); выполняется при создании объекта класса
static Test s = new Test(); выполняется при любом "использовании" класса.
Верно?
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39846886
Andrey53791
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При создании экземпляра класса, объекты созданного экземпляра класса не наследуются, если они не статик, я пришёл только к этому выводу, скоординируйте пожалуйста..
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39846902
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey53791,

StackOverflowError - это значит ты забил всю память

тепер как ты это сделал:

без статика у тебя класс Test имеет переменную типа Test которая имеет свою переменную типа Test и эта цепочка объектов нигде не заканчивается и ограничена только памятью джава машины... от чего и происходит StackOverflowError.
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39846906
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry.Andrey53791,

StackOverflowError - это значит ты забил всю память

тепер как ты это сделал:

без статика у тебя класс Test имеет переменную типа Test которая имеет свою переменную типа Test и эта цепочка объектов нигде не заканчивается и ограничена только памятью джава машины... от чего и происходит StackOverflowError.
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39846910
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry.Andrey53791,

StackOverflowError - это значит ты забил всю память

тепер как ты это сделал:

без статика у тебя класс Test имеет переменную типа Test которая имеет свою переменную типа Test и эта цепочка объектов нигде не заканчивается и ограничена только памятью джава машины... от чего и происходит StackOverflowError.

StackOverflowError - значит что стек переполнен. В многопоточке, в каком-то потоке может переполниться стек, но это не приведет к крашу программы.

А за "переполнение" памяти отвечает OutOfMemoryError. Даже правильней сказать когда она заканчивается. И вот тут уже приложение упадет в любом случае.
...
Рейтинг: 0 / 0
Вопрос про статику и пчм получается StackOverflowError =)
    #39847203
Andrey53791
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь я всё понял, спасибо большое, за уделенное время
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос про статику и пчм получается StackOverflowError =)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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