Таблица истинности java

Приоритет операторов в Java

Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:

Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».

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

Сокращённые логические операторы

Кроме стандартных операторов AND (&) и OR (|) существуют сокращённые операторы && и ||.

Если взглянуть на таблицу, то видно, что результат выполнения оператора OR равен true, когда значение операнда A равно true, независимо от значения операнда B. Аналогично, результат выполнения оператора AND равен false, когда значение операнда A равно false, независимо от значения операнда B. Получается, что нам не нужно вычислять значение второго операнда, если результат можно определить уже по первому операнду. Это становится удобным в тех случаях, когда значение правого операнда зависит от значения левого.

Рассмотрим следующий пример. Допустим, мы ввели правило — кормить или не кормить кота в зависимости от числа пойманных мышек в неделю. Причём число мышек зависит от веса кота. Чем больше кот, тем больше он должен поймать мышей.

Если запустить программу, то пример будет работать без проблем — пять мышей в неделю вполне достаточно, чтобы побаловать кота вкусным завтраком. Если он поймает четырёх мышей, то начнутся проблемы с питанием кота, но не с программой — она будет работать, просто не будет выводить сообщение о разрешении покормить дармоеда.

Теперь возьмём крайний случай. Кот обленился и не поймал ни одной мышки. Значение переменной mouse будет равно 0, а в выражении есть оператор деления. А делить на 0 нельзя и наша программа закроется с ошибкой. Казалось бы, мы предусмотрели вариант с 0, но Java вычисляет оба выражения mouse != 0 и weight / mouse Реклама

Как начать писать на Java

Если вы планируете разрабатывать приложения на Java на своем настольном компьютере, то вам нужно будет загрузить и установить JDK.

Вы можете получить последнюю версию JDK непосредственно с сайта Oracle. Как только вы установите его, ваш компьютер будет иметь возможность понимать и запускать код на Java. Тем не менее, вам все равно понадобится некоторое вспомогательное ПО, чтобы было действительно удобно писать код. Это так называемая «интегрированная среда разработки» или IDE: интерфейс, используемый разработчиками для ввода текста кода и вызова JDK.

При разработке для Android вы будете использовать IDE Android Studio. Она не только послужит интерфейсом для кода на Java (или Kotlin), но и станет мостом для доступа к специфичным для Android вызовам из SDK.

Для целей нашего краткого руководства по Java может быть и проще написать свой код непосредственно в приложении-компиляторе Java. Они могут быть скачаны для Android и iOS, можно даже найти веб-приложения, которые работают в вашем браузере. Эти инструменты предоставляют все необходимое в одном месте и позволяют сразу начать тестирование кода. Например, compilejava.net.

Пример 3

Допустим, у нас есть следующие вложенные операторы if-else:

public String exampleOfIF(String animal) {
    String result;
    if (animal.equals("DOG") || animal.equals("CAT")) {
        result = "domestic animal";
    } else if (animal.equals("TIGER")) {
        result = "wild animal";
    } else {
        result = "unknown animal";
    }
    return result;
}

Приведенный выше код выглядит не очень хорошо, и его будет сложно поддерживать и обдумывать. Чтобы улучшить читаемость, мы могли бы использовать здесь оператор switch:

public String exampleOfSwitch(String animal) {
    String result;
    switch (animal) {
        case "DOG":
            result = "domestic animal"; 
            break;
        case "CAT":
            result = "domestic animal";
            break;
        case "TIGER":
            result = "wild animal";
            break;
        default:
            result = "unknown animal";
            break;
    }
    return result;
}

Как показано выше, мы сравниваем animal аргумента switch с несколькими значениями case. Если ни одно из значений case не равно аргументу, то выполняется блок под меткой по умолчанию.

Проще говоря, оператор break используется для выхода из оператора switch.

Пример 1

class Main {
    public static void main(String[] args) {

        int week = 4;
        String day;

        // switch statement to check day
        switch (week) {
            case 1:
                day = "Sunday";
                break;
            case 2:
                day = "Monday";
                break;
            case 3:
                day = "Tuesday";
                break;

            // match the value of week
            case 4:
                day = "Wednesday";
                break;
            case 5:
                day = "Thursday";
                break;
            case 6:
                day = "Friday";
                break;
            case 7:
                day = "Saturday";
                break;
            default:
                day = "Invalid day";
                break;
        }
        System.out.println("The day is " + day);
    }
}

Вывод:

В приведенном выше примере мы использовали оператор switch, чтобы узнать день недели. Здесь у нас есть переменная неделя, которая содержит целочисленное значение. Значение сравнивается с каждым случаем внутри блока переключателя.

Здесь значение недели равно 4. Следовательно, оно соответствует случаю 4. Таким образом, выполняется оператор внутри случая 4.

Основные математические функции

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

Math.abs()

Функция Math.abs() возвращает абсолютное положительное значение переданного ей параметра. Если значение параметра является отрицательным, знак “-” удаляется и возвращается положительное значение, соответствующее отрицательному значению без знака. Вот два примера:

int abs1 = Math.abs(10);  // abs1 = 10

int abs2 = Math.abs(-20); // abs2 = 20

Абсолютное значение 10 равно 10. Абсолютное значение -20 равно 20.

Метод Math.abs() представлен в 4 версиях:

Math.abs(int)
Math.abs(long)
Math.abs(float)
Math.abs(double)

Какой из этих методов вызывается, зависит от типа параметра, передаваемого методу Math.abs().

Math.ceil()

Функция округляет значение с плавающей запятой до ближайшего целого числа. Округленное значение возвращается как двойное. Вот пример:

double ceil = Math.ceil(7.343);  // ceil = 8.0

После выполнения этого Java-кода переменная ceil будет содержать значение 8.0.

Math.floor()

Функция Math.floor() округляет значение с плавающей запятой до ближайшего целочисленного значения. Округленное значение возвращается как двойное. Вот пример:

double floor = Math.floor(7.343);  // floor = 7.0

После выполнения ceil будет содержать значение 8.0.

Math.floorDiv()

Метод Math.floorDiv() делит одно целое число (int или long) на другое и округляет результат до ближайшего целочисленного значения. Если результат положительный, эффект такой же, как при использовании оператора “/” (деления), описанного ранее в этом тексте.

Однако, если результат отрицательный, результат не тот же. С помощью оператора “/” дроби просто усекаются. Для положительных чисел это соответствует округлению в меньшую сторону, для отрицательных – в большую. Метод floorDiv() округляет до ближайшего отрицательного целого числа, вместо того, которое будет происходить при усечении дроби.

Вот пример:

double result3 = Math.floorDiv(-100,9);
System.out.println("result3: " + result3);

double result4 = -100 / 9;
System.out.println("result4: " + result4);

Выходные данные:

result3: -12.0
result4: -11.0

Это показывает разницу между оператором “/” и Math.floorDiv().

Math.min()

Метод Math.min() возвращает наименьшее из двух значений, переданных ему в качестве параметра:

int min = Math.min(10, 20);

После выполнения этого кода переменная min будет содержать значение 10.

Math.max()

Метод Math.max() возвращает наибольшее из двух значений, переданных ему в качестве параметра:

int max = Math.max(10, 20);

После выполнения этого кода переменная max будет содержать значение 20.

Тригонометрические функции

Класс Java Math содержит набор тригонометрических функций. Эти функции могут вычислять значения, используемые в тригонометрии, такие как синус, косинус, тангенс и т. д.

Mathkpi

Константа Math.PI представляет собой двойное значение, значение которого очень близко к значению PI – математическому определению PI.

Math.sin()

Метод Math.sin() вычисляет значение синуса некоторого значения угла в радианах:

double sin = Math.sin(Math.PI);
System.out.println("sin = " + sin);

Math.cos()

Метод Math.cos() вычисляет значение косинуса некоторого значения угла в радианах:

double cos = Math.cos(Math.PI);
System.out.println("cos = " + cos);

Math.tan()

Метод Math.tan() вычисляет значение тангенса некоторого значения угла в радианах:

double tan = Math.tan(Math.PI);
System.out.println("tan = " + tan);

Math.asin()

Метод Math.asin() вычисляет значение синусоиды значения от 1 до -1:

double asin = Math.asin(1.0);
System.out.println("asin = " + asin);

Math.acos()

Метод Math.acos() вычисляет значение арккосинуса от 1 до -1:

double acos = Math.acos(1.0);
System.out.println("acos = " + acos);

Math.atan()

Метод Math.atan() вычисляет значение арктангенса для значения от 1 до -1:

double atan = Math.atan(1.0);
System.out.println("atan = " + atan);

Вот что говорит JavaDoc:

Если вам нужен этот метод, пожалуйста, прочитайте JavaDoc.

Math.sinh()

Метод Math.sinh() вычисляет значение гиперболического синуса значения между 1 и -1:

double sinh = Math.sinh(1.0);
System.out.println("sinh = " + sinh);

Math.cosh()

Метод Math.cosh() вычисляет значение гиперболического косинуса от 1 до -1:

double cosh = Math.cosh(1.0);
System.out.println("cosh = " + cosh);

Math.tanh()

Метод Math.tanh() вычисляет значение гиперболического тангенса значения от 1 до -1:

double tanh = Math.tanh(1.0);
System.out.println("tanh = " + tanh);

Math.toDegrees()

Метод Math.toDegrees() преобразует угол в радианах в градусы:

double degrees = Math.toDegrees(Math.PI);
System.out.println("degrees = " + degrees);

Math.toRadians()

Метод Math.toRadians() преобразует угол в градусах в радианы:

double radians = Math.toRadians(180);
System.out.println("radians = " + radians);

Пример 2: Арифметические операторы

class ArithmeticOperator {
    public static void main(String[] args) {

        double number1 = 12.5, number2 = 3.5, result;

        // Используется оператор сложения 
        result = number1 + number2;
        System.out.println("number1 + number2 = " + result);

        // Используется оператор вычитания 
        result = number1 - number2;
        System.out.println("number1 - number2 = " + result);

        // Используется оператор умножения
        result = number1 * number2;
        System.out.println("number1 * number2 = " + result);

        // Используется оператор деления
        result = number1 / number2;
        System.out.println("number1 / number2 = " + result);

        // Используется оператор остатка
        result = number1 % number2;
        System.out.println("number1 % number2 = " + result);
    }
}

Когда вы запустите программу, на экран выведется:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

В примере с оператором деления Java, приведенном выше, использованные операнды – переменные. Кроме этого могут использоваться символьные значения. Например:

result = number1 + 5.2;
result = 2.3 + 4.5;
number2 = number1 -2.9;

Оператор «+» также может быть использован, чтобы соединить (конкатенировать) две строки или больше.

Оператор for

Оператор
for  представляет собой компактную форму итерации по диапазону чисел. Его синтаксис:

for (<инициализация>; <условие>; <инкремент>)
<оператор1>;

1
2

for (<инициализация>; <условие>; <инкремент>)
    <оператор1>;

Или для блока операторов (согласно соглашению о кодировании в Java рекомендуется использовать этот вариант даже для случая одного оператора):

for (<инициализация>; <условие>; <инкремент>) {
<оператор1>;
<оператор2>;

<операторN>;
}

1
2
3
4
5
6

for (<инициализация>; <условие>; <инкремент>) {
    <оператор1>;
    <оператор2>;
    …
    <операторN>;
}

Выражение
<инициализация>  выполняется только один раз перед началом итерации. Переменные, объявленные в
<инициализация>  действуют только внутри цикла
for , включая
<инициализация> ,
<условие>  и
<инкремент>.

Выражение
<условие>  выполняется перед каждым циклом итерации. Блок операторов или одиночный оператор выполняются только тогда, когда
<условие>  вернуло
true . Если
<условие>  возвращает
false , то выполнение цикла
for  завершается.

Выражение
<инкремент>  выполняется после каждого цикла перед проверкой выражения
<условие> . Его обычно используют для увеличения или уменьшения значения.

Любое из выражений
<инициализация> ,
<условие> ,
<инкремент>  можно опустить. Можно даже вообще сделать цикл
for  без инициализации, условия, инкремента и оператора/блока операторов:

Java

// Бесконечный цикл
for (;;);

1
2

// Бесконечный цикл

for(;;);

Пример использования цикла
for  для вывода значений от 0 до 10:

Java

for (int n = 0; n <= 10; n++) {
System.out.println(n);
}

1
2
3

for(intn=;n<=10;n++){

System.out.println(n);

}

В
<инициализация>  и в
<инкремент>  можно указывать несколько выражений инициализации и несколько инкрементов. В этом случае они указываются через запятую и вычисляются слева направо:

Java

for (int n = 0, m = 3; n <= 10; n++, m—) {
System.out.println(«n=» + n + «; m=» + m);
}

1
2
3

for(intn=,m=3;n<=10;n++,m—){

System.out.println(«n=»+n+»; m=»+m);

}

Существует ещё специальная форма for для обхода по массивам и коллекциям:

Java

int[] myarray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int n : myarray) {
System.out.println(n);
}

1
2
3
4

intmyarray={,1,2,3,4,5,6,7,8,9,10};

for(intnmyarray){

System.out.println(n);

}

Выведет в консоль следующее:

0
1
2
3
4
5
6
7
8
9
10

1
2
3
4
5
6
7
8
9
10
11

1
2
3
4
5
6
7
8
9
10

Тернарная операция

Операция «?:» называется тернарной, потому что он принимает три операнда.

<выражение_boolean> ? <выражение1> : <выражение2>

1 <выражение_boolean> ? <выражение1> : <выражение2>

Тернарная операция вычисляет
<выражение_boolean>, если оно равно
true, то вычисляет и возвращает
<выражение1>, а если
false, то
<выражение2> .

Java

class Main {
public static void main(String[] args) {
int x = 3 > 2 ? 5 : -3; // 5
String str1 = 3 == 2 ? «YES»: «NO»; //»NO»
System.out.println(x);
System.out.println(str1);
}
}

1
2
3
4
5
6
7
8

classMain{

publicstaticvoidmain(Stringargs){

intx=3>2?5-3;// 5

Stringstr1=3==2?»YES»»NO»;//»NO»

System.out.println(x);

System.out.println(str1);

}

}

Практическое применение побитовых операций

Побитовые операции имеют довольно широкое практическое применение, рассмотрим некоторые случаи:

4.3. Шифрование числа

Операция XOR при применении два раза к одному и тому же битовому массиву восстанавливает ее исходное значение. Это можно использовать при шифровании данных при передаче по сети: 

  C = A ^ B

  A = C ^ B 

Представьте, что необходимо отправить в сообщении число 560 — пин-код от банковской  карты. Если злоумышленник перехватит сообщение, то узнает пин-код и сможет воспользоваться им. Только отправитель и получатель могут знать пин-код. Чтобы этого не произошло, придумаем какое-то число — маску и сообщим его получателю заранее. Перед отправкой пин-кода, зашифруем его — применим побитовую операцию XOR: . И результат отправим. Если злоумышленник и перехватит сообщение, он не будет знать как его расшифровать. Адресат получает сообщение, расшифровывает пин-код с помощью имеющейся маски: .

Следующий код иллюстрирует этот пример:

4.4. Наложение маски

Маска позволяет получать значения только определенных битов в последовательности. Например, у нас есть маска 00100100. Она позволяет нам получать из последовательности только те биты, которые в ней установлены. В данном случае это 3-й и 7-й разряд. Для этого достаточно выполнить побитовое AND с нашей маской и выбранным числом:

Пользуйтесь несколькими обучающими ресурсами

Вам потребуется множество инструментов для достижения цели. Вот полезные подборки для успешного обучения.

1. Только практика: CodeAcademy

Это, пожалуй, одна из самых известных онлайн-платформ для изучения разных языков программирования. И, конечно же, тут есть специальный раздел для изучающих Java. Здесь вы с самого первого урока начнете писать код. Если задание покажется слишком сложным (а для новичков — это совершенно нормально), то можете воспользоваться полезными подсказками. Логика обучения проста: читаете задание, пишите код, запускаете его, смотрите результат, переходите к следующему уроку. Задания постепенно усложняются до тех пор, пока вы не научитесь писать код с чистого листа. Есть очень полезный раздел FAQ и возможность обсуждения задания с другими учениками.

Данный курс может стать отличным подспорьем при изучении Java. Как уже было сказано выше, для успешного освоения Java нужно писать много кода.

2. Играйте и программируйте с нуля: CodeGym.cc

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

В CodeGym вы начинаете с нулевого уровня. Процесс обучения проходит в футуристической вселенной с космическими путешествиями, роботами и прочими классными штуками. Ваша цель — пройти 4 обучающих квеста и «прокачать» своего персонажа (робота). Каждый квест состоит из 10 уровней. В каждом уровне по 10–12 уроков, которые вам объясняют члены экипажа космического корабля. Урок сводится к минимуму теории и набору заданий с мгновенной проверкой, а также подсказками по улучшению кода. Вы сразу начинаете писать код и решаете простейшие задачи до тех пор, пока не будете готовы к более сложным и масштабным проектам по разработке.

Здесь вы можете не «застревать» на какой-то теме, а переходить к изучению следующей и возвращаться к проблемной задаче позже. В курсе имеется невероятное количество задач — более 1200. Это количество равнозначно примерно 300–500 часам написания кода.

3. Конкурсы по программированию: Codewars

Есть еще одна онлайн-платформа с акцентом на практику. Хотя, конечно, она больше подходит для тех, у кого за плечами есть опыт в разработке. Codewars позволяет отточить свои навыки в каком-то языке программирования с помощью обучающих задач (ката).

Вы можете писать свой код в браузере и пошагово проверять его в тестовых сценариях. Также можете сравнивать свой код с чужим, расширять базу знаний и обсуждать лучшие варианты. Каждое задание представляет собой конкурс с другими программистами, и ему присваивается свой рейтинг. Как только вы научитесь решать не самые простые задачи, то сможете отточить свои навыки и поучаствовать в более сложных конкурсах. Основное отличие данной платформы — здесь вы можете учиться и практиковаться в группе.

4. Слушайте лекции профессионалов: EdX

EdX — это образовательная платформа, созданная Гарвардским университетом и MIT. В ней представлено множество предметов, в том числе, программирование на Java и смежные области. EdX содержит массу утвержденных вводных курсов и сертифицированных программ, проводимых университетами.

Хотите быть в курсе последних новостей, обзоров и обновлений в Java­-мире? И это правильно. Java постоянно развивается, обновляется и добавляет новые возможности. Не забывайте каждый день читать полезные статьи по Java. 

Помните совет о том, чтобы вступить в профильные сообщества для более эффективного обучения? Можете задавать свои вопросы в разделе Java на Stack Overflow или Coderanch. Кроме того, есть как минимум три крупных сообщества на Reddit (learnprogramming, java и learnjava), где вы познакомитесь с полезными подсказками по изучению как всего программирования, так и отдельно взятого языка. Если нужна более конкретная информация (например, как улучшить код в каких-то заданиях), то почитайте специальный раздел помощи на CodeGym –другие студенты и «наставники по разработке» подскажут вам решение любой задачи. И, наконец, есть еще крупное Java-сообщество на Oracle. Оно рассчитано на новичков и продвинутых разработчиков.

Быть разработчиком — это постоянно совершенствоваться и получать новые знания. Если вы изначально разовьете навык самообразования, то гарантированно добьетесь успехов. Итак, вы готовы начать?

Перевод статьи John SelawskyHow to learn to code in Java: why you should and where to start

Резюмируем

Итак, Java — популярный мультифункциональный язык.

Она достаточно надёжная, быстрая, пригодится почти везде, и у неё несложный синтаксис по сравнению со многими другими языками. Да, есть языки ещё проще, но если у вас нет цели выбрать самый лёгкий, то Java — удачный средний вариант.

Java — замечательный выбор для веб-разработки, разработки приложений на Android, а также если вы хотите попробовать себя в объектно-ориентированном программировании.

Если вы всерьёз заинтересовались Java, то освоить этот язык вам поможет наш курс «Профессия Java-разработчик». Там вы не только освоите теорию, но и напишете свои первые программы на Java — в команде других разработчиков и под руководством наставника.

Список примитивных типов

В Java есть 8 базовых примитивных типов. Примитивными их называют потому, что значения этих типов не являются объектами и хранятся прямо внутри переменных.

Вот таблица, которая содержит краткую информацию по этим типам:

Тип Размер,
байт
Диапазон значений Значение по умолчанию Описание
1 -128 .. 127 Самое маленькое целое — один байт
2 -32,768 .. 32,767 Короткое целое, два байта
4 -2*109 .. 2*109 Целое число, 4 байта
8 -9*1018 .. 9*1018 Длинное целое, 8 байт
4 -1038 .. 1038 Дробное, 4 байта
8 -10308 .. 10308 Дробное, двойной длины, 8 байт
1 , Логический тип (только & )
2 0 .. 65,535 Символы, 2 байта, все больше 0

Значение по умолчанию

Кстати, важный нюанс. Если вы объявили переменную-класса (поле класса) или статическую переменную-класса, и не присвоили ей никакого значения, она инициализируется значением по умолчанию. Список таких значений приведен в таблице.

Локальные переменные методов не имеют значений по умолчанию, и если вы не присвоили такой переменной никакого значения, она считается не инициализированной и использовать ее значение нельзя.

Но давайте вернемся к примитивным типам и рассмотрим их подробнее

Оператор do-while

Оператор
do-while  похож на оператор
while, но он сначала выполняет операторы, а лишь потом проверяет условие, таким образом оператор или блок операторов выполнятся хотя бы один раз.

Примеры:

Java

// вывод чисел от 0 до 10
int x = 0;
do {
System.out.println(x);
x++;
} while (x <= 10);

1
2
3
4
5
6

// вывод чисел от 0 до 10

intx=;

do{

System.out.println(x);

x++;

}while(x<=10);

Java

// Условие ложно изначально,
// но выведется 0, так как
// сначала будет выполняться
// блок операторов, а лишь затем
// проверяться условие
x = 0;
do {
System.out.println(x);
x++;
} while (x < 0);

1
2
3
4
5
6
7
8
9
10

// Условие ложно изначально,
// но выведется 0, так как
// сначала будет выполняться
// блок операторов, а лишь затем
// проверяться условие

x=;

do{

System.out.println(x);

x++;

}while(x<);

Заключение

На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс. В следующих статьях мы продолжим начальное изучение Java на примере создания других игр. Следите за блогом!

Другие статьи из серии «Быстрый старт с Java»:

  • «Быстрый старт с Java: крестики-нолики»
  • «Быстрый старт с Java: «лопни шарик»

Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников:

  • Приключения бравого джависта в поисках пропитания. Как начать карьеру программиста Java, если в твоём городе пять вакансий и везде требуют опыт от года
  • «Иногда за сутки я спал один час в метро перед работой». Из белорусской типографии — в московские тимлиды.
  • Первая работа в IT с переездом в Москву: как это бывает. Опыт собеседований, тестовых заданий, учебных проектов и трудоустройства в международную компанию.
  • Взгляд изнутри: как работается в «Альфа-Банке». Рассказывает Михаил Степнов, выпускник GeekUniversity и программист банка.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector