Cum de a crea o linie de programare, tutoriale și exemple

Cel mai simplu mod de a crea un șir de caractere - este de a organiza tipul de legătură într-un șir de caractere șir constantă:

String si = "Acesta este un șir de caractere.";

String s2 = „Este o linie lungă,“ +

„Înregistrată în două linii de cod sursă“;

Nu uita diferența dintre un șir gol s = „string“. nu conține nici un caracter și gol șir de referință s = nul, nu indică nici un rând și un non-obiect.

Modul cel mai corect de a crea un obiect din perspectiva OEP - este de a apela constructorul în funcțiune noi. Clasa string vă oferă o nouă designeri:

  • string () - creează un obiect cu un șir gol;
  • șir de caractere (String str) - de la un obiect creează un alt, astfel încât proiectantul este rar folosit;
  • string (StringBuf str fer) - a transformat un obiect de clasa cop-Ia BufferString;
  • string (byte [] byteArray) - obiectul este creat dintr-o matrice de octeți byteArray;
  • String (char [] charArray) - obiectul este creat dintr-o matrice de caractere charArray Unicode;
  • String (byte [] byteArray, int offset, int count) - obiectul este creat dintr-o porțiune a matrice octeți byteArray începând cu indicele de offset și la numărul de octeți care cuprinde;
  • String (char [] charArray, int offset, int count) - la fel, dar include o matrice de caractere Unicode;
  • String (byte [] byteArray, codare String) - simboluri înregistrate într-o matrice de octeți specificat în Unicode-line cu codificarea de codificare;
  • String (byte [] byteArray, int offset, int count, codare String) - este aceeași, dar numai pentru o parte din matrice.

La locul de muncă greșit indici de offset. conta sau de codificare care codifică o excepție are loc.

Kituri folosind byteArray matrice de octeți. conceput pentru a crea Unicode-string dintr-o matrice de octet codări ASCII de caractere. Această situație apare atunci când citirea ASCII-fișiere, extragerea informațiilor dintr-o bază de date sau în transmiterea de informații în rețea.

În cel mai simplu caz, compilatorul pentru dublu-byte de caractere Unicode pentru a adăuga la fiecare octet senior octet nul. Ia \ u0000 'intervalul - „\ u00ff“ codificarea Unicode codurile corespunzătoare în chirilică Latină 1. Textele vor fi afișate incorect.

În cazul în care computerul face o instalare locală, așa cum se spune în jargonul „instalate la nivel local“ (locale) (în MS Windows ruleaza utilitarul Regional Options din Control Panel), compilatorul va citi aceste setări, de a crea caractere Unicode corespunzătoare pagina de cod locală. În versiunea rusificată a MS Windows este de obicei codul paginii SR1251.

În cazul în care matricea originală cu textul ASCII chirilic a fost codificat SR1251, șirul Java va fi creat în mod corect. se încadrează în gama chirilic '\ u0400' lor - '\ u04FF' codificarea Unicode.

Dar există chirilic, cel puțin patru codificare.

  • In codare MS-DOS este SR866 aplicat.
  • In UNIX utilizate in mod obisnuit care codifică KOI8-R.
  • Pe calculatoarele Apple Macintosh utilizează codificare MacCyrillic.
  • Există, de asemenea internaționale de codificare chirilic ISO8859-5;

De exemplu, octetul 11100011 (0xE3 în format hexazecimal) este codificat în litere SR1251 chirilică G. codificate SR866 - litere U. codificate KOI8-R - Ts literă în ISO8859-5 - y literă. în MacCyrillic - lit.g

În cazul în care originalul chirilic ASCII-textul a fost într-unul dintre aceste seturi de caractere, și codificarea locală a SR1251, șirul de caractere Java Unicode nu se va potrivi cu alfabetul chirilic.

În aceste cazuri, utilizați ultimele două constructori, în care parametrul de codificare specifică ce fel de tabel de cod pentru a utiliza proiectantul pentru a crea linia.

Listarea 5.1 prezintă diferitele cazuri ale textului chirilic de înregistrare. Există trei tablouri bayto'v care conțin cuvântul „România“ în trei codificări.

  • byteCP1251 matrice conține cuvântul „România“ SR1251 codificat.
  • byteSP866 matrice conține cuvântul „România“ în SR866 codificare.
  • ByteKOI8R matrice conține cuvântul „România“, în codificare KOI8-R.

Fiecare serie de trei linii sunt generate folosind trei tabele de codificare.

Listarea 5.1. Creați rânduri de chirilic

statice void main (String [] args) publice

String winLikeWin = null, winLikeDOS = nul, winLikeUNIX = null;

String dosLikeWin = null, dosLikeDOS = nul, dosLikeUNIX = null;

String unixLikeWin = null, unixLikeDOS = nul, unixLikeUNIX = null;

String msg = null;

(Byte) 0xD0, (byte) 0xEE, (byte) 0xFl,

(Byte) 0xFl, (byte) 0xES, (byte) 0xFF

(Byte) 0x90, (byte) 0xAE, (byte) 0xE1,

System.out.println (msg + "codare implicit." + S2);

System.out.println (msg + "string constant." + S3);

System.out.println (msg + "Cp1251 -> Cp1251:" + winLikeWin);

System.out.println (msg + "Cp1251 -> Cp866." + WinLikeDOS);

System.out.println (msg + "Cp1251 -> KOI8-R:" + winLikeUNIX);

System.out.println (msg + "Cp866 -> Cp1251:" + dosLikeWin);

System.out.println (msg + "Cp866 -> Cp866." + DosLikeDOS);

System.out.println (msg + "Cp866 -> KOI8-R:" + dosLikeUNIX);

Println (msg + "KOI8-R -> Cpl251:" + unixLikeWin);

Println (msg + "KOI8-R -> Cp866." + UnixLikeDOS);

System.out.println (msg + "KOI8-R -> KOI8-R:" + unixLikeUNIX);

Primul octet matrice consola byteCP1251 afiseaza trei linii. byteCP866 byteKOI8R și fără conversie în Unicode. Acest lucru se realizează prin scriere () din pachetul FilterOutputStream clasa java.io.

Următoarele trei linii derivate linie consola Java derivată dintr-o matrice de caractere cu []. byteCP866 matrice și constante șir.

Următoarele linii conțin matrice consola convertite.

Puteți vedea că consola este afișată corect doar o matrice de codificare SR866 înregistrate în conformitate cu tabelul de cod SR1251.

Care-i problema? Aici contribuția la rusificarea problemei face ca fluxul de simbol concluzie pe consola sau într-un fișier.

După cum sa menționat în capitolul 1, în Command Prompt fereastră de consolă sistem de operare MS Windows afișează SR866 de codificare a textului.

Pentru a răspunde acestei, cuvintele „“ Romania „în“ transformată într-o matrice octet conține caracterele din SR866 codare, și apoi transferat la șirul msg.

Fig. 5.2. Concluzie șir de caractere chirilice într-un fișier

După cum puteți vedea, chirilică arata destul de diferit. corect caracterele Unicode chirilica obținute prin utilizarea aceluiași tabel de cod în care matricea originală de octeți scrise.

întrebări rusificare vom discuta în capitolele 9 și 18, dar pentru acum, rețineți că, atunci când creați un șir de matrice octet este mai bine pentru a specifica același set de caractere chirilice, care este înregistrată în matrice. Apoi, veți obține un șir Java cu caracterele Unicode corecte.

În derivarea același șir la fereastra consolă, într-un fișier sau transmise prin rețea este mai bine pentru a converti Java șir cu caractere Unicode pe regulile de inferență în locul potrivit.

O altă modalitate de a crea un șir de caractere - este de a folosi două metode statice

Ele creează un șir de caractere la matrice de caractere specificat și returnează ca rezultat al muncii lor. De exemplu, după executarea următorul fragment de program

obține s1 obiect este „Caracter“ și S2 obiect - șir de caractere „liber“.