Kurs Java Podstawy - rozszerzony

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.

W Javie istnieją dwa rodzaje komentarzy:

  • //text - tekst umieszczony za podwojonym znaku slash jest uznawany za komentarz aż do końca linii
  • /* text */ - tekst umieszczony w takich znacznikach jest traktowany jako komentarz przez wiele linii kodu.

Jako przykład dodajmy komentarze do naszego pierwszego programu.

public class Komentarze{
  //poniżej rozpoczyna się działanie programu
  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ć.

Zadania do samodzielnego wykonania:

Skompiluj powyższy przykład i zobacz jego działanie. Następnie umieść instrukcję wyświetlającą tekst w znaczniku komentarza i ponownie sprawdź jego działanie.

<- Poprzednia LekcjaNastępna Lekcja ->

Komentarze

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



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ć


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.

Lindorm55

Wyświetla Hello Word

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.

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Ź