Advertisement
Guest User

java314

a guest
Nov 16th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.56 KB | None | 0 0
  1. УРОК 3 - операции
  2.  
  3. Интегральный тип vs вещественный тип (не целое)
  4.  
  5. Если хотя бы один из членов имеет вещественный тип - операция будет вещественной, результат будет вещественный. Нужно приведение типов.
  6.  
  7. int x = 5;
  8. int y = 2;
  9. float f = x/y; // f=2.0, вещественное число
  10. float f = (float) x/y; // f = 2.5
  11.  
  12. перед выполнением операции, все переменные приводятся к единному типу (наиболее общему).
  13. Результат также будет иметь вид самого широкого оператора (lonf + float -> float)
  14.  
  15. Все байтовые и short переменные приводятся к int
  16.  
  17.  byte b = 1;
  18.  b = (byte)(b+b);
  19.  
  20. double d = 2.5 % 1.2; //d=0.10000000000009 вещественные типы являются приблизительными типами
  21.  
  22.  
  23. Инкремент и Декремент ++ --
  24. ++i - префиксная форма
  25. i++ - постфиксная форма
  26.  
  27. Операции сравнения
  28. >
  29. <
  30. >=
  31. <=
  32. == строго равно
  33. != строго не равно
  34.  
  35. 1. результат всегда boolen
  36. 2. операнды всегда приводятся к одному типу(более широкого типа), если переменные разных типов
  37. 3. для вещественных типов не рекомендуется использовать сравнения с равенством. Может быть некорректный результат
  38.  
  39.  
  40. побитовые операции
  41.  
  42. 0011 3
  43. 0101 5
  44.  
  45. Операции логическое И ИЛИ Инверсия Сложение
  46.  
  47. Чтобы перевести в верхний регистр 1 символ, нужно изменить 5й бит, нужно умножить на 1111011111
  48.  
  49.     public static char toUpperCase(char c) {
  50.         return (char)(~32 & c);        
  51.     }
  52.  
  53.     public static char toLowerCase(char c) {
  54.         return (char)(32 | c);        
  55.     }
  56.  
  57.     public static char invertChar(char c) {
  58.         return (char)(32 ^ c);        
  59.     }
  60.    
  61.    
  62.    
  63.    
  64. Операции сдвига
  65.  
  66. << эквивалентно умножению на 2^n
  67. >> операция сохраняет знак числа. Целочисленное деление на 2^n
  68. >>> не сохраняет знак числа. Слева всегда выставляется 0
  69.  
  70. A >> n(на сколько бит сдвигаем)
  71.  
  72. int a = 3;
  73.  
  74. 011
  75. a<<1
  76. 110
  77.  
  78.     public void b(int x) {
  79.         System.out.println(x+ " >>  1 --> "+ (x>>1));
  80.         System.out.println(x+ " >>> 1 --> "+ (x>>>1));
  81.         System.out.println(x+ " <<  1 --> "+ (x<<1));
  82.     }
  83.    
  84.    
  85.    
  86. Логические операции
  87.  
  88. OR (+ таблица)
  89. AND (+ таблица)
  90. XOR (+ таблица)
  91. NOT (+ таблица)
  92.  
  93.  
  94. (  ) - повышение приоритета
  95. [  ] - получение значения из массива a[i]=
  96.  
  97.  
  98. ссылка instanceof тип -> boolean (проверяет, можно ли первый объект привести ко второму типу)
  99.  
  100.   [A]       [E]
  101.   [B]
  102. [C],[D]
  103.  
  104. A a = new B(); //забито
  105.  
  106. A = A+B; ->> A+=B;
  107.  
  108.  
  109. тернарная операция?
  110. x = условие?выражение1(ifTrue):выражение2(ifFales)
  111.  
  112.  
  113.     int[][] a =  {  {1,2,3},
  114.                    {1,4,3,5},
  115.                    {6,7,1,2,1} ,
  116.                    null,
  117.                    { }};
  118.  
  119.    
  120.                    
  121.                    
  122.                    
  123.  
  124.                    
  125. УРОК 4 15.11.2018
  126. Лексемы и национальный алфавит
  127.  
  128. литеральные константы символьного типа - все относятся к char
  129. char c = 'A';
  130.  
  131. цикломатическая оценка кода (цикломатическая сложность) - количество операторов и количество переходов между ними
  132.  
  133.  
  134.  
  135.  
  136. УРОК 5 Аннотации
  137. 1. Возможность обеспечить дополнительные условия в среде выполнения программы или обеспечить новые действия в среде выполнения кода
  138.  
  139. спецификатор + @interface + имя аннотации + {тело аннотации - методы доступа к статичским константам}
  140. ограничения методов:
  141.     1. Все методы имеют пустой список параметров
  142.     2. Методы не могут выбрасывать исключения
  143.     3. Тип возвращаемого значения не может быть произвольным
  144.    
  145. Типы которые можно использовать:
  146.     1. Все примитивные типы и их классы-оболочки
  147.     2. Массивы этих типов
  148.     3. Enum
  149.     4. Класс String
  150.     5. Метакласс Class
  151.  
  152. @retention - определяет класс хранения аннотации: source, class, runtime
  153.  
  154.  
  155. =====================
  156. параметризованные типы / generic types
  157.  
  158. public class V<T> {
  159.  
  160.     private T value;
  161.    
  162.     public V (T value){
  163.         this.value = value;          
  164.     }
  165.    
  166.     public T getValue() {
  167.         return value;
  168.     }
  169.    
  170.     public void setValut (T value) {
  171.         this.value = value;
  172.     }
  173.    
  174. }
  175.  
  176.  
  177. Функциональный интерфейс - содержит 1 абстрактный метод
  178.  
  179. lambda:
  180. (Список параметров) -> {оператор}
  181.     public static void main(String[] args) {
  182.         System.out.println("Start");
  183.  
  184.         Runnable r = () -> {
  185.             System.out.println("Hello Java");
  186.         };
  187.  
  188.         Thread[] pool = new Thread[3];
  189.        
  190.         for (Thread t : pool){
  191.         t = new Thread(r);
  192.         t.start();            
  193.         }
  194.        
  195.         System.out.println("End");
  196.        
  197.     }
  198.  
  199. тип имя (список параметров) -> {оператор}
  200. внутри лямбды могут использоваться либо поля класса, локальные переменные или константы метода.
  201.  
  202. lambda-выражения не являются потоко-безопасными. //Нужно быть аккуратным при многопоточности!
  203.  
  204. Assert
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement