Komentarze

Czym są komentarze

Komentarze są ważną częścią większych programów. W ich ramach możemy umieszczać skrócone opisy napisanej przez nas funkcji oraz zadeklarowanych zmiennych. Dzięki nim łatwo się odnaleźć w przypadku większych projektów, ale przede wszystkim w przypadku, gdy inne osoby nie będą mogły zrozumieć naszego kodu mogą sięgnąć po nasz opis (przy większych projektach generujemy dokumentację).

Komentarze są widoczne jedynie dla nas, przy kompilacji są one pomijane i nie mają wpływu na działanie programu.

Rodzaje komentarzy

W Javie istnieją trzy rodzaje komentarzy. Dwa pierwsze pełnią podobne zadanie, ale ten ostatni ma zadanie specjalne.

Jednoliniowy

Tekst umieszczony za podwojonym znaku slash jest uznawany za komentarz aż do końca linii. Można go używać zarówno jako osobna linia, jak również w linii gdzie jest już jakiś kod.

public class Komentarze{
  // poniżej rozpoczyna się działanie programu
  public static void main(String[] args){
    System.out.print("Hello World"); // to również jest komentarz
  }
}

Wieloliniowy

Tekst umieszczony w takich znacznikach jest traktowany jako komentarz przez wiele linii kodu. Rozpoczyna się od /* a kończy na */

public class Komentarze{
  public static void main(String[] args){
    /*Ten tekst
      nie ma wpływu
      na program */
    System.out.print("Hello World");
  }
}

Należy uważać, aby przez przypadek nie umieścić części kodu po znaku komentarza, ponieważ nie będzie on wtedy brany pod uwagę przez kompilator.

Kurs Java

Komentarzy /* */ nie można też zagnieżdżać.

Komentarz dokumentujący

Ostatni typ komentarzy, czyli komentarze dokumentujące wyglądają bardzo podobnie do tych wieloliniowych. W przypadku poniżej dodany został komentarz dokumentujący do metody main.

/**
 * Ta metoda jest używana jaka metoda startowa
 * @param args argumenty przekazane przy uruchomieniu programu
 */
public static void main(String[] args) {

}

Jeśli teraz w środowisku programistycznych (w tym przypadku IntelliJ) wejdziemy w opis metody to zobaczymy następującą treść

intellij-dokumentacja.png

Czy używać komentarzy?

Komentarze to nic złego, ale nie należy nadużywać. Kodem programu powinny być głownie polecenia, a nie komentarze. Czasami mogą się przydać gdy trzeba opisać co robi bardziej skomplikowana metoda. Problem polega na tym, że często zdarza się, że zmienimy kod, ale zapomnimy zmienić komentarz i osoba, która to potem czyta głowi się co autor miał na myśli.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.

Poniżej znajdziesz archiwalne wpisy z czasów, gdy strona była jeszcze hobbystycznym blogiem.

Wojtek

Witam. "Skompiluj powyższy przykład i zobacz jego działanie" to jeszcze da się zrozumieć ale nie umiem tej drugiej części zrozumieć

Anita

<blockquote> <a href="#comment-186" rel="nofollow"> <strong><em>Wojtek:</em></strong> </a> Witam. „Skompiluj powyższy przykład i zobacz jego działanie” to jeszcze da się zrozumieć ale nie umiem tej drugiej części zrozumieć </blockquote> Chodzi o to, byś w komentarzu umieścił metodę, która wyświetla tekst na ekranie. Jak w pierwszym programie wyświetlaliśmy "Hello World", zobacz co się stanie, gdy umieścisz tę samą instrukcję wypisywania na ekran w komentarzu - pomiędzy znakami /* */, bądź za //

xnikixx

u mnie nic sie nie stalo, to źle?

Adam

Może ktoś tu wkleic jak to trzeba napisac? Bo chce sprawdzić. Dzięki.

Witek

public class Komentarz_Test { /** * @author Wiciu */ public static void main(String[] args) { System.out.println("Test komentarza"); // TO NIE ZOSTANIE WYŚWIETLONE // System.out.println("To jest test komentarza - do konńca lini"); /* * System.out.println("To jest test komentarza - wiele lini - linia 1 - "); * System.out.println("To jest test komentarza - wiele lini - linia 2 - "); * System.out.println("To jest test komentarza - wiele lini - linia 3 - "); * ................................................................... * ..................................................................... * itd. */ } }

Drelka

"Komentarzy /* */ nie można też zagnieżdżać." - co znaczy zagnieżdżać?

Alice

najlepiej na przykładzie: /* tu sobie leci mój komentarz i nagle chce zrobić coś takiego /* bum cyk cyk */ i dalej komentowac to niemozliwe*/ po prostu nie można wsadzać komentarza do środka innego.

Drelka

nie do konca rozumiem jaki to miało by sens, ale nieważne, rozumiem co znaczy zagnieżdżać :P dzięki za odp.

Kefiru

Ja to bardziej zrozumialem tak, ze nie mozna wsadzac komentaza w srodek instrukcji, itp..

Wojcio

Mi się tylko wyświetla "Hello World" Czyli tak jakby nie ma komentarzy? xd

Marcin

Tak, komentarze służą temu, by wyłączyć pewien kod tekstu, zostawiając go w plikach, a nie usuwając. ;)

Karol

Uff. Myślałem że mam coś z javą... A tu czytam"illegal character" przy slashu. Myślę wtf? Nie może być forslash(mam nadzieje że nie pomyliłem nic). Zmieniłem znak i działa ;)

masmldamsl

Czy ktos moze umiescic poprawne dzialanie&gt;? Bo mi niestety nie wychodzi.

ela

" Następnie umieść instrukcję wyświetlającą tekst w znaczniku komentarza i ponownie sprawdź jego działanie." Tzn. wstawić mam samo hasło "Hello World" , które uruchamia akcję, czy całe : System.out.print("Hello World"); ? Jeśli tylko samo hasło, to to nic nie zmieniło. A miało coś zmienić?

Tobiasz931

@ela Chodzi o to, że takie coś: /*System.out.print(„Hello World”);*/ nie będzie miało żadnego skutku, bo instrukcja jest w komentarzu, czyli tak samo jakby jej w ogóle nie było.

Lindorm55

Wyświetla Hello Word

Rafal

niech mnie ktoś sprostuje... czy te komentarze nie służą jedynie jako "informacja", którą można przeczytać czytając kod? Mnie też wyświetla tylko Hello World i domyślam się, że te dwie informacje mają jedynie charakter czysto "informacyjny" dla piszącego lub/i czytającego taki kod, nic się nie wyświetli na ekranie bo jak sama nazwa wskazuje "/*Ten tekst nie ma wpływu na program */" :D

Witek

Witam dokładnie tak, możesz w nich również umieścić inne informacje, które mogą być istotne dla ciebie lub kogoś innego.

Slawek

Można też sobie "zakomentować" jakiś fragment kodu, który w danej chwili chcemy wyrzucić i przetestować np coś innego.

Drobiczak

Witam Mam pytanie: czy trzeba dawać spacje np. przed System.out.print?

Slawek

Wcięcia służą tylko czytelności kodu,

Ja kapuje

To co jest w komentarzu nie istnieje dla maszyny, tylko dla człowieka który jak coś pisze np. książkę to potrzebuje rozdziałów, żeby sięnie pogubić - tak samo tutaj. Kod np. 200 linijek, a ty masz błąd przy jednej i teraz szukaj człowieku jednej lini, a jak masz komentarze to znajdujesz np 10 których ten komentarz dotyczny (bo np. ci nie przeliczyło 2x2), a ty masz w komentarzu, że tu są obliczenia i znajdujesz błąd kilkanaście razy szybciej.

Irfe

Prosił bym o pomoc. Już drugi raz jak coś próbuję napisac mam ten sam problem. Komentarz.java :1: error: '{' expected public class Komentarz.java{ ^ public class Komentarz.java{ //rozpoczyna się działanie programu public static void main(String[] args){ /*ten tekst nie ma wpływu na program*/ System.out.print("Hello World"); } } przy poprzedniej likcji miałem dokładnie ten sam błąd nawet po skopiowaniu.

Piotr

Twoja klasa powinna nazywać się Komentarz a nie Komentarz.java i powinna być zapisana w pliku Komentarz.java, czyli poniższy program: public class Komentarz{ //rozpoczyna się działanie programu public static void main(String[] args){ /*ten tekst nie ma wpływu na program*/ System.out.print(„Hello World”); } } zapisujesz w pliku Komentarz.java

kuba

a czy to co trzeba wgrać na początku to jest na 16-bit windows proszę o odpowiedź.

Adik

mi nie dziala jak chce uruchomic Hello

Daniel

Dziaaaała :-)

Ignacy

Czy można używać polskich znaków? Jeśli tak, to dlaczego mi nie czyta?

Damian

Tak można, prawdopodobnie ustawione kodowanie znaków jest sprzeczne z Twoimi wymaganiami, radzę wygooglować : "JAVA Eclipse nie działają mi polskie znaki", na pewno parę osób już czegoś podobnego doświadczyło ;].

Hania

Jak próbuję skompilować, pojawia mi się error: class komentarze is public, should be declared in a file named Komentarze.java ?

Marcin Kunert

Nazwa pliku musi być taka sama jak nazwa klasy w tym pliku.

Tomek

Mi nic nie wyskakuje jak wpisze javac Komentarz ale wszystko robię dobrze.

Cinek

Udało się:)

Rajmund

Proszę o pomoc. Wyskakuje mi taki alert: Komentarze.java:2: error: unmappable character for encoding Cp1250 //PONI┼╗EJ ROZPOCZYNA SI─? DZIA┼?ANIE PROGRAMU ^ Komentarze.java:2: error: unmappable character for encoding Cp1250 //PONI┼╗EJ ROZPOCZYNA SI─? DZIA┼?ANIE PROGRAMU ^ Komentarze.java:5: error: unmappable character for encoding Cp1250 NIE MAWP┼?YWU ^ 3 errors Co zrobić aby wyświetlały się Polskie znaki?

lolo

spróbuj zmienić kodowanie na unicode albo ASCII. W czym piszesz? Notatnik, jakieś IDE?

Rajmund

Piszę w Notepad++

Rajmund

Ale jak piszę w zwykłym notatniku to jest tak samo.

Rajmund

Dzięki lolo! Zmiana kodowania na ASCII pomogło :)

Maksteri

Po umieszczeniu linii wyświetlania w polu komentarza program wyświetla pustą linię.

lolo

Masz na myśli, że napiszę: System.out.print("1\n"); System.out.print("2\n"); // System.out.print("3\n"); System.out.print("4\n"); To otrzymam wynik: 1 2 4 Jeśli tak. To masz jakiś dziwny kompilator, błąd w kodzie bo to tak nie działa.

Kml

Czy w tym przypadku powinno wyjść: 1 2 4 -czyli bez pustej linii pomiędzy 2 a 4?

lolo

Tak, nie powinno być żadnej pustej linii jeśli kod wygląda tak jak napisałem. Pusta linia mogła by się pojawić w przypadku napisania np. takiego kodu System.out.print(„1\n”); System.out.println(„2\n”); // System.out.print(„3\n”); System.out.print(„4\n”);

Kml

Jak kopiuje jakiś kod do notatnika a następnie otwieram w cmd to wyskakuje masa błędów, min. brak ";" choć średniki są skopiowane?! Jednak kiedy przepisuje wszystko ręcznie do notatnika a potem otwieram w cmd to jest OK. Dlaczego tak się dzieje?

lolo

Może to być spowodowane tym, że jak się wpisuje kod i wysyła to system dodawania komentarzy np. zamienia dwa gógre cudzysłowia " na jeden dolny drugi górny " ".

Kml

Tak, to racja. Ale ten błąd ze średnikiem, który był na właściwym miejscu? Dodam, że jak przepisałem kod ręcznie wszystko było dobrze. Dziwne...

lolo

A spróbuj jak masz ten wklejony kod i pokazuje błąd ze średnikami to spróbuj jeden skasować i wpisać go ręcznie. Może przy kopiowaniu dodatkowo ładuje się jakiś biały znak albo ładuje średnik jako znak specjalny i kompilator go nie rozpoznaje mimo, że wygląda jak średnik. Pamiętam, że kiedyś też jak z jakiejś strony kopiowałem kod to mi zaznaczało linie, że są błędne bo dodawało twarde spacje czy coś i musiałem to skasować, żeby kod działał.

Kml

Jest dokładnie tak jak piszesz - tzn. przy skopiowaniu kodu pokazuje błąd ze średnikami i nie tylko, bo również z cudzysłowami i lewym ukośnikiem (backslash) a jak skasuje to i wpisze ręcznie to błąd znika. Może rzeczywiście ładuje jako znaki specjalne i kompilator nie rozpoznaje... ?

Me

przecież tak napisał sprawdz wyżej

Me

to było do odpowiedzi 42

Me

#40 lolo a skąd wziąłeś " n " w nawiasie, lekcje mogłoby być bardziej sprecyzowane

Lolo

Masz na myśli to 'n' np. w linii? System.out.print(„1\n”); \n jest to znak specjalny oznaczający przejście do nowej linii

Maksteri

nie. chodziło mi o zadanie do wykonania " umieścić: System.out.println(coś) pomiędzy /* */ albo po // i tylko napisałem że jak zrobię coś takiego: /* System.out.println(coś) */ - program wyświetla pustą linię bez tekstu.

Kamil

Mi się dzieje tak że wpisuje wszystko tak jak na lekcji i nic w cmd nie wyskakuje pusta linia PROSZĘ O ODPOWIEDŹ