Показаны сообщения с ярлыком типы данных. Показать все сообщения
Показаны сообщения с ярлыком типы данных. Показать все сообщения

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

Оглавление:

Обзор примитивных типов в Java:


Сводка по примитивным типам данных:


Представление данных в языке Python


Всё в Python - есть объекты

Объект - это абстракция для данных. Объект - это некоторый контейнер в памяти, который содержит данные.

Все данные в языке Python представлены объектами и отношениями между объектами:
a = 1
b = 2
c = [a, b]
В языка Python у любого объекта есть три обязательные вещи: идентификатор, тип и значение. Тип и идентификатор объекта не изменяются в течение жизни объекта.

Никакие два объекта в один момент времени не обладают одинаковым идентификатором.

>>> x = [1, 2, 3]
>>> print(id(x))
51747776
>>> print(id([1, 2, 3]))
51756528

Идентификатор объекта - это какое-то число.

Переменная в языке Python - это всего лишь ссылка на объект. Значение переменной это всегда значение объекта.

>>> x = [1, 2, 3]
>>> y = x
>>> print(y is x)
True
>>> x.append(4)
>>> print(x)
[1, 2, 3, 4]
>>> print(y)
[1, 2, 3, 4]

append изменяет (изменяемый) объект, конкатенация создает новый. В следующем коде идет переопределение переменной t, а не объекта, на который ссылается s.
>>> x = [1, 2, 3]
>>> y = x
>>> y.append(4)
>>> s = "123"
>>> t = s
>>> t = t + "4"
>>> print(str(x) + " " + s)
[1, 2, 3, 4] 123


У любого объекта есть тип, который определяет, что можно сделать с объектом. Тип определяет поведение объекта и возможные принимаемые значения для объекта. Тип объекта не меняется в течение жизни объекта. Узнать тип объекта можно с помощью функции type():
>>> x = [1, 2, 3]
>>> type(x)
<class 'list'>
>>> type(4)
<class 'int'>
>>> type(type(x))
<class 'type'>
list - это стандартный тип отвечающий за список в языке Python. Типы в языке Python также являются объектами. Тип типа x - это класс type.

Базовые типы языка программирования Haskell

Haskell - типизированный язык со строгой статической системой типов. Термин "строгий" означает, что отсутствует неявное приведение типов. Термин "статический" означает, что проверка типов происходит не во время исполнения, а во время компиляции. Haskell умеет выводить тип практически любого выражения самостоятельно. Если выражение правильно построено, то тогда его тип выводится, а если в выражении содержится какая-то ошибка, то тогда система вывода типов Haskell возвращает сообщение об ошибке. 

Имена типов начинаются с большой буквы. Два двоеточия подряд - это оператор типизации в Haskell. Этот оператор связывает выражения, которые стоят слева от этого оператора с типами, которые стоят справа.

В Haskell имеется стандартный набор числовых типов:
  • Int - для целых ограниченного размера;
  • Integer - для целых произвольного размера;
  • Float - числа с плавающей точкой одинарной точности;
  • Double - числа с плавающей точкой двойной точности.
Все эти типы являются представителями одного класса типов - Num. Механизм классов типов используется для того чтобы задать для всех чисел общий интерфейс. Например, чтобы числа относящиеся к разным типам например, Double и Int можно было складывать с помощью одного и того же оператора сложения. 

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

Целочисленные

char (символьный тип данных)
Размер соответствует минимальной адресуемой ячейке (обычно это 1 байт).
Основное применение: хранение символьных данных.
Т.к. 1 байт соответствует 1 символу, то строке соответствует набор символов типа char.
Строки задаются в двойных кавычках: "Text string".

Тип char в языке C++ является особенным: стандарт не оговаривает является ли тип char знаковым или беззнаковым — это зависит от компилятора. Если вам нужна именно беззнаковая версия используйте unsigned char явно, если же вам нужна знаковая используйте signed char. При этом все три типа (char, unsigned char, signed char) являются тремя различными типами.


short int, int и long int
Про размер типа int и его производных в стандарте ничего не указано, однако указано, что short int должен быть меньше int, а int должен быть меньше long int. Это означает, что эти типы могут занимать различное число байт в зависимости от настроек компилятора, ОС, архитектуры процессора.
В большинстве настольных систем тип int занимает 4 байта.


По умолчанию целочисленные типы могут хранить как положительные так и отрицательные значения. В этом случае множество представимых значений вычисляется по формуле -2n-1...(2n-1-1), где n - это число бит. Такая асимметрия происходит из того, что в положительные значения записывается 0.
Целочисленные типа данных могут быть беззнаковыми (unsigned). В этом случае множество представимых значений изменится на 0...(2n-1).

Все целочисленные типы (кроме char) являются знаковыми. Беззнаковые версии типов определяется с ключевым словом unsigned, например: unsigned short int, unsigned int или unsigned long int. Для симметрии в языке предусмотрено явное указание того, что тип является знаковым — ключевое слово signed (используется редко). Более того, C++ допускает использование следующих сокращений:
  • unsigned вместо unsigned int,
  • short вместо short int,
  • long вместо long int.


Значения встроенных типов C++ задаются с помощью литералов. Целочисленные значения можно задавать следующим образом:
  • ’a’ — код буквы ’a’, тип char,
  • 42 — все целые числа по умолчанию типа int,
  • 1234567890L — суффикс ’L’ соответствует типу long,
  • 1703U — суффикс ’U’ соответствует типу unsigned int,
  • 2128506UL — соответствует типу unsigned long.


При определении переменной указывается её тип. При определении можно сразу задать начальное значение (инициализация).
int i = 10; // тип переменной совпадает с типом литерала
short j = 20; // здесь произойдет преобразование встроенного типа, число 20 из типа int преобразуется в тип short (если число окажется больше, чем может вместить тип short, то преобразование может оказаться не специфицированным)
unsigned long l = 123123; // значение типа int и при присваивании оно преобразуется к беззнаковому типу long


Числа с плавающей точкой

float, 4 байта, 7 значащих цифр.
Тип float используют в тех случаях, когда нужно значительно сэкономить на памяти. Например, если нужно хранить массив из миллиарда вещественных чисел, то для нас уже имеет значение размер.


double, 8 байт, 15 значащих цифр.
На практике в большинстве случаев разумно использовать тип double, т.к. погрешность при его использовании будет меньше.


Числа с плавающей точкой:
  • 3.14 — все числа с точкой по умолчанию типа double,
  • 2.71F — суффикс ’F’ соответствует типу float,
  • 3.0E8 — соответствует 3.0 · 108

Определение переменной:
double x = 13.5, y = 3.1415; // не очень удобно использоваться, потому что редактирование кода идет построчно и лучше определять каждую переменную на своей строчке
float z; // плохой тон, т.к. никто не знает какое значение будет у переменной
Нужно всегда инициализировать переменные.


Логический тип данных

bool
Умеет хранить значения типа "ложь" или "истина".
Обычно используется в условных выражениях.
true и false — значения типа bool.

Определение переменной:
bool b = false;


Пустой тип

void
Не хранит никакого значения и используется в тех случаях, когда надо указать тип, но никакого значения нет. Например, если функция не возвращает никакого значения, то тогда указывается тип void.

Нельзя определить переменную пустого типа void.