Java: Явное преобразование типов
В реальных программах часто возникает ситуация, когда данные одного типа нужно превратить в другой. Один из примеров — работа с формами на сайтах. Данные формы приходят в текстовом виде, даже если по смыслу там число. Чтобы считать с таким значением, его преобразуют в нужный тип.
Преобразование строки в число
Представим, что из формы пришла строка "345", а нам нужно прибавить к этому числу другое. Строку сначала превращают в целое число:
var number = Integer.parseInt("345");
System.out.println(number + 5); // => 350Метод Integer.parseInt получает строку и возвращает целое число типа int. Похожим образом строку превращают в рациональное число с помощью Double.parseDouble.
Приведение между примитивными типами
Если преобразовать нужно из одного примитивного типа в другой, хватает указания типа в скобках перед значением. Значение преобразуется в тип, записанный в скобках:
var result = (int) 5.1;
System.out.println(result); // => 5При приведении рационального числа к целому дробная часть отбрасывается без округления. Поэтому (int) 5.9 дает 5. В обратную сторону (double) 7 дает 7.0.
Приведение помогает и при делении. Деление целого на целое в Java дает целое число, а дробная часть теряется:
System.out.println(7 / 2); // => 3
System.out.println((double) 7 / 2); // => 3.5В первом случае оба значения целые, поэтому результат целый. Во втором случае делимое приведено к типу double, и деление стало рациональным.
Приведение внутри составных выражений
Преобразование типов работает и внутри больших выражений. Дополнительные скобки помогают визуально отделить части выражения друг от друга:
var result = 10 + ((int) 5.1);
System.out.println(result); // => 15Здесь 5.1 приводится к 5, а затем складывается с 10.
Задание
Выведите на экран строку 2 times, полученную из числа 2.9 и строки times, используя преобразования типов и конкатенацию.
2 timesПолезное
Java: Явное преобразование типов
В реальных программах часто возникает ситуация, когда данные одного типа нужно превратить в другой. Один из примеров — работа с формами на сайтах. Данные формы приходят в текстовом виде, даже если по смыслу там число. Чтобы считать с таким значением, его преобразуют в нужный тип.
Преобразование строки в число
Представим, что из формы пришла строка "345", а нам нужно прибавить к этому числу другое. Строку сначала превращают в целое число:
var number = Integer.parseInt("345");
System.out.println(number + 5); // => 350Метод Integer.parseInt получает строку и возвращает целое число типа int. Похожим образом строку превращают в рациональное число с помощью Double.parseDouble.
Приведение между примитивными типами
Если преобразовать нужно из одного примитивного типа в другой, хватает указания типа в скобках перед значением. Значение преобразуется в тип, записанный в скобках:
var result = (int) 5.1;
System.out.println(result); // => 5При приведении рационального числа к целому дробная часть отбрасывается без округления. Поэтому (int) 5.9 дает 5. В обратную сторону (double) 7 дает 7.0.
Приведение помогает и при делении. Деление целого на целое в Java дает целое число, а дробная часть теряется:
System.out.println(7 / 2); // => 3
System.out.println((double) 7 / 2); // => 3.5В первом случае оба значения целые, поэтому результат целый. Во втором случае делимое приведено к типу double, и деление стало рациональным.
Приведение внутри составных выражений
Преобразование типов работает и внутри больших выражений. Дополнительные скобки помогают визуально отделить части выражения друг от друга:
var result = 10 + ((int) 5.1);
System.out.println(result); // => 15Здесь 5.1 приводится к 5, а затем складывается с 10.
Задание
Выведите на экран строку 2 times, полученную из числа 2.9 и строки times, используя преобразования типов и конкатенацию.
2 timesПолезное
Ваше упражнение проверяется по этим тестам
import static org.assertj.core.api.Assertions.assertThat;
import java.io.ByteArrayOutputStream;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;
class AppTest {
public static void main(String[] args) {
final var expected = "2 times";
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
App.main(null);
final var actual = out.toString().trim();
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.out.println(actual);
assertThat(actual).isEqualTo(expected);
}
}Решение учителя откроется через:
20:00
