30 Mayıs 2011 Pazartesi

Apache Commons Lang Kütüphanesi-3: lang.math.* Paketi

Lang kütüphanesini incelemeye org.apache.commons.lang.math paketi ile devam ediyoruz.

Bu pakette bulunan sınıflar java.math paketindekilere ek özellikler katar. İncelemeye değer en önemli sınıf NumberUtils'dir. Diğer sınıflar bu sınıfın kullandığı bazı tanımlamaları içerir.

import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.lang.math.RandomUtils;

import java.math.BigDecimal;

public class MathUtilsTrial {
    public static void main(String[] args) {
        //İki double değeri karşılaştır
        System.out.println("(FIRST > SECOND) >>> " +
            NumberUtils.compare(2.11, 1.11));
        System.out.println("(FIRST < SECOND) >>> " +
            NumberUtils.compare(1.11, 2.11));
        System.out.println("(FIRST == SECOND) >>> " +
            NumberUtils.compare(1.11, 1.11));

        //Karakter katarından bir BigDecimal oluştur
        BigDecimal bDecimal = NumberUtils.createBigDecimal("123456789");

        //Bir karakter katarının sadece sayılardan oluştuğunu doğrular
        System.out.println("Is Digits >>> " + NumberUtils.isDigits("123.123"));

        //Bir karakter katarının geçerli bir sayı ifade ettiğini doğrular
        System.out.println("Is Number >>> " + NumberUtils.isNumber("123.123"));

        //Dizinin en büyük elemanını döner
        System.out.println("MAX >>> " +
            NumberUtils.max(new double[] { 3.33, 8.88, 1.11 }));

        //Karakter katarını int değere çevirir. Çeviremezse öntanımlı değeri döner: 77
        System.out.println("String to Int >>> " +
            NumberUtils.toInt("ABCD", 77));

        //Rastgele sayıla üretir
        System.out.println("Random double >>> " + RandomUtils.nextDouble());
        System.out.println("Random float >>> " + RandomUtils.nextFloat());
        System.out.println("Random int >>> " + RandomUtils.nextInt());
    }
}

Çıktısı:
(FIRST > SECOND) >>> 1
(FIRST < SECOND) >>> -1
(FIRST == SECOND) >>> 0
Is Digits >>> false
Is Number >>> true
MAX >>> 8.88
String to Int >>> 77
Random double >>> 0.2720979622981403
Random float >>> 0.8221457
Random int >>> 738187848

compare() metodu, iki değer eşitse 0, ilk değer daha büyükse 1, ikinci değer daha büyükse -1 döner.

Dikkate değer bir diğer metod da createNumber()'dır. Bu metod bir karakter katarını  java.lang.Number 'ın alt tiplerinden uygun olan bir tanesine dönüştürür. Daha detaylı açıklarsak, bildiğiniz gibi Java'da bütün sayısal sarıcı sınıflar (Integer, Float, Double...) java.lang.Number'ın alt sınıfıdır.  createNumber() neredeyse bütün sayısal gösterimlerden anlar (int, float, double, hex, binary, octal, ...) ve bulduğu sayıyı uygun tipte döner.

Bu pakette ayrıca xxxRange kalıbında birkaç sınıf daha vardır. Bu sınıfları kullanarak double, float, int ve long tipleri için sayı aralıkları tanımlayabilir ve herhangi bir değerin bu aralıkta olup olmadığını kontrol edebilirsiniz.

Kolay Gelsin.

Hiç yorum yok:

Yorum Gönder