Java #10: Strumienie systemowe

We wcześniejszych lekcjach często używałem tajemniczej komendy System.out.println() aby wyświetlić (sprawdzić) wartości jakie zostały policzone w programie. Jest to częsty sposób (niejedyny), aby sprawdzić czy program działa poprawnie. Teraz postaram się wyjaśnić, czym są strumienie systemowe wejścia i wyjścia.

Strumienie systemowe

Klasa System jest jedną z pierwszych napisanych w Javie i posiada trzy ciekawe metody, na których się teraz skupię. Są nimi strumienie systemowe:

  • System.in – jest zwykle połączony z wpisywanymi wartościami z klawiatury
  • System.out – wyprowadza dane, które do niego zapisujesz, do konsoli
  • System.err – działa podobnie jak out, z tą różnicą, że wykorzystuje się go głównie do zasygnalizowania błędu

Wszystkie powyższe implementacje odpowiadają za reprezentację standardowych strumieni danych w systemie operacyjnymi. Mówiąc standardową mam na myśli: strumień wejścia (in) , strumień wyjścia (out) i strumień błędów. Oto przykładowe użycie każdego z nich:

public void seeSystemOut(String text) {
  System.out.println("My text is " + text);
}
  
public void seeSystemError() {
  System.err.println("Nastapił błąd w trakcie działania");
}

Klasa Scanner 

Zauważ, że komunikat o błędzie w Eclipsie* jest zaznaczony na żółto. Strumień wejścia System.in raczej nie będziesz używać bezpośrednio, dlatego, że jest to przestarzała metoda czytająca strumienie bajtów (mało przydatna funkcja w dzisiejszych czasach). Twórcy Javy udostępnili łatwiejszą w użyciu klasę Scanner, która opakowuje strumień wejścia i udostępnia łatwiejsze metody do pracy z nim. Jej działanie opiszę w lekcji, w której będę omawiał podstawowe użycie pętli while.

Dodatkowo klasa system posiada jeszcze dwie metody, które czasem możesz chcieć użyć:

  • currentTimeMillis() – zwraca obecny czas, ale w milisekundach. Przydatne metoda, gdy chcesz się dowiedzieć jak długo trwa działanie danej metody. Policzysz wtedy różnicę między czasem na początku i na końcu bloku kodu, którego chcesz sprawdzić.
  • exit(0) – ta metoda wysyła żądanie zakończenia programu w trakcie jego działania. Wartość, którą wpisuje się w argumencie oznacza status, z jakim zakończył się program. Zero oznacza tu, że program zakończył się poprawnie.
public void seeCurrentTime() {
  long startTime = System.currentTimeMillis();

  int sum = 0;
  for (int i = 0; i < 100000000; i++) {
    sum = sum + i;
    // pętla utworzona po to, aby policzyć długość wykonywania się kodu
  }
  long endTime = System.currentTimeMillis();
  System.out.println("Metoda działa " + (endTime - startTime) + " milisekundy.");
}
public void exitProgram() {
  long startTime = System.currentTimeMillis();

  for (int i = 0; i < 10; i++) {
    System.out.println("Interacja nr " + i);
    if (i == 2) {
      System.out.println("Koniec programu.");
      System.exit(0);
    }
  }
  long endTime = System.currentTimeMillis();
  System.out.println("Metoda działa " + (endTime - startTime) + " milisekundy.");
}

 

*Jedno z najpopularniejszych środowisk programistycznych

Link do lekcji: https://github.com/developeronthego/java-basics/tree/main/src/main/java/basics/lesson10

Strumienie systemowe to nie jedyne strumienie w Javie. Zobacz moją lekcję o strumieniach danych: Java średnio zaawansowane #23: strumienie wejścia/wyjścia

Stay in the Loop

Get the daily email from CryptoNews that makes reading the news actually enjoyable. Join our mailing list to stay in the loop to stay informed, for free.

Ostatnio dodane

- Advertisement - spot_img

Powiązane wpisy