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

Możesz również polubić…

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.