02 begin
This commit is contained in:
parent
06be52bbf2
commit
0d694aac12
Binary file not shown.
Binary file not shown.
|
@ -92,14 +92,79 @@ Java является языком со \textbf{строгой} (также мо
|
|||
таблица из методички «Основные типы данных в языке Java»
|
||||
\end{frame}
|
||||
\note{
|
||||
Все данные в Java делятся на две основные категории: примитивные и ссылочные. Примитивных всего восемь и это, наверное, первое, что спрашивают на джуниорском собеседовании, это байт, шорт, инт, лонг, флоут, дабл, чар и булин. как вы можете заметить в этой таблице, каждый из типов имеет диапазон значений, а значит основное их отличие в объёме занимаемой памяти.
|
||||
Все данные в Java делятся на две основные категории: примитивные и ссылочные. Чтобы отправить на хранение какие-то данные используется оператор присваивания, который вам всем хорошо знаком.
|
||||
|
||||
Думаю, не лишним будет напомнить, что присвавивание в программировании - это не тоже самое, что математическое равенство, а полноценная операция. все присваивания всегда происходят справа налево, то есть сначала вычисляется правая часть, а потом результат вычислений присваивается левой. Именно поэтому в левой части не может быть никакиз вычислений.
|
||||
|
||||
Примитивных всего восемь и это, наверное, первое, что спрашивают на джуниорском собеседовании, это байт, шорт, инт, лонг, флоут, дабл, чар и булин. как вы можете заметить в этой таблице, шесть из восьми типов имеет диапазон значений, а значит основное их отличие в объёме занимаемой памяти. На самом деле у дабла и флоута тоже есть диапазоны, просто они заключаются в другом и их довольно сложно отобразить в простой таблице. Что значат эти диапазоны? они значат, что если мы попытаемся положить в переменную меньшего типа какое-то большее значение, произойдёт неприятность, которая носит название «переполнение переменной».
|
||||
}
|
||||
|
||||
Данные: типы, преобразование типов, константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными);
|
||||
\begin{frame}
|
||||
\frametitle{Типы, преобразование типов}
|
||||
переполнение переменной если презы умеют в гифки, нужна вода, льющаяся в переполненный стакан
|
||||
\end{frame}
|
||||
\note{
|
||||
Интересное явление, рассмотрев его мы рассмотрим одни из самых трудноуловимых ошибок в программах, написанных на строго типизированных языках. С переполнением переменных есть одна неприятность: их не распознаёт компилятор. Итак, переполнение переменной - это ситуация, в которой как и было только что сказано, мы пытаемся положить большее значение в переменную меньшего типа. чем именно чревато переполнение переменной легче показать на примере (тут забавно будет вставить в слайд пару-тройку картинок из вот этого описания расследования крушения ракеты из-за переполнения переменной https://habr.com/ru/company/pvs-studio/blog/306748/)
|
||||
}
|
||||
\newpage
|
||||
\note{
|
||||
(далее, возможно, лайвкод) если мы создадим переменную скажем байт, диапазон которого от -128 до +127, и присвоим этой переменной значение, скажем, 200, что произойдёт? правильно, переполнение, как если попытаться влить пакет молока в напёрсток, но какое там в нашей переменной останется значение максимальное 127? 200-127? какой-то мусор? именно этими вопросами никогда не надо задаваться, потому что каждый язык, а зачастую и разные компиляторы одного языка ведут себя в этом вопросе по разному. лучше просто не допускать таких ситуаций и проверять все значения на возможность присвоить их своим переменным. В современном мире гигагерцев и терабайтов почти никто не пользуется маленькими типами, их, наверное, можно считать своего рода пережитком, но именно из-за этого ошибки переполнения переменных становятся опаснее испанской инквизиции, их никто не ожидает (тут не помешает кадр из монти пайтон «no one expects spanish inqisition»).
|
||||
}
|
||||
|
||||
Базовые функции языка: математические операторы, условия, циклы, бинарные операторы;
|
||||
\begin{frame}
|
||||
\frametitle{Типы, преобразование типов}
|
||||
целые числа
|
||||
\end{frame}
|
||||
\note{
|
||||
целочисленных типов аж 4 и они занимают 1,2,4,8 байт соответственно. про чар, несмотря на то, что он целочисленный мы поговорим чуть позднее. с четырьмя основными целочисленными типами всё просто - значения в них могут быть только целые, никак и никогда невозможно присвоить им дробных значений, хотя и тут можно сделать оговорку и поклон в сторону арифметики с фиксированной запятой, но мы этого делать не будем, чтобы не взрывать себе мозг и не сбиваться с основной мысли. итак, целочисленные типы с диапазонами
|
||||
\begin{itemize}
|
||||
\item минус 128 плюс 127,
|
||||
\item минус 32768 плюс 32767,
|
||||
\item я никогда не запомню что там после минус и плюс 2млрд
|
||||
\item и четвёртый, который лично я никогда даже не давал себе труд дочитать до конца
|
||||
\end{itemize}
|
||||
про эти типы важно помнить два факта:
|
||||
\begin{enumerate}
|
||||
\item инт - это самый часто используемый тип, если сомневаетесь, какой использовать, используйте инт
|
||||
\item все числа, которые вы пишете в коде - это инты, даже если вы пытаетесь их присвоить переменной другого типа
|
||||
\end{enumerate}
|
||||
}
|
||||
\newpage
|
||||
\note{
|
||||
Я вот сказал, что инт самый часто используемый и внезапно подумал: а ведь чаще всего было бы достаточно шорта, например, в циклах, итерирующихся по массивам, или во временных хранениях значений, скажем, возраста человека, но всё равно все по привычке используют инт.
|
||||
|
||||
Функции: параметры, возвращаемые значения, перегрузка функций;
|
||||
далее - лайвкод в котором нужно показать присвоение к байту и попытку присвоения лонга, показать предупреждения среды.
|
||||
|
||||
как мы видим, к маленькому байту вполне успешно присваивается инт. получается, обманул, сказав, что все числа это инты? давайте посмотрим на следующий пример - попытку присвоить значение 5 млрд переменной типа лонг. помним, что в лонге можно хранить очень большие числа, но среда показывает ошибку, значит и тут наврал? давайте разбираться по порядку: если мы посмотрим на ошибку, там английскими буквами будет очень понятно написано - не могу положить такое большое значение в переменную типа инт. а это может значить только одно: справа - инт. не соврал.
|
||||
}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Типы, преобразование типов}
|
||||
немного о хранении чисел с плавающей точкой
|
||||
\end{frame}
|
||||
\note{
|
||||
Диапазоны значений флоута и дабла заключаются не в величине возможных хранимых чисел, а в точности этих чисел после запятой. до какого знака будет сохранена точность.
|
||||
}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Типы, преобразование типов}
|
||||
таблица из методички «Основные типы данных в языке Java»
|
||||
\end{frame}
|
||||
\note{
|
||||
Что ещё важного мы видив в этой таблице? шесть из восьми примитивных типов могут иметь как положительные, так и отрицательные значения
|
||||
}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Типы, преобразование типов}
|
||||
\end{frame}
|
||||
\note{
|
||||
}
|
||||
|
||||
% Данные: типы, преобразование типов, константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными);
|
||||
|
||||
% Базовые функции языка: математические операторы, условия, циклы, бинарные операторы;
|
||||
|
||||
% Функции: параметры, возвращаемые значения, перегрузка функций;
|
||||
|
||||
|
||||
\begin{frame}
|
||||
|
|
Loading…
Reference in New Issue