Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- УРОК 3 - операции
- Интегральный тип vs вещественный тип (не целое)
- Если хотя бы один из членов имеет вещественный тип - операция будет вещественной, результат будет вещественный. Нужно приведение типов.
- int x = 5;
- int y = 2;
- float f = x/y; // f=2.0, вещественное число
- float f = (float) x/y; // f = 2.5
- перед выполнением операции, все переменные приводятся к единному типу (наиболее общему).
- Результат также будет иметь вид самого широкого оператора (lonf + float -> float)
- Все байтовые и short переменные приводятся к int
- byte b = 1;
- b = (byte)(b+b);
- double d = 2.5 % 1.2; //d=0.10000000000009 вещественные типы являются приблизительными типами
- Инкремент и Декремент ++ --
- ++i - префиксная форма
- i++ - постфиксная форма
- Операции сравнения
- >
- <
- >=
- <=
- == строго равно
- != строго не равно
- 1. результат всегда boolen
- 2. операнды всегда приводятся к одному типу(более широкого типа), если переменные разных типов
- 3. для вещественных типов не рекомендуется использовать сравнения с равенством. Может быть некорректный результат
- побитовые операции
- 0011 3
- 0101 5
- Операции логическое И ИЛИ Инверсия Сложение
- Чтобы перевести в верхний регистр 1 символ, нужно изменить 5й бит, нужно умножить на 1111011111
- public static char toUpperCase(char c) {
- return (char)(~32 & c);
- }
- public static char toLowerCase(char c) {
- return (char)(32 | c);
- }
- public static char invertChar(char c) {
- return (char)(32 ^ c);
- }
- Операции сдвига
- << эквивалентно умножению на 2^n
- >> операция сохраняет знак числа. Целочисленное деление на 2^n
- >>> не сохраняет знак числа. Слева всегда выставляется 0
- A >> n(на сколько бит сдвигаем)
- int a = 3;
- 011
- a<<1
- 110
- public void b(int x) {
- System.out.println(x+ " >> 1 --> "+ (x>>1));
- System.out.println(x+ " >>> 1 --> "+ (x>>>1));
- System.out.println(x+ " << 1 --> "+ (x<<1));
- }
- Логические операции
- OR (+ таблица)
- AND (+ таблица)
- XOR (+ таблица)
- NOT (+ таблица)
- ( ) - повышение приоритета
- [ ] - получение значения из массива a[i]=
- ссылка instanceof тип -> boolean (проверяет, можно ли первый объект привести ко второму типу)
- [A] [E]
- [B]
- [C],[D]
- A a = new B(); //забито
- A = A+B; ->> A+=B;
- тернарная операция?
- x = условие?выражение1(ifTrue):выражение2(ifFales)
- int[][] a = { {1,2,3},
- {1,4,3,5},
- {6,7,1,2,1} ,
- null,
- { }};
- УРОК 4 15.11.2018
- Лексемы и национальный алфавит
- литеральные константы символьного типа - все относятся к char
- char c = 'A';
- цикломатическая оценка кода (цикломатическая сложность) - количество операторов и количество переходов между ними
- УРОК 5 Аннотации
- 1. Возможность обеспечить дополнительные условия в среде выполнения программы или обеспечить новые действия в среде выполнения кода
- спецификатор + @interface + имя аннотации + {тело аннотации - методы доступа к статичским константам}
- ограничения методов:
- 1. Все методы имеют пустой список параметров
- 2. Методы не могут выбрасывать исключения
- 3. Тип возвращаемого значения не может быть произвольным
- Типы которые можно использовать:
- 1. Все примитивные типы и их классы-оболочки
- 2. Массивы этих типов
- 3. Enum
- 4. Класс String
- 5. Метакласс Class
- @retention - определяет класс хранения аннотации: source, class, runtime
- =====================
- параметризованные типы / generic types
- public class V<T> {
- private T value;
- public V (T value){
- this.value = value;
- }
- public T getValue() {
- return value;
- }
- public void setValut (T value) {
- this.value = value;
- }
- }
- Функциональный интерфейс - содержит 1 абстрактный метод
- lambda:
- (Список параметров) -> {оператор}
- public static void main(String[] args) {
- System.out.println("Start");
- Runnable r = () -> {
- System.out.println("Hello Java");
- };
- Thread[] pool = new Thread[3];
- for (Thread t : pool){
- t = new Thread(r);
- t.start();
- }
- System.out.println("End");
- }
- тип имя (список параметров) -> {оператор}
- внутри лямбды могут использоваться либо поля класса, локальные переменные или константы метода.
- lambda-выражения не являются потоко-безопасными. //Нужно быть аккуратным при многопоточности!
- Assert
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement