скачать книгу бесплатно
И у нас осталось семь бит.
Таким образом, мы можем иметь 2 в степени 7 различных неотрицательных чисел, а именно от 0 до 127.
Для отрицательных чисел они кодируются таким образом, что сумма отрицательного числа и его положительного аналога равна 2 в степени числа бит, т. е. восемь, или 256, или 1, а затем восемь 0.
Таким образом, с этим кодированием мы можем представлять, как положительные, так и отрицательные числа.
Теперь давайте сосредоточимся на Java.
Какие типы данных мы используем для целых чисел?
На самом деле это не один тип данных, а доступно несколько типов данных.
У нас есть тип данных, называемый «байт», который использует точно восемь бит – это и есть, один байт.
Мы можем представить цифры от -128 до 127, как мы только что видели.
Есть тип данных «short», который использует 16 бит и находится в диапазоне от -32 000 до плюс
32000.
Но основным типом данных, которым мы будем пользоваться, будет «int».
Здесь максимальное положительное число составляет более 2 миллиардов.
Если вам потребуются большие цифры, можно использовать «long» с 64 битами.
Для чисел с плавающей запятой есть два типа данных в Java: «float», который использует 32 бита, и «double», который использует 64 бита.
Рекомендуется использовать double, когда нужны числа с плавающей запятой.
Подводя итог, существует восемь примитивных типов данных в Java.
Два для представления нечисловых данных: boolean для булевых значений, true и false, и char – для представления одного символа.
И числовые типы данных.
int – это основной тип данных, который нужно запомнить для представления целых чисел.
И остальные байт, short, и long.
И double – это основной тип данных для чисел с плавающей запятой.
Другой тип – float.
Таким образом мы не можем работать с бесконечно большими числами или числами с бесконечной точностью.
Методы
Представьте себе, что вам приходится многократно вычислять квадрат числа.
Для каждого числа, вы вводите одно число, затем оператор умножения, а затем снова число.
И то же самое для другого числа и т. д.
Поэтому в калькуляторе было бы неплохо иметь программируемую кнопку, которая выполняет любую операцию, которую мы определим.
Это может быть квадрат или квадратный корень, или любые вычисления, которые нам понадобятся.
В Java также возможно определять пользовательские операции.
Но вместо того, чтобы называть их операциями, мы называем их методами.
Это является терминологией Java.
В других языках программирования они называются функциями или процедурами.
Метод – это вычисление, которому мы даем имя, так что мы можем вызывать его в любое время, когда нам нужно выполнить это вычисление.
Метод может зависеть от одного или любого числа параметров.
И метод может привести к какому-то результату или какому-то эффекту.
Рассмотрим метод вычисления квадрата числа.
Можно представить этот метод как черный ящик, который получает целое число в качестве входных данных и выводит другое целое число.
В математических терминах мы можем определить его как функцию следующим образом.
Мы дадим функции имя, например, square.
И эта функция принимает целое число как параметр и возвращает целое число.
Функция определяется следующим образом.
Если мы назовем аргумент или параметр как x, результат получается умножением x на x.
Теперь, как мы определим это в Java?
Сначала мы напишем что-то похожее на первую строку в математическом определении.
Но порядок немного другой.
Во-первых, мы пишем тип результата, затем имя метода, а затем в круглых скобках тип параметра и далее идентификатор параметра.
При этом у нас может быть несколько параметров.
Все это называется заголовком метода.
Затем мы напишем в фигурных скобках то, что мы должны сделать, чтобы вычислить результат.
И мы указываем, что это результат возврата, поместив ключевое слово return перед выражением.
Затем в фигурных скобках мы пишем вычисление, которое хотим выполнить.
И мы называем это телом метода.
Имя метода может быть любым допустимым идентификатором.
Но мы будем следовать соглашению, и напишем его с маленькой буквы.
И обычно это глагол.
Если нам нужно больше одного слова, мы будем писать каждое следующее слово с заглавной буквы.
Как мы видим здесь в isEmpty.
И рекомендуется, чтобы имя метода имело значение, чтобы другие могли легко понять, что здесь вычисляется.
Имена параметров мы также можем свободно выбирать.
Нам нужно дать имя параметру, потому что нам нужно обращаться к параметру в теле метода.
Но этот идентификатор является внутренним.
Если мы заменим его на другой идентификатор, мы не изменим метод.
Вместо x мы можем указать y в качестве идентификатора параметра.
Так как, по существу, x или y являются просто заполнителями для фактического параметра, который мы указываем при вызове метода.
Сколько входных параметров может иметь метод?
И что насчет результата?
Мы видели, как определить метод с одним параметром и одним результатом.
Можем ли мы также иметь больше параметров?
У нас может быть несколько параметров.
Здесь мы видим метод с двумя параметрами.
Обратите внимание, что они разделяются запятыми.
И у нас может быть еще больше параметров, разделенных запятыми.
Также у нас может не быть никаких параметров.
Теперь круглые скобки пустые.
В этом случае этот метод всегда возвращает одно и то же значение.
Или у нас может не быть никакого возвращаемого результата.
В этом случае мы пишем void как тип результата.
Это имеет смысл, например, если мы хотим что-то напечатать.
В других языках программирования говорят о процедурах, если нет возвращаемого значения.
И о функциях, если возвращается результат.
Но в Java мы просто говорим о методах.
Наконец, мы можем иметь метод без параметров и без результатов.
Теперь мы рассмотрели все возможные случаи.
Область видимости переменных
В предыдущей лекции мы узнали, как определить метод.
И мы хотим знать, что происходит, когда мы его вызываем.
Возьмем снова метод, вычисляющий квадрат числа.
Он называется square и принимает одно значение и возвращает другое значение – квадрат числа.
Важно отметить, что определение метода идентифицирует два контекста – внутри и снаружи.
Внутри мы можем использовать параметры x или y или что угодно.
Но не снаружи.
Извне мы просто знаем название метода, параметры, и тип результата.
Как вычисляется метод, это вопрос внутреннего контекста.
В какой-то момент мы могли бы изменить тело метода.
Здесь мы видим альтернативный способ вычисления квадрата числа.
Но мы не знали бы этого извне, из контекста вызова.
Теперь давайте посмотрим, что происходит, когда мы вызываем метод с заданным значением.
Мы могли бы проанализировать, что происходит, когда мы вызываем square (3).