Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
08.08.2019, 00:24
|
|||
---|---|---|---|
|
|||
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
Привет ребята. Столкнулся с проблемой, не могу понять почему код выдаёт ошибку. Есть 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();}} ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.08.2019, 08:04
|
|||
---|---|---|---|
|
|||
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
Стек трейс же должен выдаваться. Там должно быть видно где ошибка происходит. Подсказка: в какой момент выполняется Код: java 1.
и Код: java 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.08.2019, 10:17
|
|||
---|---|---|---|
|
|||
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
Andrey53791, Все просто. static - один объект для всех созданных объектов. А если без статики то при каждом создании нового объекта класса Test будет создаваться еще объект класса Test, а в том еще один и т.д. А ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.08.2019, 10:45
|
|||
---|---|---|---|
|
|||
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
Tsyklop, Добрый день. На самом деле не совсем понятно, почему выкидывает ошибку, ведь если будет создаваться еще 1 объект класса Test, то в чем проблема, это же грубо говоря будет как переменная или я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.08.2019, 10:48
|
|||
---|---|---|---|
|
|||
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
Alexander A. Sak, Добрый день. Test s = new Test(); выполняется при создании объекта класса static Test s = new Test(); выполняется при любом "использовании" класса. Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.08.2019, 11:57
|
|||
---|---|---|---|
|
|||
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
При создании экземпляра класса, объекты созданного экземпляра класса не наследуются, если они не статик, я пришёл только к этому выводу, скоординируйте пожалуйста.. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.08.2019, 12:15
|
|||
---|---|---|---|
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
Andrey53791, StackOverflowError - это значит ты забил всю память тепер как ты это сделал: без статика у тебя класс Test имеет переменную типа Test которая имеет свою переменную типа Test и эта цепочка объектов нигде не заканчивается и ограничена только памятью джава машины... от чего и происходит StackOverflowError. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.08.2019, 12:27
|
|||
---|---|---|---|
|
|||
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
Dmitry.Andrey53791, StackOverflowError - это значит ты забил всю память тепер как ты это сделал: без статика у тебя класс Test имеет переменную типа Test которая имеет свою переменную типа Test и эта цепочка объектов нигде не заканчивается и ограничена только памятью джава машины... от чего и происходит StackOverflowError. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.08.2019, 12:29
|
|||
---|---|---|---|
|
|||
Вопрос про статику и пчм получается StackOverflowError =) |
|||
#18+
Dmitry.Andrey53791, StackOverflowError - это значит ты забил всю память тепер как ты это сделал: без статика у тебя класс Test имеет переменную типа Test которая имеет свою переменную типа Test и эта цепочка объектов нигде не заканчивается и ограничена только памятью джава машины... от чего и происходит StackOverflowError. StackOverflowError - значит что стек переполнен. В многопоточке, в каком-то потоке может переполниться стек, но это не приведет к крашу программы. А за "переполнение" памяти отвечает OutOfMemoryError. Даже правильней сказать когда она заканчивается. И вот тут уже приложение упадет в любом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=59&mobile=1&tid=2121166]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
301ms |
get topic data: |
16ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
4ms |
others: | 12ms |
total: | 436ms |
0 / 0 |