Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Java Foundations
3-3
Текстовые данные
2
Цели
• В данном уроке рассматриваются следующие темы:
−Использование типа данных char
−Использование строк
−Конкатенация строк
−Основные сведения о escape-последовательностях
−Основные сведения об операторах вывода
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 3
3
Темы
• Символы и строки
• Конкатенация строк
• Смешивание строк и чисел
• Операторы вывода
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 4
4
Примитивный текстовый тип
• Единственный примитивный тип текстовых
данных — char
• Он используется для одиночных символов (16 бит)
• Пример:
−char shirtSize = 'M';
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
Эффективное объединение нескольких символов в
строку
• Вот более рациональный способ
• Для целого предложения требуется всего одна
строка:
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 7
7
Символы и строки
• Переменные char используются для одиночных
символов
−Используйте одинарные кавычки
char shirt1Size = 'S';
char shirt2Size = 'M';
char shirt3Size = 'L';
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 8
8
Символы и строки
• Строка поддерживает несколько символов
−Используйте двойные кавычки
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 9
9
Примитивы
Тип Длина Данные
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 10
10
Проведем исследование
• Возможно, вы заметили другие различия между
типами char и String?
char shirt3Size = 'L';
String shirt6Size = "XXXL";
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";
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 14
14
Строковые переменные и строковые литералы
String stringVariable = "Это строковый литерал.";
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 + "!";
• Результат:
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
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
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 рубашки.")
• Выведите другое сообщение с указанием общей
стоимости
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-последовательность Описание
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 31
31
Escape-последовательность: Пример
• Если нужно разместить одни кавычки внутри
других, используйте escape-последовательность, \",
для внутренних символов кавычек
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("Метод вывода");
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 34
34
println() и print()
• println() автоматически создает строку:
System.out.println("Это первая строка.");
System.out.println("Это вторая строка.");
Результат:
Это первая строка.
Это вторая строка.
Результат:
Это первая строка. Это НЕ вторая строка.
JFo 3-3
Текстовые данные © 2020, Корпорация Oracle и аффилированные с ней лица. Все права защищены. 35
35
Сокращенный оператор NetBeans
Метод вывода Насколько часто они используются?
System.out.println() Часто
System.out.print() Не так часто
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