KURDE też mi polskie nie dzialaja łąłńźżćóą masz, skopiuj sobie xD no, już już:D
package edu.osego.cs.dl; // ten plik należy do pakietu edu.osego.cs.dl, będzie się znajdował pewnie gdzieś w katalogu projekty/edu/osego/cs/dl
import java.io.*; // importujemy bibliotekę (niewskazane wszystko na raz)
import java.utils.ArrayList; // importujemy bibliotekę (wskazane, co trzeba)
/**
* This is just an example
* @author John Doe
*/
// powyżej komentarz zaczynający się od dwóch gwiazdek – program java-doc tworzy na podstawie takich specjalnych komentarzy dokumentację w HTMLu
public class Example extends BasicClass {
int exampleNum;
int f() {
int n = 0;
return n;
}
}
NIE MA JAVY BEZ IDE:) komentarze jak w C
Klasa – struktura (podobna do struct
) zawierająca pola (zmienne) i funkcje (tzw. metody).
Zmienne – (exampleNum
, n
w przykładzie) dzielą się na dwa typy: automatyczne (konieczne inicjowanie, na stosie) oraz nieautomatyczne (inicjowane zerem właściwym dla typu, na stercie).
Konwencje nazewnictwa i stylu przyjęte przy pisaniu programów w Javie.
- pakiety: małe litery, nazwa jako „odwrócona domena”, np. edu.oswego.cs.dl
- klasy: CapitalizedWithInternalWordsAlsoCapitalized, Nazwy, rzeczowniki
- wyjątki: j. w., kończymy nazwę przez Exception, np. MyExtension
- interfejsy: Przedrostek „I” albo w formie imiesłowu Throwable, np. IAdapter
- pola wewnętrzne: camelNotationField albo _camelNotationField
- pola statyczne: camelNotationField albo __cameNotationField
- metody: camelNotation(), najlepiej z czasownikiem, np. doSomething()
- stałe: TO_JEST_STALA
- bloki
…
}```
* wcięcia: każde wyrażenie (statement) w innej linii, linie maksymalnie 80 znaków, wcięcia kodu na 4 spacje
# Słowa kluczowe języka
Do podejrzenia (na slajd skopiowane z): http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
### strictfp
Wymusza konkretną dokładność (zwykle ogranicza) z jaką liczone są wyrażenia matematyczne zmiennoprzecinkowe.
public strictfp class FpDemo { public static void main(String[] args) { double d = 8e+307; System.out.println(4.0 * d * 0.5); System.out.println(2.0 * d); } }
Wypisze `infinity`, a następnie `1.6e308`
### assert
Wpisując w kodzie `assert i>0 : "Problem with i!!!";` mówimy Javie „w tym miejscu i musi być większe od zera, jeśli jest mniejsze lub równe, to znaczy, że coś się strasznie skopało, powiadom mnie o tym”.
### enum
a nie zapisałem
## Typy
* typy prymitywne
* logiczne – true, false; brak rzutowania na typ całkowity
* tekstowe: char
* całkowite: byte ($-2^7 \ldots 2^7-1$, 0), short ($-2^{31} \ldots 2^{15}-1$, 0), int ($-2^{31} \ldots 2^{31}-1$, 0), long ($-2^{63} \ldots 2^{63}-1$, 0L)
* zmiennoprzecinkowe: float (32 bity, 0.0f), double (64 bity, 0.0d)
* typy referencyjne – reszta
## Przekazywanie wartości
* prymitywne – przez wartość (`n` nie ulega zmianie)
```int f(int n) {
return ++n;
}```
* referencyjne – przez referencję (`a.exampleNum` ulega zmianie)
```int f(Example a) {
return ++a.exampleNum;
}```
## Operatory
* Separatory . [] () ; ,
* RtoL ++ -- (pre- i post-) + -(unarne) ~ ! (rzutowanie)
* LtoR * / %
* LtoR + - +-konkatenacyjny
* LtoR << >> (uzupełnia jedynkami, dzielenie przez potęgę 2) >>> (uzupełnia zerami)
* LtoR < > <= >= instanceof
* LtoR == !=
* LtoR &
* LtoR ^
* …
Short circuit: &&, ||
bla bla bla obczajcie se slajdy