4

Джава-2

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


Начнём с типов данных. Когда мы говорим/переписываемся с другим человеком мы передаём информацию (данные). Из курса школьной физики нам известно что звук - колебания воздуха (или другой среды), всё что мы видим - свет, отражённый от предмета, температура тела - внутренняя энергия его частиц... Если так же углубляться в информацию находящуюся на компьютере, то окажется что это всего лишь отсутствие (условно 0) или наоборот присутствие (условно 1) электрического заряда. И множество приборов переводят последовательность этих зарядов в изображение на экране, мелодию из колонок, текст в распечатке. Только представьте, мы имеем шесть органов чувств, которые передают всю огромное количество разнообразной информации в мозг. А у компьютера всего один орган чувств и тот знает только единицу и ноль. Однако разработчики помогли программистам и обучили Java восьми простым типам данных. Тип данных - правила структуры, использования данных, требования которых должен исполнять и компьютер, и программист.


* Начнём с самого лёгкого (имхо) типа данных - boolean. Данные такого типа имеют только два значения true и false (правда и ложь соответственно). Например: 2 < 3 = True. Применение: например вы создаёте приложение для взрослых >8-], и вам требуется чтобы пользователь подтвердил своё совершеннолетие. Если его возраст меньше 18, то выходим из программы; если нет, продолжаем.


* Символьный тип данных - char. Таким типом может быть представлен только символ, причём только один. Зайдите в меню пуск и наберите в поиске Charmap. Нажмите на дополнительные параметры. У вас должно появиться что-то подобное.

C помощью текстовых полей выделенных зелёным можно узнать символ по коду или названию. Красным выделен Unicod (Универсальный код) символа. В Java этот код должен быть представлен следующим видом: \u**** (где вместо звёздочек четыре последних символа). Так в Java Пи можно представить как \u03C0. Символьный тип в Java использует именно юникод. Применение: передача символьной информации (цифры, знаки, буквы).


Также существует тип данных String (строковые данные) - данные состоящие из нескольких символов. Следует знать, что символ "f" и строка "f" - разные вещи, примерно как цифра и число. Хотя и гораздо удобнее набрать "ПРИВЕТ МИР" чем искать для каждой буквы юникод и потом подставлять их в нужное место, однако там где нужно использовать только один символ лучше использовать именно символьный тип данных. Если я не забуду, то напишу отдельную статью, почему именно так и как это работает.


Целочисленные типы данных - положительны и отрицательные без дробной части:

* byte. Все целые числа от -128 до 127. Применение: проценты громкости/здоровья, зрение человека, температура на улице.

* short. От -32768 до 32767. Применение: ревизия в магазине недосдача/плюс (коробок мыла, кг гвоздей), глубина/высота дна/горы.

* int (cокр. от Integer). От -2147483648 до 2147483647. Применение: карма на пикабу (ну а вдруг вы решили создать приложение для пикабу).

* long. От -9223372036854775808 до 9223372036854775807. Применение: честно даже не знаю, где может использоваться настолько большое отрицательное число и без дробной части. А вот положительное число, например, количество букв в документе, калькулятор секунд которые вы прожили.


Логично задать вопрос: а почему не использовать везде тип long и не запоминать три дополнительных типа данных. А я объясню. Грубо говоря, вся информация на компьютере храниться либо на жёстком диске, либо в оперативной памяти. Минус первого - маленькая (по сравнению с оперативной памятью) скорость записи/чтения информации. Минусы второго требует электричество (то есть если отключить питание, то вся информация из оперативной памяти пропадёт); разные операционные системы могут использовать ограниченное количество этой памяти. В современных домашних компьютерах, обычно, используется 4 Гб оперативной памяти = 4*1024*1024*1024 = 4294967296 байт. Использование в программе 536870912 данных типа лонг займёт всю память компьютера. Конечно, цифра кажется большой, однако здесь не учтены операционная система, офисные программы, а ещё музычку через контакт послушать, письмо отправить, а в оффисах жадный начальник поскупился добавить пару т.р. и не 4 Гб, а полтора на компьютере. Таким образом почти 537 миллионов снижаются до 20-30 млн. А если использовать short, то это число увеличивается в 4 раза. К тому же операция: 14 + 99, требует меньше ресурсов от процессора, если оба значения типа int, a не long. Почему так происходит объясняю ниже.


Помним, что информация в компьютере представлена единицей и ноликом? Очень похоже на азбуку морзе (только там короткий и длинный). Представим, что мы указали компьютеру выделить информацию под тип byte. Компьютер выделяет 1 байт равный 8 бит - восемь ячеек, в которые можно поместить 1 или 0 (поставить/убрать заряд).

А как же он представляет там число? Очень просто: первая ячейка отвечает за знак числа - если в ячейке стоит 0, то значение положительно, иначе отрицательно. А вот дальше посложнее. Вспомните начальную школу, разряды (единицы, десятки, сотни, тысячи...) и составление чисел из цифр. У компьютера всего две цифры 0 и 1. Таким образом его счёт идёт следующим образом:

Выделенные серым цветом ноли показаны лишь для того, чтобы вы помнили - в компьютерном представлении эти ноли существуют. Таким образом в памяти компьютера сохранены числа от 0 до 127 (итого 128 разных чисел). Отрицательные числа (первая ячейка принимает значение 1) считаются аналогично, только отправной точкой считается -128. От -128 до -1 также 128 разных чисел.

Таким образом, первая ячейка показывает, что отсчёт идёт от -128 или 0, а остальные 7 ячеек показывают, сколько нужно отсчитать в сторону увеличения. Аналогично и с другими целочисленными типами данных только там разрядов побольше. Откройте виндузкий калькулятор>вид>программист.

Фиолетовым обведено количество памяти выделяемое компьютером на расчёты сверху вниз соответствуют long, int, short, byte. Зелёным выделено число, введённое нами или полученное в результате расчётов. Красным выделено число из зелёного в компьютерном представлении, нижняя строчка количество нулей. Синим система счисления: Bin - компьютерное представление. Советую поставить 1 байт, Dec и прибавлять 1 и смотреть как будет изменяться число в красном. Также посмотрите, что будет, если к 127 прибавить 1. Подумайте, почему так происходит. Не закрывайте калькулятор, он ещё потребуется.


А теперь объясню, почему 14 + 99 в int, требует меньше ресурсов. В калькуляторе выберите 8 байт (соответствует типу long). Введите 14 (посмотрите в скольких ячейках стоит ноль), нажмите плюс и введите 99 (посчитайте количество нолей). Что, лень вам считать эти нули? А компьютеру приходиться эти ноли между собой складывать и хотя одно такое вычисление по времени не заметно для человека, в основном вычисления используются более трудные (несколько сложений, возведение в степень, деление) и для большого количества входящих данных. А вот в таком случае задержка уже может быть заметной.


Ну чтож последние два типа данных: *float (плюсминус ~3.4^38, 6 цифр после запятой), *double (плюсминус ~1.8^308, 15 цифр после запятой). Если мы в уравнении используем число типа флоат (меньше памяти и быстрее расчёт) то в конце числа необходимо ставит "F", иначе число будет принято за double. Однако в связи с особенностями вычислений: 2.0 - 1.1 = 0.89999999. К счастью это лечится. Но об этом в следующий раз.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества