Komentarze
Spis treści
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.
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ść
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>? 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Ź