Spiral, Рядки в Java

Спіральгрупа

CтрокивJava.ВзаимнаяконвертацияРядок, StringBuffer, StringBuilder, char[], byte[]. JDK 1.6.

String s = new String( "Перетворення рядка на StringBuffer ");

StringBuffer s_buffer = новий StringBuffer ( s.subSequence (0, s.length ()));

String s = new String( "Перетворення рядків у StringBuilder ");

StringBuilder s_buffer = новий StringBuilder ( s.subSequence (0, s.length ()));

String s = new String( "Перетворення рядків у масив символів");

char[] ch = s.toCharArray ();

String s = new String( "Перетворення рядка в масив байтів");

byte[ ] b = s.getBytes ();

byte[] b = s.getBytes (" Cp1251 ");

byte[ ] b = s.getBytes ( Charset.forName ( " Cp1251 " ));

(додатково потрібен імпорт пакета java . nio . charset . Charset )

StringBuffer sb = new StringBuffer ( " Перетворення StringBuffer на тип String " );

StringBuffer s_buffer = new StringBuilder ( " Перетворення StringBuffer на тип StringBuilder " );

StringBuilder s_builder = новий StringBuilder ( s_buffer.subSequence (0, s_buffer.length ()));

StringBuilder s_buffer = new StringBuilder ( " Перетворення StringBuffer на масив символів " );

char[] ch = s_builder.toString (). toCharArray ();

StringBuffer s_buffer = new StringBuffer ( " Перетворення в масив байтів " );

byte[] b = s_buffer.toString (). getBytes ();

byte[] b = s_buffer.toString (). getBytes ( " Cp1251 " );

byte[] b = s_buffer.toString (). getBytes ( Charset.forName ( " Cp1251 " ));

(додатково потрібен імпорт пакета java . nio . charset . Charset ; )

StringBuilder sb = new StringBuilder ( "Перетворення на тип String" );

StringBuilder s_builder = новий StringBuilder ( "Перетворення на тип StringBuffer");

StringBuffer s_buffer = новий StringBuffer ( s_builder.subSequence (0, s_builder.length ()));

StringBuilder s_builder = new StringBuilder ( " Перетворення на масив символів " );

char[] ch = s_builder.toString (). toCharArray ();

StringBuilder s_builder = new StringBuilder ( " Перетворення на масив символів " );

byte[] b = s_builder.toString (). getBytes ();

byte[] b = s_builder.toString (). getBytes ( " Cp1251 " );

byte[] b = s_builder.toString (). getBytes ( Charset.forName ( " Cp1251 " ));

(додатково потрібен імпорт пакета java . nio . charset . Charset )

Наступна програма демонструє конвертацію рядків різних типів ( String , StringBuffer , StringBuilder ) в другу.

public static void main(String args []) створює виняток

Рядок s = новий рядок ("Перший");

StringBuffer s_buffer = новий StringBuffer ("Другий");

StringBuilder s_builder = новий StringBuilder ("Третій");

StringsConvertation sc = нова StringsConvertation ();

System.out.println ( "----------- Перетворює рядок на StringBuffer ------------");

System.out.println ( "вихідний рядок: "+s);

System.out.println ( "тип джерела: "+ s.getClass (). getName ());

System.out.println ( "перетворений рядок: "+ sc.convertToStringBuffer (s));

System.out.println ( "тип результату: "+ sc.convertToStringBuffer (s). getClass (). getName ());

System.out.println ( "----------- Перетворює StringBuilder на StringBuffer ------------");

System.out.println ( "вихідний рядок: "+s_builder );

System.out.println ( "тип джерела: "+ s_builder.getClass (). getName ());

System.out.println ( "перетворений рядок: "+ sc.convertToStringBuffer ( s_builder ));

System.out.println ( "тип результату: "+ sc.convertToStringBuffer ( s_builder). getClass (). getName ());

System.out.println ( "----------- Перетворює рядок у StringBuilder ------------");

System.out.println ( "вихідний рядок: "+s);

System.out.println ( "тип джерела: "+ s.getClass (). getName ());

System.out.println ( "перетворений рядок: "+ sc.convertToStringBuilder (s));

System.out.println ( "тип результату: "+ sc.convertToStringBuilder (s). getClass (). getName ());

System.out.println ( "----------- Перетворює StringBuffer на StringBuilder ------------");

System.out.println ( "вихідний рядок: "+ s_buffer );

System.out.println ( "тип джерела: "+ s_buffer.getClass (). getName ());

System.out.println ( "перетворений рядок: "+ sc.convertToStringBuilder ( s_buffer ));

System.out.println ( "тип результату: "+ sc.convertToStringBuilder ( s_buffer). getClass (). getName ());

System.out.println ( "----------- Перетворює StringBuffer на String ------------");

System.out.println ( "вихідний рядок: "+ s_buffer );

System.out.println ( "тип джерела: "+ s_buffer.getClass (). getName ());

System.out.println ( "перетворений рядок: "+ sc.convertToString ( s_buffer ));

System.out.println ( "тип результату: "+ sc.convertToString ( s_buffer). getClass (). getName ());

System.out.println ( "----------- Перетворює StringBuilder на String ------------");

System.out.println ( "вихідний рядок: "+ s_builder);

System.out.println ( "тип джерела: "+ s_builder.getClass (). getName ());

System.out.println ( "converted string: "+ sc.convertToString ( s_builder ));

System.out.println ( "result type: "+ sc.convertToString ( s_builder ). getClass(). getName());

* До вінвертує рядок типів String, StringBuilder, StringBuffer

* у рядок типу StringBuffer.

public StringBuffer convertToStringBuffer ( CharSequence s)

return new StringBuffer (s.subSequence (0,s.length()));

* До вінвертує рядок типів String, StringBuilder, StringBuffer

* у рядок типу StringBuilder.

public StringBuilder convertToStringBuilder ( CharSequence s)

return new StringBuilder (s.subSequence (0,s.length()));

* До вінвертує рядок типів String, StringBuilder, StringBuffer

* У рядок типу String.

public String convertToString ( CharSequence s)

return s.subSequence (0,s.length()). toString();

Слід врахувати, що клас StringBuilder введений у JDK 1.5, а інтерфейс CharSequence введений у JDK 1.4. Всі три типи рядків String, StringBuffer, StringBuilder реалізують інтерфейс CharSequence, що дає можливість використовувати властивості поліморфізму. Вихідний код скорочено за рахунок зведення до мінімуму кількості конвертаційних методів.

String s = new String(ch);

Наприклад, конкретний екземпляр Charset можна отримати за допомогою статичного методу forName(), всередині якого необхідно вказати аргумент - найменування кодування. Клас Charset зручний тим, що його методи є потоком захищеними і один екземпляр може розділятися по доступу безліччю потоків.