23 lut 2010

Deklaracja klasy -plik


  1. Tylko jedna publiczna klasa w pliku!
  2. komentarz może pojawić się na pozątku lub końcu każdej linii.
  3. Nazwa klasy publicznej musi być identyczna z nazwą pliku!
  4. Jeśli klasa jest częścią package to linia z package musi być pierwszą nie komentarzową linią!
  5. Linie z import muszą być pomiedzy package a deklaracją klay!
  6. import i package odnosi sie do całego pliku i może być tylko 1.
  7. Plik może zwierać więcej niepublicznych klas!
  8. Plik bez publicznej klasy nie musi pasować nazwą do czegokolwiek!

JavaBeans


  1. Pola prywatne
  2. metody get i set są public
  3. public void setCosik(int x)
  4. public int getCosik();
  5. Dla boolean : getBool() albo isBool().
  6. Event: public void addMyListener(MyListener m) //takei same nazwy!
  7. Przedrostek add i remove tylko w połączeniu z Listener!!!
  8. nie ma delete!!!

Nazwy identyfikatorów

  1. Identyfikator musi zaczynać się od: $,_ , lub litery.
  2. identyfikator nie może zaczynać się od cyfry!
  3. Kolejne znaki mogą być: cyfrą,literą,$,_.
  4. Nie ma limitów na długość ident.
  5. Nie możesz używać słów kluczowych javy.
  6. foo i Foo to dwa różne identyfikatory!!


  7. Wszystko tyczy się także nazw metod i klas




@Test
public void testIdentyfikatorow() {
//GOOD
int _=5;
int $=5;
int a=8;
int $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$=2;
int _____________________________________=3;
int _1234=4;

//BAD!!

//!int a:=9;
//!int e#=9;
//!int .f=9;
//!int 7g;
//!int enum=5 //bo keyword

}

public void ___(){ } //correct
public void $(){} //correct
public void _$_(){} //corect

private class ${}; //correct
private class ________{}//correct

22 lut 2010

Reszta z dzielenia


@Test
public void testModulo() {

//znak wyniki jest równy znakowi liczby przed %!!
assertEquals(-5 % -2, -1);
assertEquals(-5 % 2, -1);
assertEquals( 5 % -2, 1);
assertEquals( 5 % 2, 1);

assertEquals(-9 % -5, -4);
assertEquals(-9 % 5, -4);
assertEquals( 9 % -5, 4);
assertEquals( 9 % 5, 4);

//pass all
}

Przesunięcia bitowe


@Test
public void PrzesTest(){


assertEquals(23>>33, 23>>1); //pass
assertEquals(23<<33, 23<<1); //pass
assertEquals(23>>>33, 23>>>1); //pass
//ujemne
assertEquals(-23>>33, -23>>1); //pass

assertEquals(-4<<1, -8); //pass

assertEquals(1>>1, 0); //pass
}

Dzielenie przez zero


@Test
public void DivByZero(){

//int i=3/0;
//prn(i); //runtime-error

float f=1.0f/0;
prn(f); //print Infinity

double d=1.0/0;
prn(d); //print Infinity

//ciekawostka 1.0 jest doublem!!

int licznik=1;
int mianownik=0;

// int wynik=licznik/mianownik; //runtime-error

//MOD
int wynik=licznik%1;
prn(wynik); //wynik =0

//!int wynik=licznik%0; runtime error!
prn(wynik); //wynik =0

float ff= 5%0.3f;
prn(ff); //0.199999

float fff= 5%0.0f;
prn(fff); //NaN

float fy=1.0f/0.0f;
prn(fy); //Infinity
}

20 lut 2010

Tablica



//pomocnicza funkcja
private void testObjectTab(Object[] obTab){
for(Object ob: obTab)
prn(ob);
}


@Test
public void Tab3Init(){
int[]test = new int[5];
for(int x:test)
prn(x);
//wynik: 0,0,0,0,0
}
// @Test
public void InitTab2Test(){

testObjectTab(new Object[]{
new Integer(1),
new Float(1.1f),
new Double(1.1)}
);
//wynik: 1 , 1.1 ,1.1
}

// @Test
public void multiTab(){
int[][] mTab ={
{1,2,3},
{4,5,6}
};

for(int[] row:mTab)
for(int cell:row)
prn(cell);
//wynik: 1,2,3,4,5,6
assertEquals(mTab.length, 2); //pass!!!!!!!!!!!
}

// @Test
public void InitTest() {
int tab[];
int[] tab2;

int tab3[] = {1, 2};
int tab4[] = {1, 2, 3, 4, 5,}; //patrz przecinek! =>Ok



int tab4copy[] = tab4;

for (int x : tab4copy) {
x++; //nie zmienia nic w tablicy!
}
for (int x = 0; x < tab4copy.length; x++) {
tab4copy[x]++;
}
//sprawdzamy czy zmieniło się w 2 tablicach ( tab4copy i tab4)
for (int x : tab4) {
prn(x); //2,3,4,5,6
}
assertEquals(tab4, tab4copy); //pass


//test inicjalizacji
//!int tab5[3]; nie wolno bebe
int tab5[] = new int[0];
prn(tab5.length); //0



int tab6[] = new int[(char) 1];
int tab7[] = new int[(byte) 1];
//! int tab7[] = new int[(long)1]; zonk max może być Z
int tab9[] = new int[(int) 1.1];
int tab10[] = new int[(char) 1];

//pozyższe się udaje bo promowanie do inta

//ciekawostka
//! float f=1.1; bo 1.1 to double!


//tablioce obiektów
String[] s = {"ok", "", new String("ok")}; //ok
// String tabS[]={"ok",tabS[0]}; //variable might be not inicjalized!
Integer[] intTab = {1, 1, 3, new Integer(1)};

//int a Integer

//!int[] tabInt= new Integer[3]; zonk
//!Integer[] tabInteger= tab4; zonk


}