Кофе-брейк #138. Советы и рекомендации по программированию на Java. Как использовать оператор Switch в Java

Статья из группы Random

Советы и рекомендации по программированию на Java

Источник: Upstack Java — один из наиболее распространенных языков программирования. Вы можете найти Java везде, будь-то приложения Windows, веб-приложения, мобильные устройства, сети или бытовая электроника. Более 3 миллиардов устройств используют Java и более 9 миллионов разработчиков пишут код на Java. Однако для эффективной работы на этом языке важно усвоить несколько советов и приемов. Это позволит сделать процесс программирования более понятным. Кофе-брейк #138. Советы и рекомендации по программированию на Java. Как использовать оператор Switch в Java - 1

Сборка и развертывание

При создании приложений вы можете ускорить работу с помощью инструментов сборки. Как Java-разработчик, вы должны быть знакомы с такими инструментами, как Ant, Maven и Gradle. Maven — самый популярный среди них. Он позволяет загружать удаленные зависимости и автоматически выполнять ручные задачи, которые часто требуются для развертывания, такие как копирование файлов, очистка кэша и внедрение свойств.

Знайте разницу между Array и ArrayList

Разработчикам часто бывает трудно решить, использовать структуру данных типа Array или ArrayList. Оба имеют несколько характеристик и должны использоваться в разных ситуациях. Массивы имеют фиксированный размер, а ArrayList имеет переменный размер. Изменение элементов в ArrayList намного проще, чем изменение массива.

Интерфейс лучше, чем абстрактный класс

В Java нет множественного наследования, но пользовательский интерфейс упрощает реализацию чего-то вроде множественного наследования без использования расширенного ключевого слова. Но если что-то пойдет не так, как планировалось, то вам понадобится интерфейс. Абстрактный класс не дает возможности иметь несколько режимов, но у них они доступны в абстрактных методах.

Модульное и интеграционное тестирование

Один из способов проверить точность ведения журналов и поведение исходного кода — выполнение модульных тестов. Тесты позволяют выявлять программные ошибки, возникшие в результате недавних изменений исходного кода. Покрытие кода тестами полезно, если вы хотите продолжить реализацию функций без выполнения большого количества ручных тестов. Некоторыми из технологий, поддерживающих модульные и интеграционные тесты, являются Junit, TestNG, AspectJ, AssertJ, Mockito и PowerMock.

Конкатенация строк

Первое, о чем вы подумаете, увидев String Concatenate, — это объединение строк с помощью оператора +. Но знаете ли вы, что это не лучший и не единственный способ? Есть четыре варианта, как сделать это.
  • Используйте оператор +. Это самый простой способ объединения нескольких строк, но он использует дополнительную память и снижает скорость работы вашей программы, особенно при работе с несколькими строками в цикле. Правда, это не означает, что вы должны полностью избегать этого метода. Вы по-прежнему можете использовать его для объединения строк в один оператор.

  • Метод concat(). Это редко используемый метод, но он дает более высокую производительность, чем при использовании оператора +”. Правда, он гораздо медленнее.

  • Использование StringBuffer. Здесь вы получите еще более высокую производительность, чем при использовании двух вышеперечисленных методов. StringBuffer синхронизирован для многопоточных операций, что делает этот метод потокобезопасным. Но не так быстро, как со StringBuilder, поскольку тут синхронный подход.

  • Метод добавления класса StringBuilder. Это то же самое, что и StringBuffer, однако в StringBuilder отсутствует синхронизация для многопоточных операций. Если вы создаете цикл с несколькими строками, то StringBuilder — лучший выбор.

Как избежать утечек памяти с помощью простых трюков

Ухудшение производительности программного обеспечения обычно происходит из-за утечек памяти. Поскольку Java автоматизирует управление памятью, у разработчиков практически нет над ним контроля. Тем не менее, существуют некоторые стандартные процедуры, которые можно использовать для защиты от утечек памяти.
  • Убедитесь, что соединения с базой данных регулярно прерываются после выполнения запроса.
  • Старайтесь всегда использовать блок finally.
  • Инстансы в статических таблицах должны быть отсоединены.
  • Храните случаи обращения в статических таблицах.

Избегайте BigDecimal и BigInteger

Вы можете выбрать BigDecimal и BigInteger как вариант для точного представления чисел. Если вы хотите использовать числа с плавающей запятой или имеете дело с финансами, где требуется точность, вам может подойти BigDecimal. Но это потребует больше памяти, а алгоритм будет чуть сложнее в использовании, что в итоге значительно замедляет все вычисления. Поэтому настоятельно рекомендуется избегать BigDecimal и BigInteger и использовать их только тогда, когда нет другого способа.

Оптимизируйте свой код с помощью профилировщиков

Написать и скомпилировать код — недостаточно для достижения желаемого результата. Нам нужно написать код с максимально возможной производительностью. Лучший способ сделать это — проанализировать, что происходит за кодом: выделение памяти; области, требующие улучшения; преимущества одного стиля кодирования по сравнению с другим. Лучшим инструментом для этого является Java Profiler. Java Profiler — это инструмент для мониторинга и работы с байт-кодом Java на уровне JVM. С помощью профилировщиков вы можете определить производительность, использование памяти, утечки памяти и так далее. Так вы легко узнаете, что нужно изменить, скорректировать или удалить в вашей программе. Сейчас доступно несколько профилировщиков, таких как JProfiler, XRebel и New Relic. У каждого из них есть свои особенности, лучше всего подходящие для определенных аспектов снижения производительности. Поэтому профилировщик нужно выбирать на основе требуемого уровня анализа. Вы можете комбинировать работу с несколькими профилировщиками, чтобы получить наилучшие результаты.

Как использовать оператор Switch в Java

Источник: FreeCodeCamp Кофе-брейк #138. Советы и рекомендации по программированию на Java. Как использовать оператор Switch в Java - 2Оператор Switch используется в Java для выполнения определенного блока кода при выполнении заданного условия. Синтаксис оператора Switch выглядит так:

switch(expression) {
  case 1:
    // code block
    break;
  case 2:
    // code block
    break;
    case 3:
    // code block
    break;
  default:
    // code block
}
Как можно увидеть выше, expression, заключенный в круглые скобки оператора switch, сравнивается с каждым case. Когда expression совпадает с case, выполняется соответствующий блок кода в case. Если все case не соответствуют expression, то выполняется блок кода, определенный под ключевым словом default. Ключевое слово break используется для завершения кода всякий раз, когда выполняется определенное условие (если expression совпадает с case). Давайте взглянем на несколько примеров кода.

class CurrentMonth {
    public static void main(String[] args) {
        
        int month = 6;
        
        switch (month) {
          case 1:
            System.out.println("January");
            break;
          case 2:
            System.out.println("February");
            break;
          case 3:
            System.out.println("March");
            break;
          case 4:
            System.out.println("April");
            break;
          case 5:
            System.out.println("May");
            break;
          case 6:
            System.out.println("June");
            break;
          case 7:
            System.out.println("July");
            break;
          case 8:
            System.out.println("August");
            break;
          case 9:
            System.out.println("September");
            break;
          case 10:
            System.out.println("October");
            break;
          case 11:
            System.out.println("November");
            break;
          case 12:
            System.out.println("December");
            break;
            
            // June
        }
    }
}
В показанном выше коде в итоге выводится June. Не беспокойтесь, что код немного громоздкий. Вот разбивка, которая поможет понять: Мы создали целое число с именем month и присвоили ему значение 6: int month = 6;. Затем мы создали оператор switch и передали переменную month в качестве параметра: switch (month){...}. Значение month, которое действует как expression для определения состояния switch, будет сравниваться с каждым значением case в коде. У нас есть значения case с 1 по 12. Значение month равно 6, поэтому оно соответствует case 6. Следовательно, в шестом case был выполнен код. Все остальные блоки кода игнорировались. Вот еще один, более простой пример:

class Username {
    public static void main(String[] args) {
        
        String username = "John";
        
        switch (username) {
          case "Doe":
            System.out.println("Username is Doe");
            break;
          case "John":
            System.out.println("Username is John");
            break;
          case "Jane":
            System.out.println("Username is Jane");
            break;
            // Username is John
        }
    }
}
В этом примере мы создали строку с именем username, которая имеет значение John”. Username передается как expression для в операторе switch. Затем мы создали три выражения case — “Doe”, “"John” и “Jane”. Из трех классов только один соответствует значению username — “John”. В результате выполнен блок кода case под именем “John”.

Как использовать ключевое слово Default в операторе Switch

В примерах из предыдущего раздела наш код выполнялся, потому что один из case совпал с expression. В этом разделе вы увидите, как использовать ключевое слово default. Вы можете использовать его как запасной вариант в ситуациях, когда ни один из case не соответствует expression. Вот пример кода:

class Username {
    public static void main(String[] args) {
        
        String username = "Ihechikara";
        
        switch (username) {
          case "Doe":
            System.out.println("Username is Doe");
            break;
          case "John":
            System.out.println("Username is John");
            break;
          case "Jane":
            System.out.println("Username is Jane");
            break;
          default:
            System.out.println("Username not found!");
            // Username not found!
        }
    }
}
Переменная username здесь имеет значение “Ihechikara”. Блок кода для ключевого слова default будет выполнен, поскольку ни один из созданных case не соответствует значению username.

Заключение

В этой статье мы узнали, как использовать оператор switch в Java. Мы также рассмотрели варианты применения ключевых слов expression, case и default в операторе switch на примерах кода.
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Voler Уровень 51
24 июня 2022
"Метод concat(). Это редко используемый метод, но он дает более высокую производительность, чем при использовании оператора +. Правда, он гораздо медленнее." Автор, Вы вообще читаете что пишете? Что значит "имеет высокую производительность, но гораздо медленнее"? Тогда уж пишите гораздо медленнее чего...