Successfully reported this slideshow.
Your SlideShare is downloading. ×

Урок 3. Лексика языка Java

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 56 Ad

Урок 3. Лексика языка Java

Download to read offline

Пробелы, идентификаторы, комментарии, разделители, ключевые слова, примитивные типы, литералы, методы, переменные, прямой и дополнительный код, преобразование и приведение примитивных типов, ввод с клавиатуры.
Лекции, задания, видео, тесты и вопросы на:
https://www.examclouds.com/java/java-core-russian/leksika-java
Подписывайтесь на страницу:
https://www.facebook.com/Examclouds
Подписывайтесь на канал: https://www.youtube.com/c/tatyanamilkina


Пробелы, идентификаторы, комментарии, разделители, ключевые слова, примитивные типы, литералы, методы, переменные, прямой и дополнительный код, преобразование и приведение примитивных типов, ввод с клавиатуры.
Лекции, задания, видео, тесты и вопросы на:
https://www.examclouds.com/java/java-core-russian/leksika-java
Подписывайтесь на страницу:
https://www.facebook.com/Examclouds
Подписывайтесь на канал: https://www.youtube.com/c/tatyanamilkina


Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to Урок 3. Лексика языка Java (20)

Advertisement
Advertisement

Урок 3. Лексика языка Java

  1. 1. 1. Пробелы 2. Идентификаторы 3. Комментарии 4. Разделители 5. Ключевые слова 6. Примитивные типы 7. Литералы 8. Методы 9. Переменные 10. Прямой и дополнительный код 11. Преобразование и приведение примитивных типов 12. Ввод с клавиатуры www.examclouds.com
  2. 2. Лексика языка Исходный текст программ на Java состоит из:  совокупности пробелов  идентификаторов  литералов  комментариев  операции  разделителей  ключевых слов www.examclouds.com
  3. 3. Пробелы 1. Java - язык свободной формы. Это означает, что при написании программы не нужно следовать каким-то специальным правилам в отношении отступов. 2. В языке Java пробелами считаются символы пробела, табуляции или новой строки. 3. Единственное обязательное требование - наличие, по меньшей мере, одного пробела между всеми лексемами, которые еще не разграничены оператором или разделителем. www.examclouds.com
  4. 4. Идентификаторы 1. Идентификаторы служат для именования классов, методов и переменных. 2. Идентификатором может быть любая последовательность маленьких и больших букв, цифр или символов подчеркивания (_) и денежной единицы ($). 3. Идентификаторы НЕ должны начинаться с цифры. 4. В Java учитывается регистр символов. 5. Допустимые идентификаторы: MinTemp, sum, x4, $test, my_ number. 6. Недопустимые идентификаторы: 3min, min-temp, yes/no. 7. Нельзя использовать ключевые слова в качестве идентификаторов. www.examclouds.com
  5. 5. Рекомендации по именованию классов, интерфейсов и методов Классы и интерфейсы  Первая буква в имени должна быть заглавной. Например: Dog.  Если в имени содержится несколько слов, то каждую первую букву в последующих словах следует делать заглавной (camelCase формат). Например: PrintReader.  Имена классов следует делать существительными. Например: Cat, Exam, SomeJob.  Имена интерфейсам следует давать в форме прилагательных: Comparable, Iterable, Navigable. Методы  Первую букву следует делать строчной и далее следовать рекомендациям camelCase.  Имена следует давать в виде сочетания глаголов и существительных: getName, doJob, setLastName. www.examclouds.com
  6. 6. Рекомендации по именованию переменных и констант Переменные  Первую букву следует делать строчной и далее следовать рекомендациям camelCase.  Присваивайте короткие говорящие имена, чтобы было понятно для чего используется эта переменная: firstName, buttonHeight. Константы  Константы в Java создаются с помощью зарезервированных слов static и final.  Имена констант следует задавать только заглавными буквами, а слова в имени разделять знаком подчеркивания: MAX_WEIGHT. www.examclouds.com
  7. 7. Комментарии  Однострочные комментарии // int avgTemp = 1;  Многострочные комментарии /* for (String str : args) { System.out.println(count++ + " аргумент = " + str); }*/  Документирующие комментарии /** * Created by Tatyana on 07.04.2017. */ www.examclouds.com
  8. 8. Разделители () . , ; {} [] www.examclouds.com
  9. 9. Ключевые слова Java  В Java 11 определено 50 ключевых слов, которые вместе с синтаксисом операторов и разделителей образуют основу языка Java.  Кроме ключевых слов, в Java зарезервированы также слова true, false и null.  Их нельзя использовать в качестве идентификаторов. www.examclouds.com
  10. 10. Ключевые слова Java www.examclouds.com
  11. 11. Типы данных в Java Типы данных Примитивные (простые, базовые) Ссылочные (объектные) Массивы Классы Интерфейсы www.examclouds.com
  12. 12. Типы данных в Java Примитивные (простые, базовые) Символьные Целочисленные Числа с плавающей точкой. Логические Числовые boolean byte short int long float double char www.examclouds.com
  13. 13. Значения примитивных типов www.examclouds.com
  14. 14. Пример объявления целочисленных примитивных типов byte b = 4; short s1 = 7, s2 = 5; int i1 = 56, i2; i2 = 78; long a1 = 456; www.examclouds.com
  15. 15. Пример объявления примитивных типов с плавающей точкой double d1 = 3.45; float f1 = 34.456f; www.examclouds.com
  16. 16. Пример объявления примитивных символьных типов char c1 = 'a'; char c2 = 45; www.examclouds.com
  17. 17. Пример объявления примитивных логических типов boolean b1 = false; boolean b2 = true; www.examclouds.com
  18. 18. Пример public class FloatDemo{ public static void main(String[] args) { System.out.println(2.0 - 1.1); } } www.examclouds.com
  19. 19. Литералы 1. Boolean литералы. 2. Символьные литералы. 3. Строковые литералы. 4. Числовые литералы. 1.1. Целочисленные литералы. - десятичные; - восьмеричные; - шестнадцатеричные; - двоичные - начиная с Java 7. 1.2. Литералы с плавающей точкой. www.examclouds.com
  20. 20. Целочисленные литералы  Десятичные литералы [0-9] int x1 = 878; int x2 = -878; int x3 = +878;  Восьмеричные литералы 0[0-7] int six = 06; // Равно десятичному числу 6 int seven = 07; // Равно десятичному числу 7 int eight = 010; // Равно десятичному числу 8 int nine = 011; // Равно десятичному числу 9  Шестнадцатеричные литералы [0X|0x][0-9a-fA-F] int a1 = 0X0005; int a2 = 0x7ddfffff; int a3 = 0xcccccccc;  Двоичные литералы в Java 7 [0b|0B][0-1] int i1 = 0b101; int i2 = 0B101; www.examclouds.com
  21. 21. Целочисленные литералы представленные как long  long a1 = 220433L;  long a2 = 0x3FFl; www.examclouds.com
  22. 22. Литералы с плавающей точкой  Всем литералам с плавающей точкой по умолчанию присваивается тип double: double d1 = 145454545.676767676; double d2 = .4;// число 0.4  Чтобы создать литерал типа float, нужно после литерала указать букву 'f' или 'F‘: float f1 = 56.45455; // Ошибка компиляции float f2 = 343434.454563F; float f3 = 78.45f;  Можно добавить символ 'D' или 'd' к double литералу, но это не обязательно: double d3 = 454545.454545D; double d4= 654.321; double d5 = 54.32d;  Научная нотация double d6 = 1.5e14; //Значение этого числа равно 1.5*1014 double d7 = 1.5E+14; //Значение этого числа равно 1.5*1014 double d8 = 1.5e-14; //Значение этого числа равно 1.5*10-14 www.examclouds.com
  23. 23. Подчеркивание в числовых литералах (начиная с Java 7) Нельзя использовать подчеркивания в следующих местах:  В начале или конце числа.  Рядом с десятичной точкой в числе с плавающей точкой.  Перед 'F', 'f', 'l' или 'L' суффиксами.  Для разделения символов префиксов. int i1 = 12_567; // OK double d1 = 56.356_234; // OK short s = 0b000____0100; // OK int i2 = 220_; // Ошибка компиляции int i3 = 0_x2F; // Ошибка компиляции int i4 = 0x_3E; // Ошибка компиляции float f1 = 6345.56_f; // Ошибка компиляции float f2 = 3423_.87f; // Ошибка компиляции www.examclouds.com
  24. 24. Логические литералы  Логические литералы boolean b1 = true; // Правильно boolean b2 = false; // Правильно boolean b3 = 0; // НE правильно www.examclouds.com
  25. 25. Символьные литералы  Определение символьных литералов единичными символами: char c1 = 'n'; char c2 = '#';  Определение символьных литералов используя значение Unicode: char letterO = 'u004F'; // Буква 'O' в шестнадцатеричной форме char letterA = '141'; // Буква 'a' в восьмеричной форме  Присвоение числового литерала переменной символьного типа: char a1 = 0x675; // шестнадцатеричный целочисленный литерал char a2 = 345; // десятеричный целочисленный литерал  Определение символьных литерала с помощью обратной косой черты: char c1 = '''; char c2 = 'n'; www.examclouds.com
  26. 26. Строковые литералы  Строки символов заключаются в двойные кавычки.  Управляющие символы и восьмеричная или шестнадцатеричная форма записи, определенные для символьных литералов, действуют точно так же и в строковых литералах.  Строковые литералы String str1 = "MyProgram"; String str2 = "first linensecond line"; String str3 = ""This is in quotes""; String str4 = "u004F letter";//O letter www.examclouds.com
  27. 27. Задание  Создать программу, в которой вывести на консоль литералы следующих видов: а) логический литерал; б) строковый; в) символьный; г) целочисленный 2-й; д) целочисленный 8-й; е) целочисленный 10-й; ж) целочисленный 16-й; з) литерал типа float; е) литерал типа double. www.examclouds.com
  28. 28. Методы  Общая форма объявления метода: тип имя(список_параметров){ // тело метода }  Пример 1. Метод не возвращающий значение: static void print() { System.out.println(“Print some info”); }  Пример 2. Метод возвращающий значение: static double getVolume(double width, double height, double depth) { return width * height * depth; } www.examclouds.com
  29. 29. Тип метода 1. Тип обозначает конкретный тип данных, возвращаемых методом. Он может быть любым допустимым типом данных, в том числе и типом созданного класса. 2. Если метод не возвращает значение, то его возвращаемым типом должен быть void. 3. Методы, возвращаемый тип которых отличается от void, возвращают значение: return значение; www.examclouds.com
  30. 30. Имя и параметры метода 1. Для указания имени метода служит идентификатор имя. Это может быть любой допустимый идентификатор, кроме тех, которые уже используются другими элементами кода в текущей области действия. 2. Список параметров обозначает последовательность пар "тип-идентификатор", разделенных запятыми. 3. По существу, параметры - это переменные, которые принимают значения аргументов, передаваемых методу во время его вызова. Если у метода отсутствуют параметры, то список_параметров оказывается пустым. www.examclouds.com
  31. 31. Объявление и вызов метода  public class SquareDemo { public static void main(String[] args) { int x, y; x = square(5); System.out.println(x); x = square(9); System.out.println(x); y = 2; x = square(y); System.out.println(x); } public static int square(int i) { return i * i; } } www.examclouds.com
  32. 32. Параметр и аргумент Важно различать два термина: параметр и аргумент. Параметр - это переменная, определенная методом, которая принимает значение при вызове метода. Аргумент - это значение, передаваемое методу при его вызове. Например, square(100) передает 100 в качестве аргумента. Внутри метода square() параметр i получает это значение. www.examclouds.com
  33. 33. Задание  Создать метод принимающий на вход две переменные типа int. Метод вычисляет их сумму и возвращает значение. Вызвать этот метод из метода main. www.examclouds.com
  34. 34. Переменные  Переменная - это основной элемент хранения информации в Java-программе. double d = 2.3;// Объявляет число d и инициализирует его int count = 0, min = 6;// Объявляет два целых числа count и min int max;// Объявляет число max max = 89;// Инициализирует число max www.examclouds.com
  35. 35. Правила использования переменных 1. Java - строго типизированный язык. Каждая переменная в Java имеет конкретный тип, который определяет размер и размещение её в памяти; диапазон значений, которые могут храниться в памяти; и набор операций, которые могут быть применены к переменной. 2. Необходимо объявить все переменные, прежде чем их использовать. 3. Если требуется объявить несколько переменных заданного типа, это можно сделать в виде разделенного запятыми списка имен переменных. 4. Переменная может быть инициализирована при объявлении или позже. 5. Во время выполнения программы значение переменной может изменяться. 6. Инициализирующее выражение должно возвращать значение того же самого (или совместимого) типа, что и у переменной. www.examclouds.com
  36. 36. Область и срок действия переменных 1. Две основные области действия в Java определяются классом и методом, хотя такое их разделение несколько искусственно. 2. Область действия, определяемая методом, начинается с его открывающей фигурной скобки. Если у метода имеются параметры, то они также включаются в область действия метода и действуют точно так же, как и любая другая переменная в методе. 3. Переменные, объявленные в области действия, не доступны из кода за пределами этой области. 4. Области действия могут быть вложенными. 5. Переменные создаются при входе в их область действия и уничтожаются при выходе из нее. 6. Во внутреннем блоке кода нельзя объявлять переменные с тем же именем, что и во внешней области действия. www.examclouds.com
  37. 37. Область действия переменных  public class VarDemo { String str1 = "Hello!"; String str2 = "Hi!"; public static void main(String[] args) { int x; // переменная x доступна всему коду из метода main ( ) x = 10; if (x == 10) { // начало новой области действия, int у = 20; //int x = 45; // ОШИБКА! Во внутреннем блоке кода нельзя // объявлять переменные с тем же именем, что и во внешней области действия. //обе переменные х и у доступны в этой области действия System.out.println(" x и у : " + x + " " + у); x = у * 2; } // y = 100; // ОШИБКА! переменная у недоступна // в этой области действия // переменная х доступна и эдесь System.out.println(" x равно " + x); } } www.examclouds.com
  38. 38. Объявление переменных с помощью var  В Java 10 появилась возможность объявлять локальные переменные с помощью var без указания типа. Тип выводится компилятором из присваиваемого значения. public class VarDemo2 { public static void main(String[] args) { var i = 6; var d = 7.8; var s = "some String"; System.out.println(i); System.out.println(d); System.out.println(s); } } www.examclouds.com
  39. 39. Хранение целочисленных чисел в памяти Прямой код Дополнительный код Положительные числа Отрицательные числа 0 0001101 – положительное число 1 0001101 – отрицательное число www.examclouds.com
  40. 40. Перевод отрицательного числа в дополнительный код  Для перевода отрицательного числа в дополнительный код используется следующий алгоритм:  Все разряды числа (кроме первого разряда) инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например: 1 0001100 -> 1 1110011.  Далее следует прибавить единицу к получившемуся инверсией числу: 1 1110011 + 1 = 1 1110100 www.examclouds.com
  41. 41. Преобразование примитивных типов www.examclouds.com
  42. 42. Автоматическое преобразование www.examclouds.com
  43. 43. Приведение типов www.examclouds.com
  44. 44. Автоматическое преобразование Для автоматического преобразования типа должно выполняться два условия: •оба типа должны быть совместимы •длина целевого типа должна быть больше длины исходного типа Сплошные линии обозначают преобразования, выполняемые без потери данных. Штриховые линии говорят о том, что при преобразовании может произойти потеря точности. www.examclouds.com
  45. 45. Приведение типов  При преобразования значений с плавающей точкой в целые числа дробная часть значения с плавающей точкой отбрасывается: double d = 3.89; int a = (int) d; //Результат будет 3  При приведении более емкого целого типа к менее емкому старшие биты просто отбрасываются. int i = 323; byte b = (byte) i;//Результат будет 67  При приведении более емкого значения с плавающей точкой в целое число происходит усечение и отбрасывание старших битов: double d = 389889877779.89; short s = (short) d; //Результат будет -1 www.examclouds.com
  46. 46. Автоматическое продвижение типов в выражениях В языке Java действуют следующие правила: 1. Если один операнд имеет тип double, другой тоже преобразуется к типу double. 2. Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float. 3. Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long. 4. Иначе оба операнда преобразуются к типу int. 5. В выражениях совмещенного присваивания (+=,-=,*=,/=) нет необходимости делать приведение.. Пример: byte b1 = 1; byte b2 = 2 * b1; //Ошибка компиляции int i1 = 2 * b1; b2 *= 2; // сработает неявное приведение типов в совмещенном //выражении присваивания. www.examclouds.com
  47. 47. Задание Переписать код таким образом, чтобы он компилировался. public class IntegerDemo1{ public static void main(String[] args) { byte b1 = 50, b2 = -99; short k = b1 + b2; //ошибка компиляции System.out.println("k=" + k); } } www.examclouds.com
  48. 48. Пример  public class IntegerDemo2{ public static void main(String[] args) { byte b1 = 50, b2 = -99; b1 += b2; System.out.println("b1=" + b1); } } www.examclouds.com
  49. 49. Консольный ввод/вывод в Java  Стандартный поток вывода (дисплей) в Java представлен объектом System.out.  Стандартный поток ввода (клавиатура) в Java представлен объектом System.in. www.examclouds.com
  50. 50. Чтение символов из потока System.in public class SystemInDemo { public static void main(String[] args) throws IOException { int x = System.in.read(); char c = (char) x; System.out.println("Код символа: " + c + " = " + x); } } www.examclouds.com
  51. 51. Класс Scanner  Класс Scanner используется для ввода данных.  Этот класс находится в пакете java.util, поэтому его надо импортировать:  import java.util.Scanner; www.examclouds.com
  52. 52. Методы класса Scanner 1. hasNextInt() - возвращает true если с потока ввода можно считать целое число. 2. nextInt() - считывает целое число из потока ввода. 3. hasNextDouble() - проверяет, можно ли считать с потока ввода вещественное число типа double. 4. nextDouble() - считывает вещественное число из потока ввода. 5. nextLine() - позволяет считывать целую последовательность символов, т.е. строку. 6. hasNext() - проверяет остались ли в потоке ввода какие-то символы. www.examclouds.com
  53. 53. Класс Scanner import java.util.Scanner; public class ScannerDemo1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Введите целое число: "); if (scanner.hasNextInt()) { int i = scanner.nextInt(); System.out.println(i); } else { System.out.println("Вы ввели не целое число"); } } } www.examclouds.com
  54. 54. Класс Scanner import java.util.Scanner; public class ScannerDemo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // если ввести букву s, // то случится ошибка во время исполнения double i = scanner.nextDouble(); System.out.println(i); } } www.examclouds.com
  55. 55. Класс Scanner  public class ScannerDemo3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s1, s2; s1 = scanner.nextLine(); s2 = scanner.nextLine(); System.out.println(s1 + s2); } } www.examclouds.com
  56. 56. Лекции, задания, видео, тесты и вопросы на:  https://www.examclouds.com/java/java-core- russian/leksika-java Подписывайтесь на страницу:  https://www.facebook.com/Examclouds  Подписывайтесь на канал https://www.youtube.com/c/tatyanamilkina www.examclouds.com

×