Кампутары, Праграмаванне
BigInteger Java: праца з вялікімі лікамі
Мова Java у асноўным выкарыстоўваецца для напісання вялікіх карпаратыўных вэб-прыкладанняў. Аднак ён таксама выкарыстоўваецца і ў дачыненні і іншых прадметных галінах, дзе даволі часта ўзнікае неабходнасць у працы з вельмі вялікімі лікамі. Хоць у Java маюцца прымітыўныя тыпы, бываюць сітуацыі, дзе і іх недастаткова.
Вядома, што ва ўсіх прымітываў ёсць адна непрыемная асаблівасць - перапаўненне тыпу, пры якім выхад за межы дапушчальных значэнняў прыводзіць да некарэктным вылічэннях. Для гэтага існуе спецыяльны клас BigInteger. Java не была б Java, калі б у ёй не было асобнага класа з функцыянальнасцю і для гэтага выпадку. Разгледзім яго падрабязней.
Клас BigInteger Java: апісанне
Як вы ўжо зразумелі, клас BigInteger служыць абалонкай для вялікіх цэлалікавых значэнняў. Каб інкапсуляваць лік ў аб'ект дадзенага тыпу, можна выкарыстоўваць адну з перагрузак яго канструктараў, альбо статычны метад valueOf. Канструктар ў якасці аргументу можа прымаць радок альбо масіў байтаў. Для пераўтварэння простых тыпаў, якія прадстаўляюць цэлыя лікі, у BigInteger Java выкарыстоўваюць статычны метад valueOf.
Паколькі ў Java магчымасць перагрузкі аператараў адсутнічае, для выканання матэматычных аперацый над інкапсуляванага ў дадзеным класе значэннямі, прадугледжаны адпаведныя метаду. Пра іх далей і пойдзе гаворка.
Java BigInteger: метады і прыклады іх выкарыстання
Дадзены клас мае ў сваім арсенале мноства метадаў, якія дазваляюць маніпуляваць лікавымі значэннямі і вырабляць над імі разнастайныя матэматычныя аперацыі. Ніжэй прыведзены спіс гэтых метадаў.
Разбяром метады, якія выконваюць арыфметычныя аперацыі:
- add (value) - выконвае складанне значэнняў бягучага аб'екта, з перададзеным ў якасці аргументу;
- subtract (subtractor) - выконвае адніманне subtractor ад бягучага значэння;
- multiply (value) - выконвае множанне;
- divide (divider) - выконвае дзяленне бягучага значэння на divider;
- pow (int arg) - узводзіць значэнне які выклікаў аб'екта ў ступень, велічынёй у arg;
- abs () - вяртае абсалютнае значэнне які выклікаў аб'екта;
- negate () - вяртае аб'ект BigInteger, значэнне якога мае супрацьлеглы знак.
Давайце разбярэм просты прыклад выканання арыфметычнай аперацыі над двума інкапсуляванага ў аб'ект значэннямі:
- BigInteger val1, val2, adding, dividing, oppositeSign;
- val1 = new BigInteger ( "5");
- val2 = BigInteger.valueOf (10);
- adding = val1.add (val2);
- dividing = val2.divide (val1);
- oppositeSign = val1.negate ();
Звярніце ўвагу на спосаб стварэнне аб'ектаў. Пераменная val1 ініцыялізаваць пры дапамозе канструктара, які прыняў радок, і захоўвае значэнне 5. val2 мае значэнне 10 у выніку працы статычнага метаду valueOf. Значэнне зменнай adding гэта вынік складанне першых двух зменных і роўна 15. Невялікі dividing адпаведна захоўвае вынік аднімання. oppositeSign роўны значэнню val1 з процілеглым знакам, т. е. -5.
заключэнне
Як бачыце, клас BigInteger Java прадастаўляе розныя прылады для аперацый над вельмі вялікімі лікамі. Пры гэтым перапаўненне тыпаў выключана, так як бяспека ў Java мае адзін з самых высокіх прыярытэтаў, натуральна без шкоды функцыянальнасці.
Similar articles
Trending Now