АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Вопрос 6.5

Читайте также:
  1. E. Некорректный вопрос
  2. I. Перечень вопросов и тем для подготовки к экзамену
  3. II. Вопросительное предложение
  4. VII. Вопросник для анализа учителем особенностей индивидуального стиля своей педагогической деятельности (А.К. Маркова)
  5. X. примерный перечень вопросов к итоговой аттестации
  6. Аграрный вопрос
  7. Анализ влияния рекламы на продвижение противопростудных средств
  8. Балканский вопрос в начале XXв. Русско-германские отношения
  9. Бланк вопросов
  10. БЛОК № 1 (1 – 10 вопрос)
  11. БЛОК № 2 (11 – 20 вопрос)
  12. Блок № 4 (31 – 40 вопрос)
class Quest5 { char A; // 1 void A() {} // 2 class A {} // 3

}

В какой строке может возникнуть ошибка при компиляции данного кода?

1) 1;

2) 2;

3) 3;

4) компиляция без ошибок.

 


Часть 2.
ИСПОЛЬЗОВАНИЕ
КЛАССОВ И БИБЛИОТЕК

Во второй части книги рассмотрены вопросы использования классов Java при работе со строками и файлами, для хранения объектов, при создании пользовательских интерфейсов, многопоточное и сетевое программирование с использованием классов из пакетов java.util, java.text, java.net, java.io, java.awt, javax.swing и др.

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

Глава 7

ОБРАБОТКА СТРОК

Строка в языке Java – это основной носитель текстовой информации. Это не массив символов типа char, а объект соответствующего класса. Системная библиотека Java содержит классы String, StringBuilder и StringBuffer, поддерживающие работу со строками и определенные в пакете java.lang, подключаемом автоматически. Эти классы объявлены как final, что означает невозможность создания собственных порожденных классов со свойствами строки. Кроме того, для форматирования и обработки строк применяются классы Formatter, Pattern, Matcher и другие.

Класс String

Каждая строка, создаваемая с помощью оператора new или с помощью литерала (заключённая в двойные апострофы), является объектом класса String. Особенностью объекта класса String является то, что его значение не может быть изменено после создания объекта при помощи какого-либо метода класса, так как любое изменение строки приводит к созданию нового объекта. При этом ссылку на объект класса String можно изменить так, чтобы она указывала на другой объект и тем самым на другое значение.

Класс String поддерживает несколько конструкторов, например: String(), String(String str), String(byte asciichar[]), String(char[] unicodechar), String(StringBuffer sbuf), String(StringBuilder sbuild) и др. Эти конструкторы используются для создания объектов класса String на основе инициализации значениями из массива типа char, byte и др. Например, при вызове конструктора

new String(str.getChars(), "UTF-8"),

где str – строка в формате Unicode, можно установить необходимый алфавит с помощью региональной кодировки в качестве второго параметра конструктора, в данном случае кириллицу. Когда Java встречает литерал, заключенный в двойные кавычки, автоматически создается объект типа String, на который можно установить ссылку. Таким образом, объект класса String можно создать, присвоив ссылке на класс значение существующего литерала, или с помощью оператора new и конструктора, например:

String s1 = "sun.com";

String s2 = new String("sun.com");

Класс String содержит следующие методы для работы со строками:

String concat(String s) или “ + ” – слияние строк;

boolean equals(Object ob) и equalsIgnoreCase(String s) –сравнение строк с учетом и без учета регистра соответственно;

int compareTo(String s) и compareToIgnoreCase(String s) –лексикографическое сравнение строк с учетом и без учета регистра. Метод осуществляет вычитание кодов символов вызывающей и передаваемой в метод строк и возвращает целое значение. Метод возвращает значение нуль в случае, когда equals() возвращает значение true;

boolean contentEquals(StringBuffer ob) –сравнение строки
и содержимого объекта типа StringBuffer;

String substring(int n, int m) –извлечение из строки подстроки длины m-n, начиная с позиции n. Нумерация символов в строке начинается с нуля;

String substring(int n) –извлечение из строки подстроки, начиная с позиции n;

int length() – определение длины строки;

int indexOf(char ch) – определение позиции символа в строке;

static String valueOf( значение ) – преобразование переменной базового типа к строке;

String toUpperCase()/toLowerCase() – преобразование всех символов вызывающей строки в верхний/нижний регистр;

String replace(char с1, char с2) – замена в строке всех вхождений первого символа вторым символом;

String intern() – заносит строку в “пул” литералов и возвращает ее объектную ссылку;

String trim() – удаление всех пробелов в начале и конце строки;

char charAt(int position) – возвращение символа из указанной позиции (нумерация с нуля);

boolean isEmpty() – возвращает true, если длина строки равна 0;

byte[] getBytes(), getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) – извлечение символов строки в массив байт или символов;

static String format(String format, Object... args), format(Locale l, String format, Object... args) – генерирует форматированную строку, полученную с использованием формата, интернационализации и др.;

String[] split(String regex), split(String regex, int limit) – поиск вхождения в строку заданного регулярного выражения (разделителя) и деление исходной строки в соответствии с этим на массив строк.

Во всех случаях вызова методов, изменяющих строку, создается новый объект типа String.

В следующем примере массив символов и целое число преобразуются в объекты типа String с использованием методов этого класса.

/* пример # 1: использование методов: DemoString.java */

package chapt07;

public class DemoString {

static int i;

 

public static void main(String[] args) {

char s[] = { 'J', 'a', 'v', 'a' }; // массив

// комментарий содержит результат выполнения кода

String str = new String(s); // str="Java"

if (!str.isEmpty()) {

i = str.length(); // i=4

str = str.toUpperCase(); // str="JAVA"

String num = String.valueOf(6); // num="6"

num = str.concat("-" + num); // num="JAVA-6"

char ch = str.charAt(2); // ch='V'

i = str.lastIndexOf('A'); // i=3 (-1 если нет)

num = num.replace("6", "SE"); // num="JAVA-SE"

str.substring(0, 4).toLowerCase(); // java

str = num + "-6"; // str=”JAVA-SE-6”

String[] arr = str.split("-");

for (String ss: arr)

System.out.println(ss);

} else { System. out. println("String is empty!");

}

}

}

В результате будет выведен массив строк:

JAVA

SE

При использовании методов класса String, изменяющих строку, создается новый измененный объект класса String. Сохранить изменения в объекте класса String можно только с применением оператора присваивания, т.е. установкой ссылки на этот новый объект. В следующем примере будет выведено последнее после присваивания значение str.

/* пример # 2: передача строки по ссылке: RefString.java */

package chapt07;

public class RefString {

public static void changeStr(String s) {

s.concat(" Microsystems"); // создается новая строка

}

public static void main(String[] args) {

String str = new String("Sun");

changeStr (str);

System. out. println(str);

}

}

В результате будет выведена строка:

Sun

Так как объект был передан по ссылке, то любое изменение объекта в методе должно сохраняться и для исходного объекта, так как обе ссылки равноправны. Этого не происходит по той причине, что вызов метода concat(String s) приводит к созданию нового объекта.

В следующем примере рассмотрены особенности хранения и идентификации объектов на примере вызова метода equals(), сравнивающего строку String с указанным объектом и метода hashCode(), который вычисляет хэш-код объекта.

/* пример # 3: сравнение ссылок и объектов: EqualStrings.java */

package chapt07;

public class EqualStrings {

public static void main(String[] args) {

String s1 = "Java";

String s2 = "Java";

String s3 = new String("Java");

System. out. println(s1 + "==" + s2 +

": " + (s1 == s2)); // true

System. out. println(s1 + "==" + s3 +

": " + (s1 == s3)); // false

System.out.println(s1 + " equals " + s2 + ": "

+ s1.equals(s2)); // true

System.out.println(s1 + " equals " + s3 + ": "

+ s1.equals(s3)); // true

System.out.println(s1.hashCode());

System.out.println(s2.hashCode());

System.out.println(s3.hashCode());

}

}

В результате, например, будет выведено:

Java==Java: true

Java==Java: false


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.009 сек.)