Zobacz wyniki ankiety: Co sprawiłoby, że ten kurs byłby lepszy

Głosujących
8. Nie możesz głosować w tej sondzie
  • więcej przykładów

    3 37.50%
  • więcej szczegółów

    4 50.00%
  • więcej ćwiczeń do samodzielnego wykonania

    4 50.00%
  • więcej materiału w pojedyńczych lekcjach

    5 62.50%
  • mniej materiału w pojedyńczych lekcjach

    0 0%
  • ogólnie kiepsko napisany kurs, wiele by zmieniać

    0 0%
Ankieta wielokrotnego wyboru
Strona 1 z 3 123 OstatniOstatni
Pokaż wyniki 1 do 10 z 22

Temat: Część druga - main i hello world... cz1.

  1. #1
    Avatar javaman
    javaman jest offline www.javainside.pl
    Zarejestrowany
    Mar 2008
    Skąd
    no przed monitorem przecież...
    Postów
    474

    Domyślnie Część druga - main i hello world...

    W swojej radosnej twórczości chcę, byście zaczęli pisać programy jak najszybciej, i poznawali przydatne rzeczy, a nie zaśmiecali sobie głów zbędnymi informacjami które są i funkcjonują tylko w encyklopedii. W związku z powyższym, np. w dzisiejszej lekcji omówię tylko takie najważniejsze i używane rzeczy, np. typy zmiennych - omówię tylko kilka których używa się na codzień, pozostałe tylko wymienię. Dlatego jeśli ktoś np. doczytał - proszę nie wypominajcie ze o czymś tam nie dopowiedziałem - rzadko używane rzeczy będę raczej pomijał. Chcę by to był kurs treściwy, uważam, że nie ma co się rozwlekać np. nad wszystkimi typami zmiennych przez 3 dni, kiedy w tym czasie może już zaczniemy sockety robić.

    Oprogramowanie:
    jeśli chodzi o pierwszy edytor:
    zaopatrzcie się w JDK od Suna:
    http://java.sun.com/javase/downloads/index.jsp
    Zawarty w nim edytor (NetBeans) całkowicie Wam wystarczy. Oczywiście jest tego od groma, mamy też coś takiego co zwie się "Eclipse" - możecie też pisać w nim, ale musicie też zaopatrzyć się w JDK, oddzielnie i ustawić w Eclipsie gdzie się znajduje "javac" na dysku. Mamy też JIDEA - świetny i zarazem drogi program, który jest dużo mniej awaryjny i lepiej zorganizowany, ale też nie specjalnie polecałbym początkującym - to tylko tak w ramach ciekawostki.

    OK! no to zaczynamy. Tak jak napisałem już w poprzednim rozdziale, wszystko w javie jest obiektem. Jako ze obiekt, musi najpierw być klasa. Odpalamy NetBeansa, w lewym menu prawym i przyciskiem, tworzymy nowy projekt, (java project). Odpali nam się od razu klasa, z main.Zostawiamy ją w spokoju, tworzymy sobie nową klasę w projekcie, nazywamy "Hello". Ważne by jej nazwa zaczynała się z dużej litery. Taka jest zasada, jeśli napiszecie z małej nic się nie stanie, po prostu tak będzie przejrzyściej ( np. obiekty nazywają się zazwyczaj tak samo jak klasa ale z małej litery).
    Mamy teraz coś takiego:

    package kurshackpl;

    /**
    *
    * @author andrew
    */
    public class Hello {



    }
    Możecie to już nawet odpalić - taki przycisk jak play na górze netbeansa. na dole pojawi się Wam taka konsola gdzie wyrzuciło Wam że program się zbuildował.

    Po kolei co co oznacza:
    package - nazwa pakietu, klasy możecie grupować w pakiety. Ta linijka zawsze musi być pierwsza w każdej klasie którą napiszecie.
    public - to oznacza że tak klasa jest dostepna do użytku z wszystkich innych klas. Poziomy dostępu bedziemy jeszcze omawiać.
    class - nie trudno się domyślić. Klasa po prostu. Piszemy to zawsze przed nazwa klasy, nie piszemy przy metodach.
    Hello - nazwa klasy.
    {} - między tymi dwoma klamerkami piszemy właściwy kod należący do klasy.

    Piszemy teraz tak (między klamrami {} klasy):
    public static void main(String args[]){

    }
    Metoda main, to główna metoda klasy, coś co znaliście do tej pory jako ten główny tekst programu, pomijamy tutaj procedury itp.

    I teraz co jest co:

    public - jak wyżej.
    static - oznacza, że jest to metoda której może występować tylko jedna kopia dla wszystkich obiektów w pamięci. Omówimy - na razie chodzi o to , że jest to główna metoda klasy i przed metodą main zawsze musimy to napisać.

    void - metody mogą zwracać jakąś wartość - wtedy podajemy typ zmiennej która zostanie zwrócona. Wpis void oznacza, że metoda nie zwraca nic.
    (String args[]) - oznacza co metoda przyjmuje. W tym przypadku - metoda main może przyjąć tablicę argumentów String (tekstowych).
    {} - jak wyżej.

    Chcąc wypisać tekst na ekranie musimy wywołać odpowiednią metodę.

    System.out.println("Hello kilka bluzgów world");

    Umieszczamy ten tekst między klamrami metody main. Wielu piszących do tej pory w C, PHP zapytałoby po co to System.out.println zamiast samego println. I już odpowiadam. System to największy pakiet, polecen systemowych, dostarczany przez Suna, out to jego podpakiet. println znajduje się tam właśnie. Często tak są zapisywane metody w javie, aby było wiadomo o jaką println chodzi.

    Możecie nacisnąć naszego "playa". Jeśli pojawiło się Build Succesful, oznacza to że program się zbuildował i nie zrobiliście błędów.

    Teraz chcemy sobie odpalić taki programik. Wracamy więc do klasy Main - nie mylić z metodą main.Tej która utworzyła Wam się automatycznie przy tworzeniu pakietu. To główna klasa programu. Omówimy teraz nieco konstruktory. Ponieważ wszystko w javie jest obiektem, aby wykonać kod który przed chwila napisaliśmy musimy stworzyć obiekt naszej nowej klasy, i na rzecz tego właśnie obiektu wykonać jego metodę main.
    Tworzymy więc obiekt klasy Hello:
    Hello hello = new Hello();
    pierwsze Hello - oznacza klasę obiektu który tworzymy. Coś jak int dupa; w C.
    małe hello - nazwa naszego obiektu.
    new Hello(); - odwołanie do konstruktora klasy Hello. Zauważcie że nie pisaliśmy żadnego konstruktora.... Taki konstruktor nazywamy konstruktorem domyślnym. Nie musicie go pisać wcale. Możecie go nadpisać. Ten konstruktor jest automatycznie dodawany przez JVM. W takim wypadku wszystkie pola typów całkowitych otrzymują wartość 0, zmiennoprzecinkowych 0.0, tekstowych null. Czym jest null? Null to nic ( z niemieckiego bodajze). To coś innego niż 0, null to null. Nic to nic. Jeśli napiszecie własny konstruktor, domyślny zostanie nadpisany, a w waszym możecie naklepać co chcecie, możecie nadawać polom dowolne wartości, równie dobrze możecie wykonać każde inne działanie. Wywołując konstruktor tworzymy obiekt klasy Hello którą napisaliśmy przed chwilą.
    Aby napisać własny konstruktor, piszemy "Hello() {}" po class Hello i między klamerkami umieszczamy kod. Nazwa konstruktora zawsze musi być taka jak nazwa klasy i również z dużej litery.

    Mamy więc obiekt hello. Wywołajmy jego metodę main:
    hello.main(args);
    Jest fajna opcja w NetBeans - napiszcie "hello" dodajcie kropkę, poczekajcie 2 sekundy i wyświetli wam sie lista wszystkich metod i pól danego obiektu.

    Odpalcie teraz klasę Main. W konsoli powinno wam się pojawić ( poza innymi informacjami ) także to co wpisaliście w println. Spójrzcie na to jak na obiekt. Spojrzenie obiektowe naprawdę nie jest takie trudne, jak z resztą sami widzicie. Kwestia przyzwyczajenia.

    Podstawowe typy zmiennych

    Na początek wystarczy kilka:

    String - zmienne tekstowe.
    int - liczby całkowite.
    float - liczby zmiennoprzecinkowe.
    double - liczby zmiennoprzecinkowe, jak float, z tym że przechowują dużo większe wartości.

    Jak deklarujemy zmienne?

    int moja_zmienna;
    i tyle... najpierw typ zmiennej, później nazwa. cała filozofia.

    Możemy też od razu przypisać wartość:

    int moja_zmienna=10;
    Tu kilka ważnych uwag.
    1. String zawsze piszemy z dużej. W javie jest rozróżnienie na małe i duże litery. Jeśli napiszecie "string" kompilator nie zrozumie.
    2. Przypisanie do String wygląda tak: String zmienna_tekstowa="ple ple ple"; musimy tekst umieścić w cudzysłowiu.
    3. Nazwy zmiennych zawsze musimy zaczynać od litery, nie możemy od cyfry.
    4. Znak "=" w javie jest przypisaniem. Porównianie to "==".

    Jeśli chcemy dodać pole do klasy, piszemy jej deklarację pod "class Hello {"
    a przed "}", jednoczesnie też nad konstruktorem ( o ile go nadpisujemy).


    Abyście mogli lepiej się z tym oswoić, spróbujcie wykonać to ćwiczenie:

    1. Stwórzcie klasę Samochod.
    2. Dajcie jej pola: stan_baku, predkosc, marka, pojemosc_silnika, spalanie_na_100. Typy danych przemyślcie sami.
    3. napiszcie konstruktor który załaduje dane domyślne/początkowe do tych pól.
    4. W metodzie main napiszcie kod który stworzy obiekty, a następnie wyświetki na konsoli dane wszystkich samochodów - pobierając je z obiektów.
    ### Aby wyswietlić skonkatenowane teksty i zmienne wystarczy napisać:
    System.out.println("tekst "+zmienna+"tekst "+zmienna);
    Jeśli ktoś skończy proszę przesłać na priv, może coś podpowiem, poradzę. Pytania proszę kierować na forum, tam też będę na nie odpowiadał. Może ktoś będzie miał takie samo pytanie.

    Na następnym "lesson" omówię m.in. różne rodzaje kostruktorów. Możemy np. zechcieć dawać różne parametry dla samochodów już przy tworzeniu.
    Ostatnio edytowane przez javaman : 03-31-2008 - 00:24 Powód: drobna poprawka

  2. #2
    Avatar javaman
    javaman jest offline www.javainside.pl
    Zarejestrowany
    Mar 2008
    Skąd
    no przed monitorem przecież...
    Postów
    474

    Domyślnie Część druga main i hello world

    usunięcie czegoś dziwnego... sorki coś się dziwnie poformatowało
    Ostatnio edytowane przez javaman : 03-30-2008 - 23:09 Powód: usunięcie czegoś dziwnego

  3. #3
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Proponowalbym kod formatowac jako kod a nie jako tekst inline:
    Kod:
    package kurshackpl;
    
    /**
    *
    * @author andrew
    */
    public class Hello {
    
    
    
    }
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  4. #4
    Avatar javaman
    javaman jest offline www.javainside.pl
    Zarejestrowany
    Mar 2008
    Skąd
    no przed monitorem przecież...
    Postów
    474

    Domyślnie

    Ok, sorki. Copy Paste z Worda. To zmienię i będę tak robił później

  5. #5
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Ok... no to do czego doszedlem (teraz bedzie smiesznie)...

    1. Wartosci liczbowe wybralem sobie double - sa duze ale od razu zmiennoprzecinkowe i nie wymagaja cast'owania definiujac wartosc... - sadze ze przyda sie nieco o konwersjach, zmianie formatu zmiennej (numeryczna na string, string na numeryczna, cast'y). Jesli mialaby to byc aplikacja j2me to staralbym sie uzywac malych wartosci - np int... i stosowac wybieg jak w Oracle zapisujac wartosci pieniezne czyli kwoty w groszach a nie w PLN...
    2. Definiujac main() nie moglem uzyc static - inaczej nie moglem w logiczny dla mnie sposob uzyc laczenia tekstu i wartosci w stringu - podawalo ze zmienne dynamiczne w statycznej funkcji... wiec juz nie jest statyczna :P
    3. Hmmm... jak mozna ladnie formatowac wyniki? Cos jak sprintf()?

    ==> Zasieg na pelnym baku wynosi 432.09876543209884
    hmmm to chyba nieco za szczegolowo, co :P
    Problem w tym, ze majac double powinienem uzyskac teoretycznie double... jest juz pozno i nie mysle za dobrze.

    Najwiekszy problem jaki mam - ciagle mysle i zapisuje skladnie z Perla
    Ostatnio edytowane przez TQM : 04-01-2008 - 00:15
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  6. #6
    Zarejestrowany
    Mar 2008
    Postów
    6

    Domyślnie

    Cytat Napisał TQM Zobacz post
    2. Definiujac main() nie moglem uzyc static - inaczej nie moglem w logiczny dla mnie sposob uzyc laczenia tekstu i wartosci w stringu - podawalo ze zmienne dynamiczne w statycznej funkcji... wiec juz nie jest statyczna :P
    Nie wiem, czy dobrze zrozumiałam. Chciałeś odwołać sie do pola klasy w mainie? Main powinien być statyczny, ale nie można w statycznej funkcji odwoływać się do niestatycznych pól w klasie, pisząc po prostu np "stanBaku". Trzeba stworzyć nowy obiekt:
    Samochod samochod= new Samochod();
    i wtedy samochod.stanBaku;
    Będziemy mówić jak to jest ze statycznymi polami i metodami.

  7. #7
    Avatar javaman
    javaman jest offline www.javainside.pl
    Zarejestrowany
    Mar 2008
    Skąd
    no przed monitorem przecież...
    Postów
    474

    Domyślnie

    Tak, jeśli chciałbyś mieć niestatyczne pola, wystarczy, że w klasie Samochod je zdeklarujesz normalnie - bez static, i tak jak to ujęła DarkLady, tworzysz obiekt, juz w klasie Main, w metodzie main, a następnie odwołujesz się do pól obiektuu.

    TQM, nie wiem czy domyśliłeś się czemu String piszemy z dużej litery... otóż string nie jest typem prostym, tekst String w rzeczywistości jest obiektem!
    String jak każda klasa ma swoje metody, dokładny opis każdej po kolei (dokumentacja SUNA):
    http://java.sun.com/j2se/1.5.0/docs/...va.lang.Object...)
    Co do doubli:

    public String format ( ) {
    double d = 4.935126;
    NumberFormat formatter = new DecimalFormat ( "0.0" ) ;
    String s = formatter.format ( d ) ;
    return s;
    }
    jednak pamiętaj, że w tej postaci dostaniesz Stringa z powrotem. Metody konwersji omówimy trochę szerzej.
    Tutaj masz troszkę szerzej o klasie Double, a własciwie jej metodach:
    http://java.sun.com/j2se/1.4.2/docs/...ng/Double.html

    I ważna sprawa - jest wielka różnica między stosowaniem Double a doble. Double jest klasą (masz więc dostęp do jej metod), double jest typem prostym. Zauważ że jeśli zdeklarujesz zmienną w ten sposób:
    Double zmienna;
    po postawieniu kropki i odczekaniu wylistują Ci się metody dostępne dla Double.A jeśli zkeklarujesz w ten sposób:
    double zmienna;
    Pozostają Ci sposoby typu takie jak metoda którą powyżej wklejałem.
    Ostatnio edytowane przez javaman : 04-01-2008 - 09:35

  8. #8
    Zarejestrowany
    Mar 2008
    Postów
    6

    Domyślnie

    Nie pamietałam jak to się formatuje w javie bo dawno nic takiego nie robiłam.
    Rozumiem, że chodzi o to z jaką precyzją będziemy wyświetlać dane. Wygląda to mniej więcej tak:

    Kod:
    import java.text.*;
    
    public class Generous {
    
    public static void main (String [] args) {
    
            double zasieg = 432.09876543209884;
            DecimalFormat decFormat = new DecimalFormat("#0.00");                     
                    String wart = decFormat.format(zasieg);
                    System.out.println ("Zasieg na pelym baku: "+wart);
                    
            }
    }
    Zasieg na pelym baku: 432,10

  9. #9
    Avatar javaman
    javaman jest offline www.javainside.pl
    Zarejestrowany
    Mar 2008
    Skąd
    no przed monitorem przecież...
    Postów
    474

    Domyślnie

    Widzę, że się "zd(o)ublowaliśmy"
    Najwyraźniej zatwierdziłaś kiedy pisałem
    Ostatnio edytowane przez javaman : 04-01-2008 - 09:39

  10. #10
    Zarejestrowany
    Mar 2008
    Postów
    6

    Domyślnie

    Najwyrażniej
    Ostatnio edytowane przez DarkLady : 04-01-2008 - 10:00

Strona 1 z 3 123 OstatniOstatni

Podobne wątki

  1. Odpowiedzi: 22
    Autor: 02-03-2019, 06:35
  2. hello world ;)
    By blackicenavarro in forum Assembler
    Odpowiedzi: 38
    Autor: 04-01-2011, 14:56
  3. int main
    By SARS in forum C/C++
    Odpowiedzi: 7
    Autor: 03-31-2008, 08:42
  4. Odpowiedzi: 4
    Autor: 01-31-2008, 17:34

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj