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

Продолжаем серию уроков по программированию на языке Java. И сегодня пора нам написать чуть более сложное приложение, чем «Hello world». Мы будем говорить о типах данных. 

Java является строго типизированным языком программирования. Это означает, что переменные имеют конкретный известный тип еще на этапе компиляции. Например, если мы возьмем язык Javascript, то там можно объявить переменную как «var a = 45» или «var b = «Hello». То есть тип переменной здесь не указывается. В Java же, напротив. Если мы хотим объявить некую переменную, нам нужно указать ее тип, чтобы компилятор знал с каким типом он работает. Закрепим прочитанное примером. Откройте наш первый проект, который мы создали в статье о первом приложении и создайте новый класс. Назовем его TypesOfData. Не забудьте при создании поставить галочку, чтобы создался метод main. Теперь можно создать пару переменных. Хм.. Но мы не сможем ничего создать, так как ничего еще не выучили. Нужно еще немного теории.

В Java есть 8 примитивных типов, которые делят на 3 группы, вот они:

  1. Целые числа — byte, short, char, int, long
  2. Числа с плавающей точкой (иначе дробные) — float, double
  3. Логический — boolean

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

Типы с плавающей точкою. То есть дробные

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

Предлагаю пока поработать с целочисленными типами. Самым «популярным» среди целочисленных типов данных является тип int. Он позволяет хранить достаточно большой диапазон чисел и занимает не всего 32 бита.

Подкрепив наши знания теорией давайте воплотим их на практике. Для этого создайте несколько глобальных переменных в своем классе. Забыл упомянуть, что в Java переменные делятся на глобальные и локальные переменные. Глобальные — это те которые объявленные в классе. Локальные — те которые объявленные в методе. Об их разнице мы поговорим позже.

Вот пример объявленных глобальных приложений. Как Вы могли заметить, я называю переменные и классы в так называемом CamelCase или верблюжий  регистр. Это не просто так. Дело в том, что в Java принято объявлять переменные, классы и методы именно в таком стиле. Я советую Вам начать программирование с правильного стиля, который принятый в сообществе программистов для того, чтобы Ваш код могли читать и редактировать другие люди. Также старайтесь называть переменные, методы и классы в читаемом стиле: для класса — это сущность, которую он изображает, для метода — действие, для переменной — читаемое имя, которое ей соответствует.

Мы немного отошли от темы. Давайте теперь попробуем поработать с примитивными типами. Что же можно делать с типами данных в Java? Да все что угодно: добавлять, присваивать им другие значения, отнимать, делить и т.д. Об операциях мы поговорим в следующей статье, так как она очень увеличит данную статью.

Давайте перенесем наши переменные в main метод и попробуем поиграть с их размерностью. Для начала поэкспериментируем с byte:

Код   
public class TypesOfData {

    public static void main(String[] args){
         byte byteVariable = 3;    
       
         byte newByteVariable = (byte) (byteVariable + 125);//здесь нам нужно кастить к типу байт, так
         //операция распознается как инт
        System.out.println("First output " + newByteVariable);//так как тип байт имеет размерность -128 127, то добавление к 125 3 будет переполнять размерность
        //и мы получим отрицательный результат
       
        System.out.print("Second output");
        System.out.println(byteVariable+=125);//сокращенную запись нельзя записать с конкатенацией в выводе на консоль как предыдущую
        //но для сокращенной записи нам не нужно кастить выражение к типу byte
       
        byte newByteVariable1 = (byte) (byteVariable - 20);
        System.out.println("Third output " + newByteVariable1);
        //при отнимании ситуация противоположная. Выход за диапазон размерности даст нам положительный результат
    }
}

Вот результат запуска и выполнения данного кода: 

Код   
  1. First output -128
  2. Second output-128
  3. Third output 108

Теперь пример работы с int типом. 

Код   
int intValue = 3;
        int nextIntValue = 5;
        int resultOfDivision = intValue/nextIntValue;//int переменная автоматически откидает дробную часть
        System.out.println("Result of division " + resultOfDivision);
       
        int resultOfDivision1 = nextIntValue/intValue;//от деление остается только целое число
        System.out.println("Result of division1 " + resultOfDivision1);

Результат работы программы:

Result of division 0
Result of division1 1

Как видно из примера, для работы с дробными числами нужно использовать double или float. Давайте попробуем поработать с типом double.

Код   
  1. //для работы с дробными числами лучше использовать тип double, float
  2.         double doubleValue1 = 4;
  3.         double doubleValue2 = 5;
  4.        
  5.         double resultOfDivision = doubleValue1/doubleValue2;
  6.         System.out.println(resultOfDivision);
  7.        
  8.         double doubleValue3 = 1.234;
  9.         double doubleValue4 = 4.0854;
  10.        
  11.         double resultOfMultiplication = doubleValue3*doubleValue4;
  12.         System.out.println(resultOfMultiplication);

Результат работы программы:

0.8
5.0413836

Надеюсь, Вы убедились, что тип double хорошо выполняет свою функции по представлению дробных чисел. Он имеет достаточно высокую точность и годиться для большинства дробных операций. Переменные типа float полезны, когда вам нужен дробный компонент, но не требуют большой точности. Когда вам нужно поддерживать точность во многих итерационных вычислениях или манипулировать крупными числами, double — лучший выбор. Но, когда Вы собираетесь работать с валютой, а в будущем Вы будете с ней работать, то лучше использовать специальный классы обертки для подобных чисел. Об этом будет отдельная статья.

Мы чуть не забыли рассмотреть такой тип данных, как boolean. Его используют очень часто. Этот тип данных хранит значение истина или ложь. Это все значение которые может принимать данный тип данных. 

Код   
  1. boolean booleanValueTrue = true;
  2.         boolean booleanValueFalse = false;
  3.         System.out.println(booleanValueTrue);
  4.         System.out.println(booleanValueFalse);
  5.         booleanValueTrue = false;
  6.         System.out.println(booleanValueTrue);

Результат работы программы:

true
false
false

Вы спросите: «А как же добавление int к double или double к char?». Отвечаю: можно кастить и приводить типы данных, НО только в пределах правил, которые мы изучим в следующей статье.

1

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *