Kiedy usłyszałem pytanie z pewnej rozmowy kwalifikacyjnej stwierdziłem: "to jest totalnie jutro na moim blogu" :)
Pytanie jest proste: czy poniższy kod napisany w Javie się skompiluje?
public class HttpTest {
public static void main(String[] args) {
System.out.println("Hi!");
http://www.java.com
System.out.println("Hello!");
}
}
Pogrubiona linijka to ta, której tak naprawdę dotyczy pytanie ;)
Oczywiście //www.java.com to zwykły komentarz - tu nie ma żadnych wątpliwości. A co z http:?
Otóż jest to... etykieta. Etykieta jak w starym dobrym C++. No dobra czyli się skompiluje, ale przecież w Javie nie ma instrukcji goto - to po co etykiety?
Ha! Słowo goto jest na liście słów kluczowych Javy. Co nie zmienia faktu, że instrukcji goto nie można stosować. Czyli poniższy kod nie jest poprawny:
public class HttpTest {
public static void main(String[] args) {
System.out.println("Hi!");
http://www.java.com
System.out.println("Hello!");
goto http;
}
}
Czyżby planowali... poszerzyć Javę o instrukcję goto? ;)
To na koniec jeszcze mała Javowa zagadka - specjalnie dla tych, co gramatykę Javy mają w małym paluszku ;)
System.out.println(100/**//9);
Powyższa linijka spowoduje błąd kompilacji czy nie?
sobota, 4 września 2010
Subskrybuj:
Komentarze do posta (Atom)
no raczej że się skompiluje :D
OdpowiedzUsuńciekawe przykłady ;)
Jak dla mnie ostatnia linijka wypisze na ekran "11" albo coś koło tego ;).
OdpowiedzUsuńMała uwaga do treści wpisu: w kodzie źródłowym krytyczna linijka nie jest pogrubiona.
OdpowiedzUsuńA jaka jest ostateczna odpowiedź na końcowe pytanie (nie chciało mi się sprawdzać :)?
Wygląda raczej na to, że się skompiluje. No chyba, że pomiędzy /* i */ musi coś być (przynajmniej spacja).
U mnie wygląda na pogrubioną, ale to szczegół :)
OdpowiedzUsuńSkompiluje się bez problemów, między /**/ nic nie musi być :) Za to:
System.out.println(100//**/9);
już nie zadziała :)
Dobre, zagięło mnie :)
OdpowiedzUsuńJakoś znak komentarza // mi umknął w treści urla i poległbym na tym pytaniu.
Co do słowa kluczowego goto w javie, występuje ono tylko ze względów historycznych. Co do etykiet, to przydają się one w instrukcjach break i continue. Co do kodu źródłowego - u mnie też nic nie jest pogrubione :). Co do Twojego stwierdzenia: "U mnie wygląda na pogrubioną", przypomniał mi się joke:
Przychodzi informatyk do lekarza:
- Panie doktorze, chyba coś jest nie tak z moją wątrobą.
- Dziwne, u mnie działa.
:) Sprawdziłem, w Google Chrome faktycznie nie jest pogrubione, w przeciwieństwie do Firefoksa i Opery :) Ciekawe, bo tag <b> otacza tą linijkę ;)
OdpowiedzUsuńKiedyś ten sam problem z http://www.java.com widziałem na jakiś targach pracy na PWr, na stoisku bodajże NSN. Pamiętam wtedy, że poległem na tym pytaniu, ale dzięki temu gdy zobaczyłem tytuł posta, od razu wiedziałem o czym będzie :)
OdpowiedzUsuń