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 зручний тим, що його методи є потоком захищеними і один екземпляр може розділятися по доступу безліччю потоків.