Java — это всем известный и очень продуманный язык программирования с широким спектром применения: его можно как изучать за школьной партой, так и использовать для запуска масштабных коммерческих приложений. Главное его преимущество – он кросс-платформенный: после создания программы на Java вы можете запускать ее в разных ОС, включая серверы (Linux/Unix), настольные (Windows, macOS, Linux) и мобильные ОС. (Андроид, iOS).
У Java высокая производительность, поскольку он выполняет скомпилированный (то есть машинно-оптимизированный) код. Для разработчиков это значит, что его исходный код нужно скомпилировать, прежде чем запустить. Если вы знакомы с PHP и Python, которые позволяют выполнять исходный код напрямую, то компиляция станет для вас новым шагом в процессе разработки.
В этом уроке мы создадим программу «Hello, World!». С неё традиционно начинается изучение Java . Такая простая программа дает возможность новому программисту почувствовать, что что-то да заработало. Создав «Hello, World», вы начнете изучать базовый синтаксис Java, а также процесс компиляции и выполнения программы. Когда мы закончим, вы сможете писать и запускать базовый код Java.
Крутая Java программа за 10 минут! Изучение JavaFx (Java GUI) на практике
Требования
Для этого урока нам понадобится:
- Установленная Java (версия 11 или выше). Для Ubuntu и Debian выполните шаги для Варианта 1 в нашем руководстве Как установить Java. Для других операционных систем, включая Mac и Windows, см. другие решения для установки Java .
- Компилятор Java Development Kit (JDK). Чтобы скомпилировать исходный код, мы будем использовать компилятор по умолчанию, который называется javac. Вы можете скомпилировать свой исходный код либо на своем локальном компьютере, либо на удаленном сервере в облаке.
- (Необязательно) Среда выполнения Java (JRE), которая будет выполнять скомпилированный код. JRE является частью JDK, поэтому устанавливать ее дополнительно не нужно. Но можно установить JRE отдельно. Это полезно, если вы собираетесь запускать свой код на удаленном сервере, где его небезопасно компилировать. Вы можете загрузить и установить JRE через встроенный менеджер пакетов. Для Ubuntu и Debian используйте sudo apt install openjdk-11-jre. Для других дистрибутивов используйте соответствующие менеджеры пакетов, выполните поиск по ключевому слову jre и выберите версию 11 или выше.
Написание и выполнение программы «Hello, World!» на Java
Для многих людей их первая Java-программа часто оказывается и последней, поскольку даже самый простой код кажется слишком сложным и нужно изучить много нового, чтобы полностью его понять. Мы начнем с написания кода и его запуска, а затем посмотрим, как он работает.
Для начала создайте новый каталог hello-world, в который вы поместите свой код. Чтобы создать каталог проекта и перейти в него, выполните в терминале следующие команды:
mkdir hello-world
cd hello-world
В nano или в любом другом текстовом редакторе, создайте файл с Hello.java. Для nano используйте следующую команду:
Java для начинающих // 1 часть // Типы данных, переменные, ввод и вывод
Добавьте в файл код:
public class Hello public static void main(String[] args) System.out.println(«Hello, World!»); > >
Эта программа выдаст сообщение Hello, World! в консоли. Имя файла (в данном случае Hello с расширением .java) должно совпадать с именем public class в исходном коде, то есть Hello. Соответствие имени файла и public class в исходном коде является соглашением Java. (Об этом нужно помнить, потому что, если вы найдете какой-то полезный код, вы будете знать, как назвать файл исходного кода Java.)
Сохраните и закройте файл. В nano нажмите CTRL+X для выхода, Y для сохранения, и ENTER, чтобы подтвердить имя и закрыть файл. В терминале запустите javac из каталога, где находится файл Hello.java, чтобы код скомпилировался:
Команда javac скомпилирует исходный код Java с учетом имени файла.
Наконец, запустите программу с помощью java следующим образом:
Чтобы выполнить скомпилированный код, вы должны запустить java, за которым следует название класса (в нашем примере это Hello). Нельзя использовать расширение файла, такое как .java или .class, при выполнении кода.
Итог будет выглядеть так:
Hello, World!
Ваша программа запущена! Мы создали базовую программу Java, скомпилировали и выполнили ее.
Работа программы «Hello, World!»
Если вы привыкли писать код на Python или JavaScript, вы даже на примере простой программы увидите, что Java отличается. Любая программа на Java нуждается как минимум в двух вещах:
- Класс кода.
- Основной метод внутри класса.
Вам нужен класс, потому что Java является объектно-ориентированным языком , и весь код должен быть частью класса. Классы — это функционально связанный код. Обычно он не работает сам по себе, а служит шаблоном, из которого создается объект. Объект — это конкретный экземпляр класса, который можно использовать коде. Объекты имеют свойства и могут действовать, когда вы активируете их методы.
В вашей программе это класс Hello:
public class Hello public static void main(String[] args) System.out.println(«Hello, World!»); > >
Первая строка кода обозначает начало класса. Классы всегда начинаются с ключа class, за которым следует их название. В данном случае имя класса — Hello, и оно совпадает с именем файла, расширение которого – .java. Затем в конце фрагмента кода есть открывающая фигурная скобка (<) и закрывающая фигурная скобка (>), внутри которых вы пишете код класса.
У класса есть модификатор доступа (он есть и у методов). В данном случае это public , а значит, наш класс полностью доступен.
Чтобы упростить чтение кода, лучше всего использовать только один класс для каждого файла. В целом никаких ограничений нет, и вы можете иметь неограниченное количество классов в одном файле. Но есть один нюанс: в рамках одного файла только один класс может быть public, и он должен иметь и такое же имя с учетом регистра.
В дополнение к классу у программы также есть метод main. Main — это начальная точка выполнения для класса, а в нашем руководстве — для всей программы. У него специфический синтаксис: public static void main(String[] args):
public class Hello public static void main(String[] args) System.out.println(«Hello, World!»); > >
public – это модификатор доступа, который указывает, что на вызов метода нет ограничений.
static — это специальное ключевое слово, обозначающее, что метод (как в данном случае) или свойство не требуют явного создания нового объекта, чтобы вы могли его вызвать. Это слово имеет широкое применение; в частности оно может разрешить ситуации типа “курица или яйцо?”, при возникновении которых один из фрагментов кода должен иметь возможность породить первый объект программы, при этом не будучи частью самого объекта.
void — тип возвращаемого значения. Это значит, что метод не возвращает никакого значения . В этом случае код будет выводить сообщения на экран и, таким образом, напрямую выдавать вам результат выполнения. Как уже было сказано, void ничего не возвращает, но существуют и другие методы, они часто возвращают различную информацию, например буквенно-цифровые символы, целые числа или объекты.
String[] args — это параметр или ввод для main метода. Строка символов хранит буквенно-цифровую информацию. Квадратные скобки ([]) указывают, что это массив строк, а не одна строка. Имя этого массива — args. В этом случае у main() нет аргументов, но если бы они были, они бы содержались в этом массиве.
Если вы пропустите какой-либо из основных атрибутов метода, например, public, вы можете не получить синтаксическую ошибку, но код не будет работать должным образом.
Чтобы вывести текст на консоль, используете метод System.out.println():
public class Hello public static void main(String[] args) System.out.println(«Hello, World!»); > >
Метод дает компьютеру команду, и тот выполняет действие. Метод можно узнать по круглым скобкам, в которых он записывается : (). Сам метод называется println() и принимает один аргумент для отображаемого текста. System.out предшествует методу, чтобы указать, что он является частью основных функций Java (System) для вывода (out).
В этом случае мы используем метод из подпакета out, который является частью пакета System. Чтобы лучше понять, как организованы классы в Java, представьте, что иерархия классов подобна иерархии файловой системы – с родительскими папками и соответствующими зависимыми подпапками. В Java эти папки называются пакетами . Связанные классы помещаются в один пакет или подпакет в зависимости от степени детализации иерархии.
Аргументом System.out.println() является строка: «Hellom World!». Мы знаем, что это строка, потому что строки всегда заключаются в двойные кавычки. Для строк Java нельзя использовать одинарные кавычки, в отличии от других языков.
Одной из особенностей синтаксиса Java является то, что он требует ставить точку с запятой в конце каждого оператора, например, для вывода текста: System.out.println(“Hello, world!”);.
Примечание. Если вы используете IDE или текстовый редактор с поддержкой синтаксиса Java, вам не нужно обращать внимание на отсутствующие точки с запятой, поскольку эти программы автоматически позаботятся об этом, а также о других особенностях синтаксиса.
В этом разделе мы рассмотрели программу построчно, чтобы понять, как она работает. В следующем разделе вы увидите, что происходит, когда вы компилируете и запускаете программу.
Компиляция и запуск программы «Hello, World!»
Итак, давайте посмотрим, что происходит, когда вы компилируете и запускаете свою Java-программу. Для компиляции кода мы используем javac из JDK :
javac прочитает исходный код, проверит его на наличие синтаксических ошибок, оптимизирует и создаст файл по имени Hello.class. Файлы Java с расширением .class — это машинный код, который JRE может интерпретировать и запускать.
Вы можете просмотреть файл Hello.class, выполнив команду ls из каталога проекта.
Эта команда выводит список файлов в вашем текущем каталоге:
После того, как код скомпилирован, запустите его с помощью исполняемого файла java из JRE :
JRE запускает только скомпилированный код и не может выполнять код из стандартного файла. Точно так же, если вы попытаетесь прочитать скомпилированный файл .class с помощью стандартного текстового редактора, вы не сможете это сделать. Однако с помощью таких инструментов, как Java Decompiler , вы можете читать скомпилированные файлы, что может быть полезно при отладке программ, исходного кода которых у вас нет.
С помощью этой команды вы указываете исполняемому файлу JRE java обработать класс с именем Hello, который находится в файле Hello.class.
Когда Hello, World! выводится на консоль, мы можем быть уверены, что:
- у нас есть рабочая среда Java, в которой можно компилировать и выполнять код.
- Java успешно нашла код класса Hello и может получить к нему доступ.
- Поток выполнения начался с метода main(). Там был вызван метод System.out.println() со строковым аргументом Hello, World!.
- Так как другого кода нет, программа успешно завершит работу.
Вызывая java, вы запускаете тип виртуальной машины Java virtual machine (JVM).
JVM хорошо изолирована и не зависит от внешней среды, библиотек или операционной системы хостинга. JVM ведет себя почти одинаково в разных ОС, что делает Java переносимой, понятной и безопасной. В этом и отличие от других языков, например PHP, где интерпретатор PHP использует множество собственных библиотек ОС.
Поскольку для достижения такой изоляции Java запускает собственную виртуальную машину, то этот процесс потребляет много памяти. Но Java оптимизирована для эффективного управления ресурсами. Даже при потреблении ресурсов, связанных с запуском собственной виртуальной машины, Java обладает высокой производительностью для больших, сложных и долго выполняющихся программ.
Другими словами, среди доступных языков программирования можно найти и более простые и эффективные способы вывода сообщений на экран. Но при помощи Java вы сможете создавать сложные программы, совместимые с различными операционными системами.
Итоги
Поздравляем! Вы написали свою первую программу на Java.
Вы можете продолжить работу с кодом в файле Hello.java самостоятельно: к примеру, вы можете посмотреть, что произойдет, если вы измените текст или удалите точку с запятой и получите сообщение об ошибке. Обязательно компилируйте код (javac Hello.java) каждый раз, когда вы вносите изменения в файл Hello.java.
Источник: www.8host.com
Простые Программы на Java
Простые программы на java хороши для оценки навыков программирования программиста. Вы найдете вопросы, связанные с кодированием, практически в любом интервью.
Идея этих программных вопросов состоит в том, чтобы изучить мыслительный процесс кандидата. В большинстве случаев первоначальное решение неэффективно, что требует дополнительных вопросов и выяснения, может ли собеседник улучшить его еще больше или нет.
Простые Программы на Java
Вот я предоставляю 10 простых программ на Java. Они хороши для практики кодирования и могут быть использованы в интервью. Пожалуйста, попробуйте написать решение самостоятельно, прежде чем смотреть на ответ, это придаст вам больше уверенности, и вы сможете проверить, хорошо ли ваше решение или нет. Обратите внимание, что решения могут быть улучшены в дальнейшем, поэтому, если у вас есть лучший подход, пожалуйста, сообщите нам об этом в комментариях.
Переверните строку
- Проверка Null, чтобы избежать Исключения NullPointerException .
- Использование StringBuilder вместо StringBuffer для повышения производительности.
- Создание локальной переменной для длины входной строки, вместо того, чтобы иметь ее в состоянии if. Чем меньше вызовов функций, тем выше производительность.
- Можно было бы улучшить, приняв вводимые пользователем данные, а не данные статического тестирования
Ряд Фибоначчи
package com.journaldev.javaprograms; public class FibonacciSeries < public static void main(String[] args) < printFibonacciSeries(10); >public static void printFibonacciSeries(int count) < int a = 0; int b = 1; int c = 1; for (int i = 1; i > >
- Программа может быть улучшена путем ввода пользователем количества целых чисел для печати.
- Обратите внимание на использование функции System.out.print для печати чисел в одну строку, хорошая работа.
- Числа Фибоначчи начинаются с 0 или 1, вышеуказанная программа может быть расширена, чтобы принимать вводимые пользователем данные в качестве отправной точки.
- Красиво написанная простая программа, приятно видеть, что нет необходимости в рекурсии или сложном кодировании.
Проверка простых чисел
package com.journaldev.javaprograms; import java.util.Scanner; public class CheckPrimeNumber < public static void main(String[] args) < Scanner s = new Scanner(System.in); System.out.print(«Enter number to check for prime:»); int n = s.nextInt(); s.close(); checkPrime(n); >private static void checkPrime(int n) < if (n == 0 || n == 1) < System.out.println(n + » is not a prime number»); return; >if (n == 2) < System.out.println(n + » is a prime number»); >for (int i = 2; i > System.out.println(n + » is a prime number»); > >
- Приятно видеть использование класса сканера для ввода данных пользователем.
- Обратите внимание на несколько проверок if для проверки чисел, где правила отличаются, т. е. 0,1 и 2. 0 и 1 не являются простыми числами, а 2-единственное четное простое число.
- Проверка деления выполняется только до i/2 , разумно мыслит и хорошо работает.
- Метод завершится ошибкой в случае отрицательных целых чисел – либо сообщите пользователю, чтобы он ввел положительное целое число в основной метод, либо сделайте целое число положительным, а затем обработайте его.
Проверьте наличие строки палиндрома
package com.journaldev.javaprograms; import java.util.Scanner; public class PalindromeString < public static void main(String[] args) < Scanner s = new Scanner(System.in); System.out.println(«Enter String to check for Palindrome:»); String str = s.next(); s.close(); checkPalindrome(str); >private static void checkPalindrome(String str) < char[] charArray = str.toCharArray(); StringBuilder sb = new StringBuilder(); for (int i = charArray.length — 1; i >= 0; i—) < sb.append(charArray[i]); >if (sb.toString().equalsIgnoreCase(str)) System.out.println(str + » is palindrome.»); else System.out.println(str + » is not palindrome»); > >
- Создайте новую строку в обратном порядке с помощью StringBuilder, а затем проверьте, совпадает ли ее значение с исходной строкой.
- Реализацию можно улучшить, сравнив символы с обоих концов. Если длина строки равна 5, то это палиндром, если символы в и. Нет необходимости создавать отдельную строку. Попробуйте написать код для этого и опубликуйте в разделе комментариев.
Сортировка массива программно
package com.journaldev.javaprograms; import java.util.Arrays; public class JavaArraySort < public static void main(String[] args) < int[] array = ; int[] sortedArray = bubbleSortAscending(array); System.out.println(Arrays.toString(sortedArray)); > public static int[] bubbleSortAscending(int[] arr) < int temp; for(int i=0; i < arr.length-1; i++)< for(int j=1; j < arr.length-i; j++)< if(arr[j-1] >arr[j]) < temp=arr[j-1]; arr[j-1] = arr[j]; arr[j] = temp; >> //check that last index has highest value in first loop, // second last index has second last highest value and so on System.out.println(«Array after «+(i+1)+»th iteration:»+Arrays.toString(arr)); > return arr; > >
- Существует множество алгоритмов сортировки, пузырьковая сортировка проще в реализации.
- Сортировка сложна, и вы должны полагаться на методы Java API для сортировки коллекции или массива для повышения производительности, которые снова изобретают колесо.
- Также упомяните использование Сопоставимого и компаратора при сортировке, это добавит вам бонусные баллы.
Прочитайте 3 входные строки, объедините и распечатайте
Если вы читаете этот код, вы должны убедиться, что он соответствует всем пунктам, упомянутым выше. Попробуйте написать чистый и простой код, следуйте рекомендациям, соглашениям об именах методов и переменных, и у вас все получится.
Удалите все совпадающие элементы из списка
package com.journaldev.javaprograms; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class DeleteFromList < public static void main(String[] args) < Scanner scanner = new Scanner(System.in); System.out.println(«Enter comma separated list of Strings. For example ‘a,b,c,b,a'»); String input = scanner.next(); System.out.println(«Enter String to remove from the input list.»); String strToDelete = scanner.next(); scanner.close(); ListinputList = new ArrayList<>(); String[] inputStrings = input.split(«,»); for (String s : inputStrings) inputList.add(s.trim()); inputList = removeAll(inputList, strToDelete); System.out.println(«Result List wp-block-codemirror-blocks-code-block code-block»> package com.journaldev.javaprograms; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Scanner; public class AverageOfNumbers < public static void main(String[] args) < Scanner scanner = new Scanner(System.in); System.out.println(«Please enter the total number of integers.»); int count = scanner.nextInt(); int sum = 0; for (int i = 0; i < count; i++) < System.out.println(«Please enter number » + (i + 1) + «:»); sum += scanner.nextInt(); >System.out.println(«Sum=» + sum + «,Count=» + count); BigDecimal average = new BigDecimal((double) sum / count); average = average.setScale(2, RoundingMode.HALF_UP); System.out.println(«Average of entered numbers wp-block-codemirror-blocks-code-block code-block»> package com.journaldev.javaprograms; import java.util.Scanner; public class SwappingNumbers < public static void main(String[] args) < Scanner scanner = new Scanner(System.in); System.out.println(«Enter the first number:»); int first = scanner.nextInt(); System.out.println(«Enter the second number:»); int second = scanner.nextInt(); scanner.close(); System.out.println(«Initial value of numbers are: «+first+» and «+second); first = first + second; second = first -second; first = first — second; System.out.println(«Value of numbers after swapping are: «+first+» and «+second); >>
Создание простейшего приложения на Java
В этой статье речь идет об организации простейшего приложения на Java для начинающих разработчиков, которые уже изучили концепции объектного подхода. Но для опытных возможно тоже будет интересно.
Зачастую начинающие разработчики задают вопроc: «С чего начать создание приложения», какие классы использовать и прочее.
Не стоит воспринимать статью как пример «Hello World» для начинающих изучать язык Java и объектно-ориентированный подход. Предполагается, что читатель уже знаком с языком Java, однако у него возникают вопросы указанные выше.
В этой статье мы даем ответ на эти вопросы.
Для того, чтобы строить приложение постепенно, используя концепции объектно-ориентированного подхода мы будем представлять все элементы нашего приложения в виде объектов соответствующих классов. Поэтому приложение тоже будет отдельным классом. Для запуска приложения будем создавать его экземпляр.
Теперь более подробно…
Сначала создается класс Application — он будет моделью всего приложения.
public class Application
Далее создаем точку входа в приложение — метод main:
public class Application < public static void main(String[] args) < >>
Этот метод выполняется при запуске Java с указанием основого класса (Application). В нем мы создаем экземпляр приложения и инициализируем его, а далее запускаем. Для этого будем использовать методы init и run:
public class Application < public void init() < >public void run() < >public static void main(String[] args) < Application application = new Application(); application.init(); application.run(); >>
В методе init мы делаем необходимую инициализацию приложения. В методе run же распологается основной код хода приложения.
Метод init можно не использовать, однако мы исходим из того, что наше приложение проходит две стадии — инициализация и запуск.
Остальные элементы нашего приложения можно разбить на модельные классы и виды (окна, панели). Например, представим, что мы создаем простейший кредитный калькулятор. Тогда класс CreditCalculator — будет моделью калькулятора. В методе init будем инициализировать калькулятор, а в run вычислять:
public class Application < private CreditCalculator calculator; public void init() < calculator = new CreditCalculator(); >public void run() < calculator.setAmount(500000); calculator.setYears(3); calculator.calculate(); System.out.println(«Месячный платеж: » + calculator.getMonthlyPayment()); >public static void main(String[] args) < Application application = new Application(); application.init(); application.run(); >>
Таким образом, создание приложения можно начать с создания класса Application и далее добавлять необходимые модельные классы с которыми требуется работать.