java core

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/3

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No study sessions yet.

4 Terms

1
New cards

Устройство памяти в java
string pool, integer pool, heap, stack

Устройство памяти в Java состоит из нескольких ключевых областей: куча (Heap), стек (Stack), пул строк (String Pool) и пул целых чисел (Integer Pool).

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

Стек — область памяти, в которой хранятся локальные переменные и информация о вызовах методов (стек вызовов). Каждый поток выполнения в Java имеет свой собственный стек. П

String pool - область в куче, предназначенная для хранения уникальных экземпляров строковых литералов.

Integer pool - область в куче, где кешируются объекты в диапазоне от -128 до 127

2
New cards

Кеширование типов в Java

Кеширование типов - механизм, позволяющий уменьшить кол-во создаваемых объектов для определенных, часто используемый значений → позволяет снизить нагрузку на GC и улучшить производительность + сократить объем используемой памяти.

Кеширование в Integer
* Кешируются объекты для диапазона значение от -128 до 127 включительно по дефолту
* Можно увеличить диапазон кеширования, задав системное свойство при запуске программы IntegerCache.high


Integer num = new Integer(123); - новый объект всегда
Integer num = 123; - будет кеширование - вернет ссылку на существующий объект
Integer num = Integer.valueOf(123); - будет кеширование

Лучше сравнивать объекты-обертки с помощью equals, вдруг они созданы через конструктор или не закешированы → ссылки разные, значение одинаково

3
New cards

Что такое перегруженные методы ?

Это методы, определенные в одном классе с одинаковым именем, но с разными параметрами.
Основные моменты:
• Перегрузка методов не зависит от возвращаемого типа. Например, нельзя перегрузить два метода, которые отличаются только возвращаемым типом.
• Перегрузка позволяет сделать код более читаемым и гибким.
• Компилятор сам определяет, какой из методов вызывать, основываясь на переданных аргументах.

4
New cards

Какие типы методов есть, когда какие используются?

Какие типы методов есть в Java и когда они используются?
1⃣ Статические (static)
• Принадлежат классу, а не объекту.
• Используются для утилитарных функций, фабричных методов.
• Пример: Math.sqrt().
2⃣ Экземплярные (нестатические)
• Привязаны к конкретному объекту.
• Используются для работы с состоянием объекта.
• Пример: String.toLowerCase().
3⃣ Абстрактные (abstract)
• Объявлены без реализации в абстрактном классе.
• Реализуются в подклассах.
• Пример:
abstract class Animal {
abstract void makeSound();
}

4⃣ Финальные (final)
• Нельзя переопределить в наследниках.
• Используются для неизменяемого поведения.
• Пример:
class A {
final void method() { }
}

5⃣ Синхронизированные (synchronized)
• Гарантируют потокобезопасность.
• Используются при доступе к общим ресурсам в многопоточной среде.
• Пример:
synchronized void method() { }

6⃣ Дефолтные (в интерфейсах, default)
• Имеют реализацию по умолчанию в интерфейсе.
• Используются для расширения интерфейсов без ломки кода.
• Пример:
interface MyInterface {
default void method() { }
}

7⃣ Приватные (в интерфейсах, private)
• Вспомогательные методы внутри интерфейса.
• Используются для логического разбиения кода.