← Назад к вопросам
Какие знаешь типы данных в Java?
1.2 Junior🔥 121 комментариев
#JVM и память#Kotlin основы
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Типы данных в Java
Java имеет две основные категории типов данных: примитивные типы и ссылочные типы (reference types). Это фундаментальное различие важно для понимания управления памятью и производительности на Android.
Примитивные типы
Примитивные типы хранят значения прямо в памяти и не требуют выделения объекта:
Целые числа:
byte— 8 бит, диапазон -128 до 127short— 16 бит, диапазон -32768 до 32767int— 32 бита, диапазон -2147483648 до 2147483647long— 64 бита, для больших целых чисел (суффикс L)
Числа с плавающей запятой:
float— 32 бита, одинарной точности (суффикс f)double— 64 бита, двойной точности (по умолчанию)
Логический тип:
boolean— true или false
Символы:
char— 16 бит, один символ Unicode
Ссылочные типы (Reference Types)
Ссылочные типы хранят ссылку на объект в памяти кучи (heap):
Классы:
val user = User("Alice", 30) // объект класса User
val str = "Hello" // String — это класс
Интерфейсы:
interface Drawable {
fun draw()
}
Массивы:
val numbers = IntArray(10) // примитивный массив
val objects = arrayOf("a", "b") // массив объектов
Enum:
enum class Status {
PENDING, ACTIVE, COMPLETED
}
Примеры использования
// Примитивные типы — быстрые, занимают мало памяти
fun sumNumbers(a: Int, b: Int): Int {
return a + b
}
// Ссылочные типы — гибкие, работают с объектами
data class Person(val name: String, val age: Int)
fun main() {
val primitiveInt: Int = 42
val person = Person("John", 30)
// Автоматическое приведение типов
val longValue: Long = primitiveInt.toLong()
}
Обёрнутые типы (Wrapper Classes)
Для примитивных типов есть соответствующие классы-обёртки:
Integer(для int)Long(для long)Double(для double)Boolean(для boolean)
val primitiveInt: Int = 10
val boxedInt: Integer = primitiveInt // autoboxing
val unboxedInt: Int = boxedInt // unboxing
Специальные типы
String:
val text = "Hello, Android!"
val formatted = "Value: ${42}"
Object:
// Базовый класс для всех Java объектов
val obj: Object = "string"
val obj2: Object = 42
Null:
val nullableString: String? = null
val nonNullString: String = "value"
Различия в памяти
| Тип | Хранилище | Скорость | Использование |
|---|---|---|---|
| Примитивные | Stack | Очень быстро | Числа, логика |
| Ссылочные | Heap | Медленнее | Объекты, коллекции |
Практические советы для Android
- Используй примитивные типы для чисел и простых значений — быстрее
- Избегай автоматического boxing/unboxing в циклах — съедает производительность
- Используй ссылочные типы для работы с объектами и данными
- Null-safety — используй nullable типы (?) осознанно
Понимание типов данных критично для написания эффективного кода на Android, особенно в performance-critical секциях.