Вы находитесь на странице: 1из 40

1

Java Foundations
3-3
Текстовые данные

© 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены.

2
Цели
• В данном уроке рассматриваются следующие темы:
−Использование типа данных char
−Использование строк
−Конкатенация строк
−Основные сведения о escape-последовательностях
−Основные сведения об операторах вывода

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 3

3
Темы
• Символы и строки
• Конкатенация строк
• Смешивание строк и чисел
• Операторы вывода

Типы Взаимная Ввод


Общие Типы текстовы конвертация данных с
сведения о числовы типов клавиату
х
переменных х данных данных ры
данных

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 4

4
Примитивный текстовый тип
• Единственный примитивный тип текстовых
данных — char
• Он используется для одиночных символов (16 бит)

• Пример:
−char shirtSize = 'M';

Литеральные значения char необходимо


заключать в одинарные кавычки

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 5

Другой тип данных используется для хранения и обработки данных как одиночного
символа. Размер примитивного типа char — 16 бит. Когда переменной char
присваивается литеральное значение, этот символ необходимо заключать в одинарные
кавычки, как показано в примере кода.

5
Объединение нескольких символов
в строку
• Символы можно объединять в строку и создавать
предложения
• Ниже показан не очень эффективный способ
• Для каждой буквы в предложении требуется
отдельная строка кода
char letter1 = 'H';
char letter2 = 'e';
char letter3 = 'l';
char letter4 = 'l';
char letter5 = 'o';
//Если предложение длинное, закодировать его будет очень сложно
System.out.println(letter1 +letter2 +letter3 +letter4 +letter5);

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 6

6
Эффективное объединение нескольких символов в
строку
• Вот более рациональный способ
• Для целого предложения требуется всего одна
строка:

String greeting = "Hello World!";


//Обратите внимание на двойные кавычки
System.out.println(greeting);

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 7

7
Символы и строки
• Переменные char используются для одиночных
символов
−Используйте одинарные кавычки
char shirt1Size = 'S';
char shirt2Size = 'M';
char shirt3Size = 'L';

• Переменные char не поддерживают несколько


символов
char shirt4Size = 'XL';
char shirt5Size = "XXL";

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 8

8
Символы и строки
• Строка поддерживает несколько символов
−Используйте двойные кавычки

String shirt6Size = "XXXL";

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 9

9
Примитивы
Тип Длина Данные

boolean 1 бит true / false


byte 8 бит Целые числа
short 16 бит Целые числа
int 32 бита Целые числа
long 64 бита Целые числа
float 32 бита Числа с плавающей точкой
double 64 бита Числа с плавающей точкой
char 16 бит Одиночные символы

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 10

10
Проведем исследование
• Возможно, вы заметили другие различия между
типами char и String?
char shirt3Size = 'L';
String shirt6Size = "XXXL";

• 1. Элемент char выделяется синим цветом


−char — это ключевое слово для примитивного типа
данных
−Ключевые слова выделяются синим в NetBeans
• 2. String начинается с прописной буквы
−Строки — это объект, а не примитив
−Согласно правилам, названия типов объектов начинаются
с прописной буквы

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 11

11
Строки — это объекты
• В Java есть класс String, который описывает следующее:
− Свойства строк
− Варианты поведения строк
• Строка — это специальный объект
− Строки обрабатываются немного иначе по сравнению с
большинством объектов
• Более подробную информацию вы получите в
следующих разделах:
− В качестве свойств объектов могут выступать примитивы
− В качестве свойств объектов могут выступать другие объекты,
например строки
− Объект хранятся в памяти отдельно от примитивов

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 12

12
Темы
• Символы и строки
• Конкатенация строк
• Смешивание строк и чисел
• Операторы вывода

Типы Взаимная Ввод


Общие Типы текстовы конвертация данных с
сведения о числовы типов клавиату
х
переменных х данных данных ры
данных

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 13

13
Объявление и инициализация строк
• Объявляйте объекты String и присваивайте им
значения так же, как любым другим примитивам
//Объявлена и инициализирована одна переменная
int intVar = 300;
String stringVar = "Three Hundred";

//Объявлено множество переменных


int x, y, z;
String xString, yString, zString;

//Объявленная переменная инициализирована позже


x = 1;
xString = "One";

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 14

14
Строковые переменные и строковые литералы
String stringVariable = "Это строковый литерал.";

• Создать строку можно путем объединения


нескольких строковых литералов:
String combinedLiterals = "Я хочу" + " купить рубашку.";

• Создать строку можно путем объединения


переменных:
String var1 = "На этой рубашке";
String var2 = " слишком много пуговиц.";
String combinedVariables = var1 + var2;

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 15

15
Конкатенация строк
• Объединение нескольких строк называется
конкатенацией
• Строки можно объединить с помощью оператора +
−stringVariable1 + stringVariable2
−stringVariable1 + “String literal”
−stringVariable1 + “String literal” + stringVariable2
String greet1 = "Hello";
String greet2 = "World";
String message1 = greet1 + " " + greet2 + "!";
String message2 = greet1 + " " + greet2 + " " + 2020 + "!";

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 16

Объединение нескольких строк называется "конкатенацией". Одну строковую


переменную можно объединить с другой строковой переменной. Также можно
объединить строковый литерал со строковой переменной.
Для выполнения задачи можно объединить сколько угодно строковых переменных и
строковых литералов.

16
Результат объединения строк
• Пример объединения:
String greet1 = "Hello";
String greet2 = "World";
String message1 = greet1 + " " + greet2 + "!";
String message2 = greet1 + " " + greet2 + " " + 2020 + "!";

• Можно объединить строки в операторе print:


System.out.println(message2);
System.out.println(greet1 + " " + greet2 + " " + 2020 + "!");

• Результат:
Hello World 2020!
Hello World 2020!

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 17

В примерах на этом слайде показано два варианта вывода данных строк с помощью
оператора System.out.println.
В первом примере выводится переменная message2, с которой вы уже встречались
на предыдущем слайде.
Во втором примере показано выражение, содержащее объединение переменных
и строковых литералов. Это выражение можно вставить между круглыми скобками
метода. Конкатенация выполняется ядром среды выполнения перед исполнением
метода println.
Как видно из примеров, оба вызванных метода дают один и тот же результат.

17
Упражнение 1 Сценарий
• Вспомните каталог одежды в магазине "Выбор
Дюка":
−Этот сценарий включен в класс ShoppingCart
−В этом упражнении кратко описаны некоторые свойства и
варианты поведения ShoppingCart Представлены
−Свойства ShoppingCart: строками
• Владелец класса в этом упражнении
• Элементы, которые он содержит
• Сообщение или описание корзины
−Варианты поведения ShoppingCart:
• Выводит это сообщение

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 18

Сценарий с каталогом "Выбор Дюка" обсуждается в Разделе 2, Урок 3.

18
Упражнение 1, Часть 1
• Импортируйте и откройте проект
ShoppingCart01
• Объявите и инициализируйте строковую
переменную custName
• Объявите и инициализируйте строковую
переменную itemDesc
• Объявите строковую переменную message

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 19

19
Упражнение 1, Часть 2
• Присвойте переменной message объединенное
значение, которое включает в себя custName,
itemDesc, и строковый литерал
• В результате получится предложение:
−(пример: "Алекс хочет купить рубашку")
• Выведите сообщение на экран

• Ваша программа должна выдавать похожий


результат:
Алекс хочет купить рубашку

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 20

20
Темы
• Символы и строки
• Конкатенация строк
• Смешивание строк и чисел
• Операторы вывода

Типы Взаимная Ввод


Общие Типы текстовы конвертация данных с
сведения о числовы типов клавиату
х
переменных х данных данных ры
данных

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 21

21
Смешивание строк и чисел
• Строки могут содержать числа:
String totalPrice = "Total: $" +3;
System.out.println(totalPrice); //Итого: $3

• Тем не менее, будьте внимательны при попытке


выполнения математических операций:
String totalPrice = "Total: $" +3 +2 +1;
System.out.println(totalPrice); //Итого: $321

• Заключайте числа в круглые скобки:


String totalPrice = "Total: $" +(3 +2 +1);
System.out.println(totalPrice); //Итого: $6

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 22

22
Упражнение 2 Сценарий
• Вопрос: Когда покупатель заполнит корзину,
сколько ему придется заплатить?
• Чтобы ответить на этот вопрос, нужно более
детально представить товары в корзине

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 23

23
Упражнение 2 Сценарий
• Классу ShoppingCart могут потребоваться
следующие свойства:
−Цена товара
−Ставка налога на продажи
−Количество товаров
−Общая стоимость всех товаров в корзине
• Классу ShoppingCart могут потребоваться
следующие варианты поведения:
−Вывести сообщение с общей
стоимостью

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 24

24
Упражнение 2, Часть 1
• Импортируйте и откройте проект
ShoppingCart02
• Объявите и инициализируйте числовые поля:
−price (double)
−tax (double)
−quantity (int)
• Объявите переменную double totalPrice:
−Присвойте значение, рассчитанное на основе полей price ,
tax и quantity

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 25

25
Упражнение 2, Часть 2
• Измените сообщение, чтобы в нем указывалось
количество:
−(пример: "Алекс хочет купить 2 рубашки.")
• Выведите другое сообщение с указанием общей
стоимости

• Ваша программа должна выдавать похожий


результат:
Алекс хочет купить 2 рубашки
Общая стоимость с налогом: $25,78

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 26

26
Примечания к упражнению
• Не рекомендуется представлять свойства и
варианты поведения объектов только в главном
методе
• В этом разделе мы нарушили данное правило,
чтобы сосредоточиться на операциях с данными
• В следующем разделе мы постараемся лучше
следовать правилам Ааа! Почему вы
нарушаете правила!?

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 27

27
Темы
• Символы и строки
• Конкатенация строк
• Смешивание строк и чисел
• Операторы вывода

Типы Взаимная Ввод


Общие Типы текстовы конвертация данных с
сведения о числовы типов клавиату
х
переменных х данных данных ры
данных

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 28

28
Специальные символы в строках
• Помните, мы выводили на экран изображение
кошки?
• Код с двойной косой чертой не выводил данные:
−Данные выводились, только если обратная косая черта
была одна
−Почему?

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 29

29
Escape-последовательность
• Символ, которому предшествует косая черта,
называется escape-последовательностью и имеет
особое значение для компилятора
• В таблице на следующем слайде показаны escape-
последовательности Java

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 30

30
escape-последовательность
escape-последовательность Описание

\t Вставить новый символ табуляции

\b Вставить символ возврата

\n Вставить новую строку

\r Вставить возврат каретки

\f Вставить прогон страницы

\' Вставить символ одинарной кавычки

\" Вставить символ двойной кавычки

\\ Вставить символ обратной косой черты

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 31

31
Escape-последовательность: Пример
• Если нужно разместить одни кавычки внутри
других, используйте escape-последовательность, \",
для внутренних символов кавычек

−Чтобы вывести предложение…


Кошка сказала мне "Мяу!"

−Можно написать следующий код


System.out.println("Кошка сказала мне \"Мяу!\".");

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 32

32
Операторы вывода
• Если текст начат с новой строки, он не обязательно
выводится в новой строке:
System.out.println("Это первая строка."
+ " Это НЕ вторая строка.");
Результат:
Это первая строка. Это НЕ вторая строка.
• Escape-последовательности помогают оформить
результат:
System.out.println("Это первая строка. \n"
+ "Это вторая строка.");
Результат:
Это первая строка.
Это вторая строка.

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 33

33
Другие операторы вывода
• Для вывода данных используется два важных
метода:
System.out.println("Метод вывода строк");
System.out.print("Метод вывода");

• println работает так, как будто в конце оператора


автоматически добавляется \n
• Следующие два оператора дают одинаковые
результаты:
System.out.println("Вывод ");
System.out.print("Вывод \n");

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 34

34
println() и print()
• println() автоматически создает строку:
System.out.println("Это первая строка.");
System.out.println("Это вторая строка.");

Результат:
Это первая строка.
Это вторая строка.

• print() не создает строку:


System.out.print("Это первая строка.");
System.out.print("Это НЕ вторая строка.");

Результат:
Это первая строка. Это НЕ вторая строка.

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 35

35
Сокращенный оператор NetBeans
Метод вывода Насколько часто они используются?
System.out.println() Часто
System.out.print() Не так часто

• System.out.println() используется очень часто


• Однако для этого метода приходится вводить много
данных
• В Netbeans есть сокращенный оператор:
−Введите sout
sout
−Нажмите клавишу Tab
System.out.println("");

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 36

36
Вывод больших объемов текста, Вариант 1
• В зависимости от данных, которые нужно вывести
на экран, можно выбрать один из следующих
способов:
−Разбить оператор вывода на множество строк в NetBeans:
System.out.println("Это первая строка."
+ "Это все еще первая строка."
+ "Просто эта строка очень длинная "
+ "И она не полностью отображается в NetBeans."
+ "\n" + "Это вторая строка."
+ "\n" + "Это третья строка.");

−ИЛИ…

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 37

37
Вывод больших объемов текста, Вариант 2
−Используйте несколько операторов вывода:
System.out.println("Это первая строка.");
System.out.println("Это вторая строка.");
System.out.println("Это третья строка.");
System.out.println("Это четвертая строка.");

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 38

38
Сводка
• В этом уроке вы узнали следующее:
−Использование типа данных char
−Использование строк
−Конкатенация строк
−Основные сведения о escape-последовательностях
−Основные сведения об операторах вывода

JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 39

39
40

Вам также может понравиться