JavaLessons

Встроенные типы данных, операции над ними.

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

Первая программа на Java Для базового понимания синтаксиса языка лучше начать с программы “Hello, World!”. В листинге 1.1 эта программа в самом простом виде, записанная на языке Java. Листинг 1.1. Первая программа на языке Java;

class HelloWorld {
public static void main(String[] args){ 
    System.out.println("Hello, XXI Century World!"); 
    } 
}

На этом простом примере можно заметить целый ряд существенных особенностей языка Java.

Единственное действие, которое выполняет метод main () в примере, заключается в вызове другого метода со сложным именем System.out.println и передаче ему на обработку одного аргумента, текстовой константы “Hello, 2lth century world!”. Текстовые константы записываются в кавычках, которые являются только ограничителями и не входят в состав текста. Действие метода println () заключается в выводе своего аргумента в выходной поток, связанный обычно с выводом на экран текстового терминала, в окно MS-DOS Prompt или Command Prompt или Xterm, в зависимости от вашей системы. После вывода курсор переходит на начало следующей строки экрана, на что указывает окончание ln, слово println — сокращение слов print line. В составе Java API есть и метод print (), оставляющий курсор в конце выведенной строки. Разумеется, это прямое влияние языка Pascal. Сделаем сразу важное замечание. Язык Java различает строчные и прописные буквы, имена main, Main, MAIN различны с “точки зрения” компилятора Java. В примере важно писать String, System с заглавной буквы, a main с маленькой. Но внутри текстовой константы неважно, писать Century или century, компилятор вообще не “смотрит” на нее, разница будет видна только на экране. Замечание: Язык Java различает прописные и строчные буквы. Свои имена можно записывать как угодно, можно было бы дать классу имя helloworid или helloworid, но между Java-программистами заключено соглашение, называемое “Code Conventions for the Java Programming Language”. Вот несколько пунктов этого соглашения:

Совет

Называйте файл с программой именем класса, содержащего метод main (), соблюдая регистр букв. В нашем примере, сохраним программу в файле с именем HelloWorld.java в текущем каталоге. Затем вызовем компилятор, передавая ему имя файла в качестве аргумента:

javac HelloWorld.java

Компилятор создаст файл с байт-кодами, даст ему имя Helloworid.class и запишет этот файл в текущий каталог. Осталось вызвать интерпретатор, передав ему в качестве аргумента имя класса (а не файла):

java HelloWorld

На экране появится:

Hello, 21st Century World!

Замечание

Не указывайте расширение class при вызове интерпретатора. На рис. 1.1 показано, как все это выглядит в окне Command Prompt операционной системы MS Windows 2000. Пример работы программы Рис. 1.1. Окно Command Prompt При работе в интегрированной среде все эти действия вызываются выбором соответствующих пунктов меню или “горячими” клавишами — единых правил здесь нет.

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

Типы данных

Арифметические операторы в Java

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

int a, b;
int sum = a + b;
int sub = a - b;
int mult = a * b;
int div = a / b;

Примечание: при операции деления, если оба аргумента являются целыми числами, то в результате получим целое число. Дробная часть, если такая имеется, отбросится. Если хотим получить число с дробной частью, то нужно, чтобы один из аргументов был типа double. Это можно указать в самом выражении при помощи добавления после числа .0 или .d. Пример:

System.out.println (18 / 5); // на консоль выведет число 3
double div = 18 / 5;
System.out.println (div); // на консоль выведет число 3.0
System.out.println (18.0 / 5); // на консоль выведет число 3.6
System.out.println (18 / 5.d); // на консоль выведет число

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

int mod;
mod = 15 % 10; // остаток от деления 15 на 10 равно 5, mod = 5
mod = 16 % 2; // mod = 0
mod = 82 % 9; // mod = 1

Пример использования: дан массив целых чисел, вывести на консоль только те числа, которые делятся на 3.

int[] intArr = {9, 1, 3, 2, 7, 4, 6};
for(int i=0; i< intArr.length; i++){
	if(intArr[i] % 3 == 0){
		System.out.print(intArr[i] + " ");
	}
}

Операции с присваиванием

Рассмотрим задачу вывода на экран 10 первых четных чисел чисел

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

строку

count += 2;

+= это оператор сложения с присваиванием. Подобные операторы есть для всех основных 5 операций, рассмотренных выше

int a = 5;
int sum += a; // эквивалентно sum = sum + a;
int sub -= a; // эквивалентно sub = sub - a;
int mult *= a; // эквивалентно mult = mult * a;
int div /= a; // эквивалентно div = div / a;
int mod %= a; // эквивалентно mod = mod % a;

Пример использования: Найти факториал числа 7.

int n = 7;
int result = 1;
for(int i = 1; i <= n; i ++){
	result *= i; 
}
System.out.print(result);

Инкрементирование и декрементирование Инкремент, обозначается ++ и увеличивает значение переменной на единицу. Декремент обозначается — и уменьшает значение на единицу. С инкрементом и декрементом мы часто встречаемся в цикле for.

Инкремент и декремент бывают двух форм

Префиксная форма:

int k = 3;
++k; // k = 4
--k; // k = 3

Постфиксная форма

int k = 3;
k++; // k = 4
k--; // k = 3

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

int a = 3, b = 3;
int prefix = 15 / 3 - ++a; // итог prefix = 1 
int postfix = 15 / 3 - b++; // итог postfix = 2

В первом случае сначала переменная a увеличится на 1, потом произойдет вычисление всего выражения. Во втором случае произойдет вычисление выражения при старом значении b = 3, и после вычисления b увеличится на 1, на результат в postfix это уже не повлияет.

int a = 3, b = 3;
System.out.println(++a);// на консоль выведет 4
System.out.println(b++);//на консоль выведет 3

Вопросы для самопроверки

  1. Какое максимальное число можно задать для переменной типа int ?

  2. Можно ли присвоить переменной типа int, значение переменной типа long?

  3. Сколько значений имеет логический тип данных?

  4. Какие числа будут выведены на экран? Почему?

    int x = 3, y = 3;
    x = x++ + ++x;
    y = --y - y--;
    

Какие операции нужно использовать, чтобы посчитать среднее число от двух заданных?

Задания:

  1. Запустить программу HelloWorld в терминале, как описано в лекции.

  2. Написать программу выводящую фразу «Привет все жители Краснодара 899541»

    2.1 Попробовать вывести число после слова Краснодар типа int.

    2.2 Попробовать вывести число типа double.

Следующий урок