package p01_zmienne;

import java.math.BigDecimal;

public class Typy {

	public static void main(String[] args) {
		// W Javie istnieje 8 typów "prostych":
		// byte, short, int, long - liczby całkowite ze znakiem z różnymi zakresami wartości
		
		short s1 = 10000;
		System.out.println(s1);
		// short s2 = 1000000; // nie da się wpisać miliona, bo za duża wartość
		
		int milion = 1000000;
		System.out.println(milion);
		System.out.println(milion * milion);
		// gdy wynik obliczenie wychodzi poza zakres, to pojawi się błędny wynik - "integer overflow"
		
		// float, double - liczby "zmiennoprzecinkowe", czyli liczby z ułamkiem, ale działające "dziwnie"
		// float (32 bity) ma mniejszy zakres i precyzję, a double (64 bity) większy zakres i precyzję
		double cena = 1.20;
		System.out.println(cena);
		System.out.println(3 * cena);

		// char - pojedynczy znak, który technicznie jest tak naprawdę kodem znaku
		char c = 'A';
		System.out.println(c);   // A
		System.out.println(c+1); // 66
		
		// boolean - wartości logiczne false i true
		boolean warunek = cena * 3 == 3.6;
		System.out.println(warunek);
	
		// Poza typami prostymi, istnieją typy obiektowe:
		// - klasy, interfejsy, rekordy, enumy, ale też tablice
		// - sama platforma Java definiuje kilka tysięcy takich typów
		// - ale każdy programista może definiować swoje
		
		String napis = "Ala";
		napis += " ma kota";
		System.out.println(napis);
		
		BigDecimal cenaBD = new BigDecimal("1.20");
		BigDecimal trzy = BigDecimal.valueOf(3);
		System.out.println(cenaBD.multiply(trzy));
	}

}
