Студопедия

Главная страница Случайная страница

Разделы сайта

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






Рассмотрим пример.






package by.bsac.practical4.run;

/*

* Строкаобъект, чтопредставляетпоследовательностьсимволов.

* Длясоздания и манипулированиястроками Java платформапредоставляетобщедоступныйфинальный (неможетиметьподклассов) класс java.lang.String.

* Данныйклассявляетсянеизменяемым (immutable) — созданныйобъекткласса String неможетбытьизменен.



*/

 

public class Practical4Test {

public static void main(String[] args) {

/*

* Созданиеобъектакласса String

*/

 

/*

* Cпособ 1: Используястроковыелитералы - последовательностьсимволов

* заключенных в двойныекавычки. Важнопонимать, чтовсегдакогдавы

* используетестроковойлитералкомпиляторсоздаетобъектсозначением

* этоголитерала

*/

String stringExample = " string literal";

System. out. println(" string literal"); // создалиобъект и вывелиего

// значение

 

/*

* 2. С помощьюконструкторов:

*/

String stringForTest = " test string";

char [] testStringAsArrayOfChars = { 't', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g' };

byte [] testStringAsArrayOfBytes = new byte [stringForTest.length()];

for (int i = 0; i < stringForTest.length(); i++) {

char character = stringForTest.charAt(i);

testStringAsArrayOfBytes[i] = (byte) character;

}

 

String first = new String(" test string");

String second = new String(stringForTest);

String third = new String(testStringAsArrayOfChars);

String fourth = new String(testStringAsArrayOfBytes, 0, 4);

 

System. out. println(first);

System. out. println(second);

System. out. println(third);

System. out. println(fourth);

/*

* Сравнениепроизводительностиприсозданиистрокпервым и вторым * способами

*/

long startTime = System. currentTimeMillis ();

for (int i = 0; i < 50000; i++) {

String s1 = " hello";

String s2 = " hello";

}

long endTime = System. currentTimeMillis ();

System. out. println(

" Время, потраченное на создание" + " строковых литералов: " + (endTime - startTime) + " миллисекунд");

long startTime1 = System. currentTimeMillis ();

for (int i = 0; i < 50000; i++) {

String s3 = new String(" hello");

String s4 = new String(" hello");

}

long endTime1 = System. currentTimeMillis ();

System. out. println(" Время, потраченное на создание" + " объектов класса String: " + (endTime1 - startTime1)

+ " миллисекунд");

 

/*

* Длинастроки

*/

String testLength = " String";

// получитьдлинустроки

int length = testLength.length();

// теперьможноузнатьестьлисимволсимвол 't' в " String"

char searchChar = 't';

boolean isFound = false;

for (int i = 0; i < length; ++i) {

if (testLength.charAt(i) == searchChar) {

isFound = true;

break; // первоевхождение

}

}

System. out. println(isFound); // true

/*

* String.indexOf - Возвращаетиндекспервого (последнего) вхождения

* символа в строке.

*/

boolean isFoundCharAt = testLength.indexOf(searchChar)! = -1;

System. out. println(isFoundCharAt); // true

 

/*

* Конкатенация

*/

// 1. Методconcat

String concatString = " ADP".concat(" -java").concat(" -practical").concat(" 4");

System. out. println(concatString); // получим ADP-java-practical4

// 2. Операторы " +" и " +="

String plusString = " java" + " -string";

plusString += " -example";

System. out. println(plusString); // java-string-example

 

String str1 = " test";

String str2 = " string";

String resultString = str1 + str2;

// насамомделе

String resultString2 = new StringBuilder().append(str1).append(str2).toString();

 

/*

* Сравнениестрок

*/

String compareStr1 = new String(" test");

String compareStr2 = " test";

System. out. println(" equals() - строки имеют одинаковое значение: " + compareStr1.equals(compareStr2)); // true

 

System. out. println(" == проверка, одинаковые ли объекты: " + (compareStr1 == compareStr2)); // false

 

String compareStr3 = new String(" test");

System. out. println(" == проверка, одинаковые ли объекты: " + (compareStr1 == compareStr3)); // false

 

String compareStr4 = " test";

System. out. println(" == проверка, одинаковые ли объекты: " + (compareStr2 == compareStr4)); // true

/*

* Преобразование

*/

// 1. Число в строку

 

int integerVariable = 10;

String firstInt = integerVariable + " "; // конкатенация с пустойстрокой

String secondInt = String. valueOf (integerVariable); // вызов

// статического

// метода valueOf

// класса String

String thirdInt = Integer. toString (integerVariable); // вызовметода

// toString

// класса - обертки

 

// 2. Строку в число

 

String stringInt = " 15";

int int1 = Integer. parseInt (stringInt);

/*

* получаемпримитивныйтип (primitive type) используяметод

* parseXхх

* нужногокласса - обертки, гдеXxx - имяпримитива с заглавнойбуквы

* (например parseInt)

*/

int int2 = Integer. valueOf (stringInt); // получаемобъект wrapper

// класса и автоматическираспаковываем

 

/* Примеры, демострирующиенеизменяемостьстрок (immutable) */

String immutableStr1 = " Hello";

String immutableStr2 = immutableStr1; // s1 и s2 now указываютнаодин и тот жеобъекткласса String " Hello"

/*

* Теперьнетничеготакого, чтобымымоглисделать с объектом

* immutableStr1 и неповляитьнаобъект immutableStr2. Ониссылаютсяна

* один и тотжеобъект - строка " Hello" - ноэтотобъектявляется

* неизменяемым (immutable) и такимобразомнеможетбытьизменен.

*

* Еслимывыполнимследующее:

*/

immutableStr1 = " Help! ";

// создаетсяновыйобъект в пулестрок (таккакстрокиявляются

// неизменяемыми (immutable)

System. out. println(immutableStr2); // " Hello" -

// *immutableStr2 продолжаетссылатьсянастроку Hello, таккакданныйобъектнеизменился, а для immutableStr1 былсозданновыйобъект */

 

String string1 = " String";

String string2 = string1;

string1 = string1.replace('i', 'o');

System. out. println(string1); // " Strong"

System. out. println(string2); // " String"

System. out. println(string1 == string2); // " false"

/* таккак s1 и s2 являются 2мя разнымиобъектами */

 

/*

* Форматирование

*

* Класс String предоставляетвозможностьсозданияформатированных

* строк. Заэтоотвечаетстатическийметод format, например:

*/

String formatString = " Printing double variable (%f), string ('%s') and integer variable (%d).";

System. out. println(String. format (formatString, 9.31, " example", 17));

// Printing double variable (9, 310000), string ('example') and integer

// variable (17).

}

 

}

 

Результат:

string literal

test string

test string

test string

test

Время, потраченное на создание строковых литералов: 1 миллисекунд

Время, потраченное на создание объектов класса String: 9 миллисекунд

true

true

ADP-java-practical4

java-string-example

equals() - строки имеют одинаковое значение: true

== проверка, одинаковые ли объекты: false

== проверка, одинаковые ли объекты: false

== проверка, одинаковые ли объекты: true

Hello

Strong

String

false

Printing double variable (9, 310000), string ('example') and integer variable (17).

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.