Skip to content

Instantly share code, notes, and snippets.

@sjchmiela
Created March 17, 2014 18:07
Show Gist options
  • Save sjchmiela/9604908 to your computer and use it in GitHub Desktop.
Save sjchmiela/9604908 to your computer and use it in GitHub Desktop.

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).

Java Coding Standards

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment