Nauka programowania Java #10: Strumienie in/out

We wcześniejszych lekcjach często używałem tajemnicznej 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ć, co to jest i jak działa.

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

  • err
  • in
  • out

Odpowiadają one za Javową 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");
}

 

Zauważ, że komunikat o błędzie w Eclipsie* jest zaznaczony na żółto. System.in raczej nie będziesz używał/a, dlatego, że jest to przestarzała metoda czytająca strumienie bytó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

Dodaj komentarz