
Жолдармен жұмыс істеу
Java тілінде мəтіндік жолдар объектілер болып табылады. Олар string немесе stringBuffer класының нұсқалары түрінде беріледі. String класының объектілерінде айнымас ұзындықтағы және мазмұнды жолдық тұрақтылар сақталады. Бұл жолдарды өңдеуді айтарлықтай жылдамдатады. . StringBuffer класының объектілерінде сақталған жолдар ұзындығын жолдар мен символдарды қою жəне қосу, астыңғы жолдарды өшіру немесе бірнеше жолдарды бір жолға біріктіре отырып ауыстыруға болады. Көп жағдайда, string типті жолдың ұзындығын өзгерту керек болғанда, Java компиляторы оны stringBuffer типіне түрлендіреді, ұзындығын өзгертеді, содан кейін қайтадан string типіне түрлендіреді. Мысалы, келесі əрекет
String s = «Бұл» + » жалғыз» + «жол»;
компилятор былай орындайды:
String s = new StringBuffer().append(«Бұл»).append(» жалғыз «).append(«жол»).toString(); StringBuffer класты объект құрылады, оған жолдар тізбегі қосылады»Бұл», «жалғыз»,
«жол», жəне алынған StringBuffer класты объект toString () əдісімен String типінкелтіріледі. Жолмен жұмыс істемес бұрын оны құру керек. Оны əртүрлі тəсілмен жасауға болады.
Жолды құрудың ең қарапайым тəсілі–ол string типті сілтемені жолдық-тұрақтыға ұйымдастырады:
String si = «Бұл жол.»;
Егер тұрақты ұзын болса, оларды біріктіру операциясымен байланыстыра отырып, мəтіндік редактордың бірнеше жолына жазуға болады:
String s2 = «Бұлұзынжол, » +
«бастапқы мəтіннің екі жолына жазылған»; Сонымен қатар символдар массивінен жол құруға болады, мысалы:
char array[]={‘a’,’b’,’c’};String s=new String(array);
Объектілі бағытталған бағдарламалау(ОББ) көзқарасы бойынша объект құрудың ең тиімді тəсілі — бұл new операциясында оның конструкторын шақыру.String класы тоғыз конструкторды береді:
string() — бос жолы бар объект құрылады;
1. string (String str) — бір объектіден басқа құрылады, сондықтан бұл конструктор сирек қолданылады;
2. string (StringBuf fer str) — BufferString класы объектісінің түрлендірілген көшіропиясын;
3. string(byte[] byteArray) — объект byteArray байттар массивінен құрылады;
4. String (char [] charArray) — объект Unicode символдарының charArray массивінен құрылады;
5. String (byte [] byteArray, int offset, int count) — объект count байттардан тұратын жəне offset индексінен басталатын, byteArray байттар массивінің бөлігінен құралады;
6. String (char [] charArray, int offset, int count) — алдыңғыдай, бірақ массив Unicode
символдарынан тұрады;
7. String(byte[] byteArray, String encoding) — байттар массивінде жазылған символдар encoding кодталу есебімен Unicode-жолында беріледі;
8. String(byte[] byteArray, int offset, int count, String encoding) — бұлдасондай, бірақ тек массив бөлігі үшін.
Оffset, count индекстерін немесе encoding кодталуын дұрыс бермегенде келеңсіз жағдайлар туындайды.
Жолдармен плюс +белгісімен белгіленетін жолдардың айқасуы операциясын жүргізуге болады. Бұл операция бірінші жəне екінші жолдардың қиылысуынан құралған жаңа жол құрады. Оны тұрақтыларға да, айнымалыларға да қолдануға болады. Мысалы:
String attention = «Назараударыңыз: «; String s = attention + «белгісізсимвол»;
Екіншіоперация — меншіктеу += — солжақтағыайнымалыларғақолданылады: attention += s;
Жолдың ұзындығын, яғни ондағы символдар санын білу үшін length() əдісінқолдану керек:
String s = «Write once, run anywhere.»; int len = s.length{);
немесе
int len = «Write once, run anywhere.».length();
жолдық-тұрақты – string класыныңтолықобъектісі.
Ind индексті (бірінші символдың индексі нольге тең) символ таңдау үшін charAt(int ind) əдісін қолдануға болады. Егер ind индекстері немесе жолдың ұзындығынан аз болмаса, келеңсіз жағдай туындайды. Мысалы, келесі анықтамадан кейін
char ch = s.charAt(3);
chайнымалысы ‘t’ мəнінқабылдайды.
Символдар массиві түріндег іжолдың барлық символдарын,символдар массивін қайтаратын toCharArray() əдісіменалуғаболады.
Егер dst символдар мАссивіне ind индексінен бастап, begin индексімен бірге end индексіне дейін (end индексі кірмейді), ішкі жол қосу керек болса, онда void типті getChars(int begin, int end, char[] dst, int ind) əдісіқолданылады.
Массивке ind индексінен ind + (end — begin) – 1 индексіне дейінгі массив элементтерінен тұратын, end — begin символдары жазылады.
Бұл əдіс келесі жағдайларда ерекше жағдайлар құрады:
1. dst сілтемесі = null;
2. begin индексі теріс;
3. begin индексі end индексінен үлкен;
4. end индексі жол ұзындығынан үлкен;
5. ind индексі теріс;
6. ind + (end — begin) > dst.length.
Егер ASCII байттық кодтауындағы жолдардың барлық символдарынан тұратын байттар массивін алу керек болса, онда getBytes() əдісін қолдану керек.
Бұл əдіс символдарды Unicode-тан ASCII-қа аударғанда жергілікті кодтау кестесін қолданады.
Егерде байттар массивін жергілікті кодтауда ,емес басқа да алсақ, getBytes(String encoding) əдісі қолданылады.
Sub string(int begin, int end) əдісі ішкі жолды символдан begin индексімен бірге символға дейін end индексін қоспай белгілейді. Ішкі жолдың ұзындығы end – begin теңболады.
Substring (int begin) əдісі ішкі жолды begin индексінен бастап жолдың соңына дейін ерекшелейді.
Егер индекстер теріс болса, end индексі жолдың ұзындығынан үлкен болса немесе begin end-кеқарағанда үлкен болса, онда ерекше жағдай туындайды.
Мысалы, мынаорындалуданкейін
String s = «Write onсe, run anywhere.»; String sub1 = s.substring(6, 10);
String sub2 = s.substring(16);
sub1жолында «once» мəнін, ал sub2 — «anywhere» мəніналамыз.
Салыстыру операциясы = тек сілтемелерді жолдарға салыстырып қояды. Ол сілтемелер тек бір ғана жолға көрсетеме сонны анықтайды. Мысалы, жолдар үшін
String s1 = «Кезкелгенжол»; String s2 = «Басқажол»;
салыстыру s1 == s2 нəтижесінде false береді.
True мəні орындалады, тек қана егер ек сілтемеде бір жолға ғана көрсетілсе, мысалы, si = s2 меншіктеуден кейін.
Іздеу əрқашан əріптер көрсеткіші есебімен жүргізіледі.Берілген this жолында ch символының алғашқы пайда болуын indexOf(int ch) əдісімен байқауға болады, ол осы символдың индексін жолда қайтарады немесе -1-деқайтарады, егер ch символы this жолында жоқ болса.
Мысалы, «Молоко», indexOf(‘о’) нəтижесінде 1-дібереді.
Берілген this жолға sub ішкіжолыныңбіріншіенуін indexof (String sub) əдісііздейді. Ол sub ішкі жолының бірінші енуінің бірінші символының индексін жолға қайтарады немесе-1-ге қайтарады, егер sub ішкі жолы this жолына кірмесе. Мысалы, » Раскраска «.indexof («рас») нəтижесінде 4-тібереді.
Егер іздеуді жолдың басынан емес, қандайда бір ind индекстен бастасақ, index Of (String sub, int ind) əдісін қолдану керек. Егер ind < 0 болса, онда іздеу жолдың басынан басталады, ал егер ind жолдың ұзындығынан үлкен болса, онда символ ізделінбейді, яғни -1 қайтарылады.
Берілген this жолына sub аудармасының соңғы енуін last indexof(string sub) əдісімен іздеп табуға болады, ол this жолына sub ішкі жолының соңғы енуінің бірінші символының индексін қайтарады немесе (-1), егер sub ішкі жолы this жолына енбесе.
Sub ішкі жолының this жолының бəріне емес, оның басына, яғни ind индексіне дейін ғана соңғы енуін lastIndexof(String stf, int ind) əдісімен іздеуге болады.Егер ind жолдың ұзындығынан үлкен болса, онда іздеу жолдың соңынан жүргізіледі, егер ind < 0 болса, онда -1 қайтарылады.
To Lower Case() əдісі барлық əріптері төменгі регистрге,яғни кіші əріптерге ауысатын жаңа жолды қайтарады.
To UpperCase() əдісі барлық əріптері жоғарғы регистрге,яғни бас əріптерге ауысатын жаңа жолды қайтарады.
Мұнда үнсіз келісім бойынша жергілікті кодты кесте қолданылады. Егер басқа локаль қажет болса, онда to LowerCase(Locale loc) жəне toUpperCase(Locale loc) əдістері қолданылады.
Replace(int old, int new) əдісі old символының барлық енуі new символымен алмастырылған жаңа жолды қайтарады. Егер old символы жолда жоқ болса, онда сілтеме бастапқы жолға қайтарылады.
Əріптер регистрі алмасу кезінде есептеледі.
Trim() əдісі ‘\u0020’ аспайтын кодтары бар, бастапқы жəне соңғы символдары өшірілген жаңа жолды қайтарады.
Сандардың жолға түрленуі келесі түрде іске асады: Int i=10; String s=”” + I;
Жолдың бір символының басқамен алмасуы келесі түрде орындалады: s=s.replace(‘a’,’o’);
Қай орыннан бір жолдың екіншіге өтетінін анықтауға болады: int i=s.indexOf(“ab”);
Егер “ab” ішкі жолы s жолында болмаса, онда -1 мəні қайтарылады.