• ,

Часто задаваемые на собеседованиях вопросы по классам коллекциям в Java (Часть 2).

  • ,

level07.lesson12.bonus03

Подскажите пожалуйста в чём ошибка?
Программа не проходит тестирование:

package com.javarush.test.level07.lesson12.bonus03;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/* Задача по алгоритмам
Задача: Написать программу, которая вводит с клавиатуры 20 чисел и выводит их в убывающем порядке.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int[] array = new int[20];
        for (int i = 0; i < 20; i++)
        {
            array[i] = Integer.parseInt(reader.readLine());
        }

        sort(array);

        for (int x : array)
        {
            System.out.println(x);
        }
    }

    public static void sort(int[] array)
    {
        int[] arrTMP = new int[array.length];

        for (int i = 0; i < array.length; )
        {
            arrTMP[i] = array[array.length - i - 1];
            i++;
        }

        for (int i = 0; i < array.length; )
        {
            array[i] = arrTMP[i];
            i++;
        }
    }
}

Автоупаковка и распаковка в Java.

В этой статье мы рассмотрим такую функцию в Java как автоупаковка/распаковка.
Автоупаковка и распаковка это функция преобразования примитивных типов в объектные и наоборот.

Весь процесс выполняется автоматически средой выполнения Java (JRE). Но следует быть осторожным при реализации этой функции, т.к. Она может влиять на производительность вашей программы.
  • ,

Мини гид по реализации интерфейса Serializable в Java (Часть 1).

Все мы знаем, что интерфейс Serializable нужен для сериализации классов. Также этот интерфейс рекомендует вам использовать поле serialVersionUID. Но знаете ли вы, что даже если вы все сделаете согласно рекомендациям, ваш код все равно может не работать? Давайте определим дальнейшие изменения в ваших классах которые не сломают совместимость с предыдущими версиями, и те которые ее точно сломают.
  • ,

Мини гид по реализации интерфейса Serializable в Java (Часть 2).

Еще несколько вещей которые нужно помнить
  1. Используйте @serial тэг чтобы обозначать сериализуемые поля.
  2. Расширение .ser обычно используется для файлов с сериализованными объектами.
  3. Статические и несериализуемые поля не сериализуются
  4. Расширяемые классы не должны быть сериализуемыми, кроме как при необходимости.
  5. Внутренние классы редко, если вообще, могут быть сериализуемыми.
  6. Классы контейнеры должны обычно следовать стилю Hashtable который реализует интерфейс Serializable с парами ключ-значение в противоположность большим структурам данных.
  • ,

Сравнение производительности разных способов использования цикла for в Java.

Цикл for это оператор управления порядком вычислений очень часто используемый в таких языках программирования как Java. Я не собираюсь описывать основы цикла for так как это выходит за рамки статьи и большинство из нас уже хорошо знают их.
В этой статье я перечислю различные способы использования цикла for в повседневном программировании, а затем я сравню их производительность при одинаковых входных данных.

Разница в Java между паттерном синглтон и статическими классами.

Эта статья, о сравнении паттерна синглтон со статическим классом (такой класс, в котором все методы — статические) поднимает интересные вопросы, пропущенные автором в записи блога «Вопросы для интервью о паттерне синглтон в Java». Так как оба, и паттерн синглтон, и статический класс обеспечивают хороший доступ, а также имеют общие черты, например оба могут быть использованы без создания объекта и оба создают только один экземпляр. Это очень похоже на то, будто они оба предназначены для решения одной и той же задачи. Из-за высокого уровня сходства, интервьюеры обычно задают вопрос «Почему вы чаще используете паттерн синглтон вместо статических методов?» или «Вы можете заменить паттерн синглтон статическим классом, и какая вообще между ними разница?» Для ответа на данный вопрос, важно помнить фундаментальные различия между этими двумя подходами, первый дает нам Объект, для которого позже просто предоставляет статичные методы. Так как объект всегда емче метода, это может помочь вам разобраться, когда использовать паттерн синглтон, а когда статические методы.