← Назад к вопросам

Какие знаешь типы данных в Java?

1.2 Junior🔥 121 комментариев
#JVM и память#Kotlin основы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Типы данных в Java

Java имеет две основные категории типов данных: примитивные типы и ссылочные типы (reference types). Это фундаментальное различие важно для понимания управления памятью и производительности на Android.

Примитивные типы

Примитивные типы хранят значения прямо в памяти и не требуют выделения объекта:

Целые числа:

  • byte — 8 бит, диапазон -128 до 127
  • short — 16 бит, диапазон -32768 до 32767
  • int — 32 бита, диапазон -2147483648 до 2147483647
  • long — 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 секциях.