среда, 1 августа 2012 г.

Java Core - I

    Это - "виртуальный" курс. В действительности он никогда не читался и читаться не будет. Это подборка материала, который предшествует "реальному" читаемому курсу Java Core - II.

Типы данных

    1. Примитивы
        1.1 Целочисленные примитивы (byte, short, char, int, long)
            1.1.0 two's complement binary form
            1.1.1 Переполнение int/long по сложению/умножению
            1.1.2 Выход по арифметическим операциям над byte/char/short в int
            1.1.3 Деление на 0
            1.1.4 Остаток от деления, целочисленное деление (+отрицательные)
            1.1.5 Битовые операции
            1.1.6 Префиксный/постфиксный инкремент/декремент (префиксная, инфиксная, постфиксная запись), стековая машина
            1.1.7 Расширение: BigInteger
        1.2 Примитивы с плавающей точкой (float, double)
            1.2.1 Переполнение float/double по сложению/умножению
            1.2.2 "Эзотерические" значения: NaN, PosInf, NegInf, +0, -0
            1.2.3 strictfp
            1.2.4 Расширение: BigDecimal
        1.3 Boolean
            1.3.1 true, false (?null)
            1.3.2 BitSet

        1.4 Арифметика с фиксированной точкой


    2. Обертки
        2.1 Для коллекций
        2.2 Наличие null

        2.3 Boxing/unboxing
            2.1.1 Кэширование

    3. Массивы
        3.1 Поле length, размещение в памяти, массивы массивов
        3.2 Утилиты: arraycopy, toString(byte[])


    4. Строки
        8.1 Типичные методы
        8.2 Немутабельность, причины
        8.3 Как устроена (эволюция)
        8.4 Кодировки



Управляющие конструкции


    4. Условные выражения (&, |, &&, ||, ~, !, ^)

    5. switch

    6. Циклы
        5.1 for
        5.2 while
        5.3 do..while
        5.4 break, continue
        5.5 выход по метке, goto


    7. Рекурсия
        7.1 Локальные переменные
        7.2 Порядок вычисления аргументов




Алгоритмы и структуры данных


    100. Массивы, циклы
        - сортировки
        - бинарные поиск
        - бинарная куча

    100. Массивы, рекурсия
        - сортировки

    100. Динамические структуры данных
        - односвязные список
        - двусвязные список
        - бинарное дерево





-------------------------------------------------Целочисленные примитивы (byte, short, char, int, long)



    public static int signum(int i) {
        return (i >> 31) | (-i >>> 31);
    }

    public static int rotateRight(int i, int distance) {
        return (i >>> distance) | (i << -distance);
    }

    public static int rotateLeft(int i, int distance) {
        return (i << distance) | (i >>> -distance);
    }

    public static int lowestOneBit(int i) {
        return i & -i;
    }
    parseInt()
    toString()