java_lekcja1_konsola

advertisement
W oknie poleceń -------------------------------------------------------------------------------Utwórz nowy folder Mojajava i wejdź do niego
utwórz nowy dokument tekstowy, nazwij go Newbie.java, otwórz go w Notatniku i wpisz kod:
class Newbie {
public static void main(String args[]) {
System.out.println("male miki");
}
}
Uruchom okno poleceń, przejdż do folderu Mojajava i wypróbuj polecenia systemowe
dir
javac Newbie.java
dir
java Newbie
// powinien być widoczny plik żródłowy Newbie.java
// kompilacja do kodu bajtowego
// przybył plik skompilowany Newbie.class
// wykonanie programu na maszynie wirtualnej Javy
Utwórz nowy dokument tekstowy Newbie.bat i wpisz polecenia, a następnie uruchom dwuklikiem :
java Newbie
pause
W środowisku ECLIPSE --------------------------------------------------------------------------Uruchom eclipse.exe i podaj jako Workspace swój folder Mojajava
Zamknij okno Welcome (zawsze możesz do niego wrócić: w menu Help / Welcome )
Ekran zawiera wiele okienek:
pojedyncze okienko – to View
układ okienek na ekranie – to Perspective.
Domyślnie wybrana jest Java Perspective, ale jeśli jest inaczej to wybierz z menu:
Window / Open Perspective/Other/Java Perspective (default)
Utwórz nowy projekt: File/New/Java project. Projekt
będzie zawierać kod żródłowy i inne pliki potrzebne do
zbudowania programu
Podaj nazwę projektu Nowy1 i zatwierdż przyciskiem
Finish
W oknie Package Explorer przybył projekt Nowy1.
Odpowiada mu w Workspace folder Nowy1 z przygotowanymi
pod-folderami dla plików żródłowych i skompilowanych.
W projekcie Nowy1 utwórz nową klasę :
File/New/Java Class
wpisz nazwę klasy ( Name): Malemiki
zaakceptuj ustawienia:
folder Nowy1/src dla plików żródłowych
modyfikator dostępu: Public
klasa bazowa (Superclass): java.lang.Object
każ utworzyć automatycznie metodę main
zatwierdż przyciskiem Finish
W oknie edytora pojawi się kod klasy Malemiki.
Do ciała metody main() wprowadź kod i zapisz:
System.out.println(”Małe miki czuwa”);
W podfolderze src pojawił się plik Malemiki.java, nazwa pliku jest identyczna z nazwą klasy publicznej.
W pliku może być tylko jedna klasa publiczna i musi ona mieć nazwę identyczną z nazwą pliku.
W podfolderze bin pojawił się plik Malemiki.class. Eclipse automatycznie kompiluje kod przy zapisie !
Uruchom program z menu Run/Run lub ikoną
Wynik działania programu pojawi się w oknie Console u dołu ekranu.
Sprawdż czy program da się uruchomić bez środowiska Eclipse. W systemowym oknie poleceń przejdź do
podfolderu bin zawierającego plik skompilowany Malemiki.class i wywołaj polecenie java Malemiki
Najważniejsze nowości w Javie w porównaniu z C++ ---------------------------------------







Java jest hardcorowo obiektowa, WSZYSTKO (zmienne, funkcje) jest składnikiem jakiejś klasy
program jest definicją klasy, zawiera statyczną metodę main, którą można uruchomić bez
tworzenia obiektu – instancji klasy.
kompilator nie tworzy pliku wykonywalnego, lecz kod bajtowy, gotowy do ostatecznej kompilacji
(z dopasowaniem do sprzętu i systemu operacyjnego) i następnie uruchomienia na maszynie
wirtualnej Javy.
Cała definicja klasy znajduje się w jednym pliku, nie ma podziału na pliki nagłówkowe *.h
i resztę kodu *.cpp.
Nie ma wskaźników.
Obiekty i tablice tworzy się operatorem new. Usuwane są automatyczne, nie trzeba delete.
Klasa może dziedziczyć tylko po jednej klasie bazowej. Operatorów nie można przeciążać.
Pliki z definicjami klas są zorganizowane w hierarchiczne pakiety, podobnie do folderów. Pełna
nazwa klasy zawiera nazwę pakietu(kolejne poziomy hierarchii oddzielone kropką), nastepnie
kropkę i na końcu nazwę własną klasy np. java.moje.szkola.Malemiki
 Programista musi zatroszczyć się o obsługę wyjątków.
 W Javie zdefiniowano i udostępniono bogatą bibliotekę klas do realizacji konkretnych zadań,
w szczególności wsparcie dla aplikacji sieciowych i programowania współbieżnego.

W podstawowej wersji Eclipse (na razie) nie ma narzędzi do programowania wizualnego (nie ma
toolboxa z komponentami), także obsługą zdarzeń programista musi zająć się samodzielnie.
Przykład importu i zastosowania klasy - dostęp do dat -------------------------------------import java.util.GregorianCalendar;
public class Malemiki {
public static void main(String[] args) {
System.out.println("Małe miki czuwa !");
GregorianCalendar dz = new GregorianCalendar();
System.out.println("Dziś jest "+dz.getTime());
GregorianCalendar matura = new GregorianCalendar(2010,04,04,9,0,0);
System.out.println("Matura jest "+matura.getTime());
long msDzis=dz.getTimeInMillis();
long msMat=matura.getTimeInMillis();
long m=(msMat-msDzis)/1000/60;
long g=m/60;
long d=g/24;
System.out.println("Do matury pozostało:");
System.out.println(d+" dni");
System.out.println("lub "+g+" godzin");
System.out.println("lub "+m+" minut");
// lub tak
import java.util.Date;
Date dzis=new Date();
System.out.println("Dziś jest "+dzis);
long milisekundy=dzis.getTime();
// miesiace są 0-based !!!
}
}
// liczby losowe w Javie:
import java.util.Random;
A gdyby to zrobić w C++
Random r = new Random();
int n= r.nextInt(20);
#include <iostream>
#include <time.h>
using namespace std;
int main(int argc, char *argv[])
{
time_t dzisS=time(NULL); //aktualny data-czas jako liczba sekund od 1 stycz.1970
tm *w=localtime(&dzisS);
tm dzis=*w;
cout<<"dzis jest ";
cout<<dzis.tm_year+1900<<"/"<<dzis.tm_mon+1<<"/"<<dzis.tm_mday<<endl;
tm matura= {0,0,9,4,4,110};
// sec,min,hour,mday,mon_based_0,year-1900
time_t maturaS=mktime(&matura);
cout<<"matura jest ";
cout<<matura.tm_year+1900<<"/"<<matura.tm_mon+1<<"/"<<matura.tm_mday<<endl;
cout<<"Do matury zostalo "<<endl;
int m=(maturaS-dzisS)/60;
int g=m/60;
int d=g/24;
cout<<m<<" minut\n";
cout<<"lub "<<g<<" godzin\n";
cout<<"lub "<<d<<" dni\n";
system("PAUSE");
return EXIT_SUCCESS;
}
Operacje wejścia/wyjscia ----------------------------------------------------------------------------import
import
import
import
import
java.util.Scanner;
java.util.InputMismatchException;
java.io. PrintWriter;
// ten kolor dotyczy zapisu danych do pliku txt
java.io. FileWriter;
muszę obsłużyć wyjątki konstrukcją try-catch
java.io.IOException;
lub w nagłówku metody napisać, że może ona wyrzucić wyjatek:
public class Spalanie {
public static void main(String[] args)
throws InputMismatchException, IOException
{
System.out.println("Obliczę ci ile spalisz paliwa");
Scanner s = new Scanner(System.in);
try {
PrintWriter wyjscie = new PrintWriter(new FileWriter("spalanie.txt"));
// obie klasy: PrintWriter i FileWriter są w pakiecie java.io.*
// plik powstanie w głównym folderze projektu (nie w /bin przy .class!)
System.out.println("Podaj długość trasy w km ");
int trasa = s.nextInt();
System.out.println("Ile spalasz na 100 km ? ");
double nasto = s.nextDouble();
// dane liczby rzeczywiste podawaj Z PRZECINKIEM
double p = nasto/100*trasa;
System.out.println("Na całej trasie spalisz "+p+" litrów");
wyjscie.println("Na całej trasie spalisz "+p+" litrów");
System.out.println("Podaj pojemność baku w litrach ");
int bak = s.nextInt();
int tank=(int) Math.ceil(p/bak); // będzie błąd niezgodności typów,
// trzeba rzutować double na int
System.out.println("Musisz tankować "+tank+" razy");
wyjscie.println("Musisz tankować "+tank+" razy");
wyjscie.close();
// musisz zamknąć plik aby odczytać jego zawartość
}
catch (InputMismatchException em) {System.out.println("błedny format danych");
catch (IOException e) {System.out.println("kłopot z utworzeniem pliku"); }
}
}
}
Aby Scanner czytał z pliku dane.txt potrzeba:
Scanner s = new Scanner(new File("dane.txt"));
while (s.hasNext()) { String A=s.next(); String B=s.nextLine(); }
Scanner może czytać ze zmiennej typu String (na przykład aby podzielić tekst na słowa)
String t = “jakis tekst”;
Scanner s = new Scanner(t).useDelimiter("\\s");
Bez Scannera można czytać ze strumienia buforującego dane BufferedReader, umożliwiając czytanie
danych porcjami. Przekształcanie bajtowego strumienia w strumień znaków to InputStreamReader.
BufferedReader we = new BufferedReader(new InputStreamReader( System.in));
//klawiatura
BufferedReader we1 = new BufferedReader(new FileReader("auta.txt"));
// plik
while (we.ready()) { char c = we.read(); String b=we.readLine(); int i=Integer.parseInt(s);}
Debugging --------------------------------------------------------------------------------------------Wybierz perspektywę Debug
W oknie edytora kodu ustaw punkt przerwania (2-klik na lewej krawędzi okna na wysokości wybranej linii)
Sprawdź fakt ustawienia BreakPoint-a w okienku BreakPoints
Uruchom prorgam w trybie Debug i doprowadź działanie do punktu przerwania. Sprawdź wartości zmiennych w okienku Variables
Kontynuuj pracę programu krokowo – Step Into (F5) i śledź wartości zmiennych
Download