ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


Типы данных


Поговорим про типы данных в языках программирования. Они делятся на две категории: примитивные типы и ссылочные типы. В статье рассмотрим каждую из категорий.

Типы данных в языках программирования

Примитивные типы данных

Примитивные типы данных — это базовые типы данных языка программирования. Их ключевая особенность в том, что данные в них, в отличие от ссылочных типов, располагаются непосредственно [«в переменной».] на участке памяти компьютера в котором находится переменная. Перечислим и опишем основные примитивные типы данных в программировании.

  • Логический тип данных или булевый. Переменные данного вида могу принимать лишь два значения: истина (true, либо 1) или ложь (false, либо 0). В различных языках программирования булевы переменные объявляются с помощью ключевого слова bool либо boolean. Логический тип данных имеет широчайшее применение (как собственно и другие типы). Например, он фигурирует в условных операторах ветвления (if) и операторах цикла (for, while, do-while).
  • Целочисленный тип данных. Обычно объявляется ключевым словом int или integer. Переменные данного типа могут принимать только целочисленные значения. Часто тип int занимает четыре байта (232 = 4294967296), следовательно переменные могут принимать значения от — 2 147 483 648 и до 2 147 483 647 в случае, когда целый тип учитывает знак числа. Если использовать беззнаковый целый тип данных (unsigned int), то его диапазон значений от 0 до 4294967295. В языке программирования Java целый тип всегда 4 байта. В языках Си и C# предполагаемый размер также 4 байта, но на деле — всё зависит от конкретной реализации языка на программной платформе.
    Данный тезис относится не только к типу int. Размер каждого примитивного типа данных в любой реализации языка Java всегда строго определен и одинаков. В C-подобных языках это не так.
  • Целочисленный тип byte. Исходя из названия типа, он занимает в памяти один байт, то есть восемь бит. 28 = 256 — такое количество значений он может в себя вместить. Если говорить конкретно, то в случае, если тип byte со знаком, то диапазон от -128 до 127 (не забываем, что есть еще число ноль); когда byte беззнаковый, то от 0 до 255.
  • Короткий целый тип short. В памяти для него выделено 2 байта = 16 бит (216 = 65536). Диапазон принимаемых значений типом short со знаком — это [-32768; 32767].
  • Длинный целый тип long. Длинный целый тип занимает в памяти 8 байт, то есть 64 бита. 264 = 1,8446744 × 1019. Диапазон допустимых значений очень велик: в случае знакового типа, это [-9223372036854775808; 9223372036854775807]. Кроме того, модификатор long можно использовать в сочетании с другими типами (long пишется перед названием типа, например: long double), расширяя, тем самым, диапазон допустимых значений типа согласно спецификации конкретного языка программирования.
  • Число с плавающей запятой. Этот тип обозначается ключевым словом float, также же этот тип называют вещественным типом одинарной точности. float — это ни что иное, как десятичная дробь (привычная нам на письме), но в памяти компьютера она представляется в виде экспоненциальной записи: состоит из мантиссы и показателя степени. Например: 0,0506 = 506,0 ⋅ 10-4, где 506 — мантисса, а -4 — показатель степени десяти. Размер типа данных float в спецификации языка Си четко не определен.
  • Число с плавающей запятой двойной точности — это тип double. Данный тип схож с типом float, единственное их различие — это размер в памяти и, соответственно, диапазон принимаемых значений. Естественно тип double больше; но всё зависит от реализации языка, говоря строго: тип double по крайней мере должен быть не меньше, чем float.
  • Символьный тип данных занимает в памяти один байт — если используется кодировка ASCII и два байта — если установлена кодировка Unicode. Данный тип по сути является целым числом. Цифра, хранящаяся в переменной символьного типа — это номер символа в таблице кодировки. Обычно объявляется с помощью ключевого слова char. Нужно четко представлять себе, что char — это число, и работать с ним, как с числом, в некоторых случаях очень удобно и эффективно.

Типы данных в памяти компьютера


Ключевая особенность примитивных типов данных в том, что они передаются по значению. Это значит, что при передачи переменной в качестве аргумента функции (или методу) она копируется туда. Следовательно манипуляции, производимые с переменной в вызванной функции, никак не повлияют на значение переменной в вызывающей функции.

Примечание: модификатор unsigned (то есть беззнаковый) применим к любому целочисленному типу (в том числе и к символьному), а long (длинный) применим практически к любому типу, за исключением логического.

Ссылочные типы данных

Самая важная особенность ссылочных типов данных состоит в том, что они передаются не по значению, а по ссылке. Что это значит?

Ссылочные типы данных не являются примитивными и их размер не фиксирован и может быть произвольным, кроме того они хранятся не [«в переменной».] на участке памяти переменной, а в совершенно другом месте памяти компьютера. Ссылочными типами, например, являются массивы. В объектно-ориентированных языках программирования — это экземпляры классов, коллекции и т.п.

При создании нового массива:

Или экземпляра класса:

Память в компьютере для созданного объекта выделяется с помощью оператора new (C++, C#, Java), а в переменную объекта (в нашем случае это mass и sw) заносится лишь ссылка на участок памяти (адрес), в котором располагается созданный объект.

Передавая объект в качестве аргумента методу (или функции), в метод передаётся лишь копия адреса, но не копия объекта. Соответственно все изменения и манипуляции, производимые с объектом в вызванном методе, отразятся на объекте в вызывающем методе, потому что это один и тот же объект.

Вот в чём заключается отличие примитивных типов данных от ссылочных.

 

5/5 - (10 голосов)



Поделиться в соц. сетях:

Добавить комментарий

Ваш адрес email не будет опубликован.