double a = 1.23456; double b = a; a += 2; // poté bude v a hodnota 3.23456 (tj. přičteno), // v b stále hodnota 1.23456
boolean
, čísla s pohyblivou řádovou čárkou
Java striktně rozlišuje mezi hodnotami:
(čísla, logické hodnoty, znaky) a
(řetězce a všechny uživatelem definované [tj. vlastní] typy-třídy)
Základní rozdíl je v práci s proměnnými:
přímo obsahují danou hodnotu, zatímco
obsahují pouze odkaz na příslušný objekt
double a = 1.23456; double b = a; a += 2; // poté bude v a hodnota 3.23456 (tj. přičteno), // v b stále hodnota 1.23456
boolean
, char
) postupuje Java vždy takto:
Chceme-li předat výsledek "nahoru" (volajícímu kódu), pak buďto:
return
⇒ běžné a bezproblémové)
public class IntParamDemo { // tato metoda při zavolání navenek nic neprovede, // modifikace i je jen modifikací lokální proměnné, // která se při opuštění zapomene private static void addTwo(int i) { i += 2; // přičteme k i dvojku } public static void main(String[] args) { int value = 50; addTwo(value); System.out.println(value); // vypíše 50!!! } }
clone()
.
public class Counter { private double value; public Counter(double v) { value = v; } public void add(double v) { value += v; } public void show() { System.out.println(value); } }
Counter c1 = new Counter(1.23456); Counter c2 = c1; c1.add(2); c1.show(); c2.show();
3.23456 3.23456
int
čtyři bajty)
zahrnují typy celočíselné (byte
, short
, int
a long
) a typ char
. Jsou obdoba ordinálních typů v Pascalu.
float
a double
boolean
int
s rozsahem -2147483648
.. 2147483647
, dobrá volba, když dopředu neznáme přesně
požadovaný rozsah celých čísel
Alternativy:
long
, cca 9*10^18
short
(16 bitů), tj. -32768 .. 32767 a
byte
(8 bitů), tj. -128 .. 127
int
s rozsahem -2147483648 .. 2147483647, dobrá volba,
když dopředu neznáme přesně požadovaný rozsah celých čísel.
short
, byte
)
ve většině případů ke zrychlení běhu kódu, spíše naopak.
Počínaje Java 7 lze použít notaci s podtržítkem k oddělení řádů dlouhých čísel (většinou po tisících).
private static final int INHABITANTS = 10_538_275;
char
char
jeden 16bitový znak v kódování UNICODE
char
zapisujeme buď:
'a'
, 'Ř'
\n
(konec řádku) \t
(tabulátor)
\u0040
(totéž, co 'a'
)
\127
char
— kódováníjava.util.ResourceBundle
).
float
32 bitů
double
64 bitů
float
a double
float
(klasický i semilogaritmický tvar) — povšimněte si f
nebo F
za číslem — je u float
nutné!:
float
float f = -.777f, g = 0.123f, h = -4e6F, 1.2E-15f;
double
double d = -.777, e = -4e6;
— tentýž zápis,
ovšem bez f
za konstantou a s větší povolenou přesností a rozsahem
float
a double
Float.POSITIVE_INFINITY
,
Float.NEGATIVE
…
Double
MIN_VALUE
, podobně pro MAX_VALUE
…
NaN
= Not A Number
boolean
false
a true
.
<
, <=
, >=
, >
void
void
nepíše.