Darmowy kurs Java

Typy danych

W Javie podobnie jak w innych językach wyróżniamy wiele typów danych mogących przechowywać zarówno liczby stało i zmiennoprzecinkowe, znaki, ciągi znaków, oraz typ logiczny. Java posiada ścisłą kontrolę typów, czyli mówiąc prościej każdy obiekt musi mieć określony typ.

Liczby stałoprzecinkowe to po prostu liczby całkowite, jednak wyróżniamy ich 4 rodzaje, ze względu na ilość zajmowanego miejsca.

    • byte - 1 bajt - zakres od -128 do 127

    • short - 2 bajty - zakres od -32 768 do 32 767

    • int - 4 bajty - zakres od -2 147 483 648 do 2 147 483 647

    • long - 8 bajtów - zakres od -2^63 do (2^63)-1 (posiadają przyrostek L, lub l)

    Najbardziej uniwersalny jest typ int, jego zakres zazwyczaj wystarcza do wykonywania wszystkich operacji a jednocześnie nie zajmuje strasznie dużo miejsca (chociaż coraz rzadziej zwraca się na ten aspekt uwagę).

    Kurs Programowania Java

    Dodatkowo istnieją klasy osłonowe, które są obiektowymi odpowiednikami typów prostych. Udostępniają one metody, dzięki którym wiele rutynowych czynności mamy zawsze pod ręką.

    Java nie posiada też typu Unsigned (bez znaku), czego konsekwencją jest to, że przekraczając zakres danego typu przejdziemy na zakres ujemny.

    Kolejne dwa typy reprezentują liczby zmiennoprzecinkowe i podobnie jak liczby całkowite różnią się zakresem oraz ilością zajmowanego miejsca, a także precyzją

      • float - 4 bajty - max ok 6-7 liczb po przecinku (posiadają przyrostek F, lub f)

      • double - 8 bajtów - max ok 15 cyfr po przecinku (posiadają przyrostek D, lub d)

      Część całkowitą od ułamkowej oddzielamy kropką, a nie przecinkiem! Należy też pamiętać, że liczby zmiennoprzecinkowe nie nadają się do obliczeń finansowych, w których liczy się dokładność. Spowodowane jest to tym, że w systemie dwójkowym nie da się przedstawić wszystkich liczb. Z pomocą przychodzi tutaj specjalna klasa BigDecimal. Istnieje również klasa BigInteger, która jest odpowiednikiem dla liczb całkowitych i może reprezentować w zasadzie nieograniczone co do wielkości liczby.

      Kolejnym typem jest char, czyli znak i służy do reprezentacji pojedynczych znaków kodu Unicode. Mogą być przedstawione w znakach pojedynczego cudzysłowu, przy pomocy kodu szesnastkowego, lub po prostu podając numer znaku Unicode w systemie dziesiętnym - przekonamy się o tym w kolejnej lekcji. W skrócie dozwolony jest zapis 'a', lub \u0000.

      Istnieją również znaki specjalne, które muszą być poprzedzone znakiem backslash \ :

        • \t - tab

        • \n - nowa linia

        • \r - powrót karetki

        • \" - cudzysłów

        • \' - apostrof

        • \\ - backslash

        Ostatnim typem prostym jest boolean. Reprezentuje on tylko dwie wartości:

          • true - prawda

          • false - fałsz

          Zazwyczaj jest wykorzystywany jako odpowiednia flaga, lub jako warunek pętli.

          Poniżej zamieszczam przykład drukujący różne typy danych.

          public class Typy{
            public static void main(String[] args){
              System.out.println('a'+'A');
              System.out.println(1+2);
              System.out.println(1.0+2.0);
              System.out.println("cudzysłów \"");
              System.out.println(true);
            }
          }

          Warto w nim zwrócić uwagę głównie na różne działanie operatora +(plus) w metodzie println(). Jak widać w przypadku znaków następuje dziwne zachowanie - wyświetla się liczba 162, zamiast oczekiwanego "aA". Dlaczego się tak dzieje? Następuje automatyczne dopasowanie typu i typ char jest zamieniany na typ int. Omówimy to w dalszej części kursu.

          Dodatkowo jak widać w przypadku liczb operator + powoduje dodanie liczb i wyświetlenie wyniku.

          Od razu omówimy dodatkowy typ, który nie zalicza się już do typów prostych. Mowa tutaj o typie String. Zwróć uwagę na wielką literę, ponieważ jest to typ obiektowy to przyjmuje nazwę klasy z której się wywodzi, a jak wiemy klasy nazywamy z wielkiej litery.

          No więc Stringi umieszczamy pomiędzy znakami cudzysłowu "text". Służą one do przechowywania ciągów znaków i mają w zasadzie nieograniczoną pojemność. Więcej powiemy o nich przy omawianiu zmiennych w kolejnej lekcji.

          Zadania do samodzielnego wykonania:

          Przetestuj wyświetlanie innych znaków specjalnych, a także skompiluj i wykonaj powyższy przykład.

          Zapisz się do newslettera

          Otrzymuj nasz Newsletter z przykładowymi pytaniami rekrutacyjnymi, wyzwaniami programistycznymi i nowościami ze świata Javy, a także informacje o nowych kursach i promocjach.

          Traktujemy Twoją prywatność poważnie. Nikomu nie udostępniamy Twojego maila no i zawsze możesz się wypisać.

          Komentarze do artykułu

          Wyłączyliśmy możliwość dodawania komentarzy. Poniżej znajdziesz archiwalne wpisy z czasów gdy strona była jeszcze hobbystycznym blogiem. Zapraszamy natomiast do zadawnia pytań i dyskusji na naszej grupe na facebooku.

          YeeeZooo

          Rozwiązanie pracy domowej kod: public class Cw1{ public static void main(String[] args){ System.out.println('a'+'A'); System.out.println("a"+"A"); System.out.println(1+2); System.out.println(1.0+2.0); System.out.println("cudzysłów \""); System.out.println(true); System.out.println("\t"+"tekst po tab"); System.out.println("\n"+"po nowej linii"+"\n"+"tez po nowej linii"); System.out.println("tekst"+"\r"+"??"); System.out.println("\'"); System.out.println("\\"); } } Wynik na ekranie: 162 aA 3 3.0 cudzys│ˇw " true tekst po tab po nowej linii tez po nowej linii ??kst ' \ Może komuś się przyda ;)

          h3x

          tylko komu i poc sie to ma przydac??

          Mateusz

          a skąd się wzięło to 162 z a+A ??

          Slawek

          w Javie znaki char są traktowane tak samo jak liczby typu int. Konkretnie każdy znak określa jego kod ASCII, ponieważ operator + jest przeciążony dla liczb, stąd mamy niejawną konwersję typu i dodanie dwóch liczb.

          doman18

          Ja miałem do czynienia troszeczkę z C++ i twoje zdanie poniekąd rozumiem ale założę się że większość całkowitych beginnerów nie ma pojęcia o czym piszesz w tym zdaniu. Przeciętny beginner patrząc na to zdanie zapyta Co to znaczy przeciążony? Co to znaczy niejawna, kiedy jest jawna i jaka jest różnica i po co się to robi? Co to jest konwersja typu? Tutaj można z powodzeniem zastąpić to słowem "zmiana". Dla mnie kurs jest nie jasny bo i wbrew wcześniejszym deklaracjom o próbach przełożenia pojęć na ludzki język operujesz fachowym nazwenictwem i często nieświadomie mówisz o rzeczach których wcześniej nie wyjaśniałeś a już nimi operujesz. Próbowałem zobaczyć na czym polega język obiektowy mając podstawy języka proceduralnego z c++ i pascala ale z uwagi na ilość dziwnych pojęć zacząłem się cofać po lekcjach. Niestety w proceduralnym też widzę że nic nie wiem więc zawędrowałem aż do początku. No i początek (czyli objaśnienie klas, metod i obiektów) też leży. Dopiero w komentarzach zrozumiałem o co w tym wszystkim chodzi. Dla mnie idealnymi poradnikami do programowania była Symfonia c++ grębosza oraz darmowy "Od zera do gier kodera" które naprawdę były fajnie napisane bez epatowania jakimś ciężkim technicznym językiem. Niestety muszę zaliczyć Javę więc zbyt wiele to one mi nie pomogą.

          Slawek

          Zdaję sobie sprawę, że niektóre rzeczy nieświadomie piszę niezrozumiale - starałem się jak mogłem, żeby jednak było chociaż trochę lepiej niż w tradycyjnych książkach. Uważam też, że właśnie po to są komentarze, po to powstało forum, żeby po prostu zapytać jeśli coś nie jest do końca jasne - większość otrzymuje odpowiedź, która wszystko rozjaśnia. Niestety to jest problem tworzenia tego typu kursu w pojedynkę, że nie ma korektora i spojrzenia z perspektywy innej osoby.

          doman18

          No właśnie dlatego napisałem ten komentarz. Widzę że zależy ci na tym żeby jakoś to przekazać ludziom co wiesz dlatego założyłem że właśnie nie świadomie trochę komplikujesz niektóre objaśnienia. Bo jest mnóstwo autorów "mondryh" książek które z premedytacją używają technicznego słownictwa by jakoś udowodnić w ten sposób ten "prof.hab.inż." przed nazwiskiem. Ponadto co ważne słuchasz to co wytykają tobie w komentach. A to już jest połowa sukcesu. Prosiłbym tylko żebyś nie zarzucił tej stronki bo jest bardziej czytelna niż inne i forma blogowa pozwala na lepsze przyswojenie wiedzy dzięki np. konkstruktywnym komentarzom. Musisz tylko podszlifować sam styl przekazywania wiadomości moim zdaniem i przeanalizować z jakąś inną osobą swoje publikacje. Oczywiście nikt nie wymaga żebyś to zrobił od razu i w całości bo jako informatyk/programista pewnie nawet czasem nie masz czasu spać :D Ale metodą małych kroczków można dużo osiągnąć :] Pozdrawiam i powodzenia

          wokm

          Masakra...połowy rzeczy trzeba się domyślać...albo walczyć pół dnia żeby w końcu znaleźć błąd...

          acani

          Witam, wokm - jestem kobietą, nigdy nie pisałam programów, java to dla mnie jeszcze czarna magia ale jak dotąd zrozumiałam wszystko i każde ćwiczenie mi działa prawidłowo - nie walczę pół dnia, bo czytam ZE ZROZUMIENIEM uważam, że Autor pisze wręcz łopatologicznie (w porównaniu do książek, które przeglądałam), reszta jest wyjaśniona chociażby w komentarzach mimo usilnych chęci nie umiem przejść obojętnie obok komentarzy typu: masakra, do kitu, bez sensu, itp., itd. ... wolę komentarze KONSTRUKTYWNE, coś WNOSZĄCE lub choć zwykłe dzięki za starania, a w tym przypadku starania OWOCNE bardzo dziękuję Sławku za przystępny kurs acani

          Mateusz

          Oczywiście, że tak, mnie też denerwują ci, co gdy tylko im się coś nie uda od razu rzucają mięsem lub po prostu marudzą. Wszystkie błędy w wykonywanych przez czytelników ćwiczeniach są spowodowane brakiem umiejętności czytania ze zrozumieniem, ale to już jest szczyt nie umieć wykonać zadania, jak nie dość, że wszystko krok po kroku tłumaczy autor, to jeszcze poprawki dopisują ogarnięci czytelnicy...

          DDO

          W książce nie operuje się pojenciem przed jego wyjaśnieniem :-) więc nie będzie lepiej niż w książce, bo plan upadł na początku.

          Tobias

          Kurs jest OK i to jeszcze za DARMO!!! "W moich czasach", bo tak to należy ująć nic nie było za darmo, a książki pisali tacy jak "Bielecki" z których za h.. nie można było się efektywnie nauczyć np Fortran'a. Sławku! Gratuluję doskonałego kursu. A tym którzy tylko narzekają nie wróżę kariery programisty, bo tam upór jest jedyną drogą poprzez nieżadko "stawy pełne piranii i kajmanów", czyli trud który trudno opisać słowami. Obecne młode pokolenie aspiruje do miana społeczeństw próżniaków, którzy nic nie chcą dawać, a jedynie brać i brać bez końca, na gotowe.

          PJJ

          Witam, zacząłem kurs i jestem bardzo zadowolony. Ćwiczenia wychodzą mi poprawnie, choć nie wszystkie za pierwszym razem - ale na tym polega przecież nauka ;) Dzięki Sławku za świetnie przygotowany kurs. Jeżeli chodzi zaś o język to dla początkującego może to być czarna magia, ale z czasem Ci co myślą poważnie o javie, czy jakimkolwiek innym języku programowania - załąpią. "ponieważ operator + jest przeciążony dla liczb" - no chodzi o to że nawet jak napiszesz 'A' to pod tą literą kryje się pewna wartość i teraz program musi wybrać czy traktuje 'A' jako wartość matematyczną czy literę. "ponieważ operator + jest przeciążony dla liczb" - to traktuje ją jako wartość liczbową. Takie to trudne? Trochę logiki, uczcie się ludzie - nie wszystko z czym się spotkacie w życiu będzie odwzorowane pojęciami, które opanowaliście do 7 roku życia. Co to znaczy niejawna, kiedy jest jawna i jaka jest różnica i po co się to robi? "Niejawna" tzn. że program robi coś niejako automatycznie, choć Ty nie dałeś do tego polecenia. Właśnie poznajesz na jakich zasadach działa "java". "Jawna" tzn. że Ty świadomie piszesz kod którego efektu się spodziewasz, np.: <> Po co? No cóż program tak po prostu działa - jest to pewna baza, "aksjomat", nie wiem jak jeszcze Ci to wytłumaczyć. Program musi działać na jakichś zasadach. To jak, kiedy i czy w ogóle to wykorzystasz - zależy od Ciebie. Ważne jest żebyś miał tego świadomość że jest coś takiego i na tym to polega. Co to jest konwersja typu? Tutaj można z powodzeniem zastąpić to słowem „zmiana” - można, ale tak jest bardziej profesjonalnie i jeżeli będziesz kiedykolwiek rozmawiał z drugim programistą, to właśnie w ten sposób. Z czasem język ten wejdzie Ci w krew. Każdy fach ma swoje profesjonalne nazewnictwo - obojętnie czy jesteś ślusarzem, czy filologiem, czy programistą.

          Paweł

          Po pierwsze pojęciem*. Po drugie nawet jeżeli jest wyjaśnione, to nim nauczysz się danego pojęcia to minie trochę czasu i za każdym razem, gdy będziesz czytał zdanie z tym pojęciem, będziesz musiał wracać do jego definicji.

          Marcin

          dodam że w kodzie ASCII A = 65 a = 97 http://pl.wikipedia.org/wiki/ASCII

          ela

          aaa...Marcina rozumiem. Ale skąd, jako totalny jeleń miałam to wiedzieć ;-( ( tzn numery poszczególnych liter, czy np. znaków typu cudzysłów). Chyba to jest blog dla poziomu Pre-Intermediate, a nie absolute-begginer... ;-(

          pola

          i o to chodzi

          s4ncho

          "double -(..) (posiadają przyrostek F, lub f)" a nie "d" a Float "d"?

          s4ncho

          s4ncho: „double -(..) (posiadają przyrostek F, lub f)” a nie „d” a Float „d”?
          miało być Float "f"

          aga

          co to jest w ogóle "powrót karetki"? :D

          Fifiak

          z tego co zrozumiałem z doświadczenia, to powrót tak jakby kursora na początek linijki public class Typy{ public static void main(String[] args){ System.out.println('a'+'A'); System.out.println(1+2); System.out.println(1.0+2.0); System.out.println("cudzysłów \""); System.out.println(true); System.out.println("tekst\r"); System.out.println("tekst\rbunga bunga"); System.out.println("To jest bardzo dlugi tekst\ra to krotki"); System.out.println("\ttekst\ttekst2"); } }

          aga

          ale dzikość. i to jest przydatne np gdy..?

          Seweryn

          Powie mi ktoś do czego służy komenda "powrót karetki"?

          g

          karetka wraca tam skąd przyjechała, zwykle do szpitala ;)

          DDO

          :-) Standardowe operatory znane już w pascalu :-) Radze zaopatrzyć się w książkę do informatyki z liceum.

          Zbyszek

          Jak narazie wszystko się uruchamia

          Andrzej

          A jak zrobić tak aby poszczególne komendy system.priny.out wyswietlaly sie linia polini po nacisnieciu klawisza enter (lub dowolnego) anie wszystkie naraz po uruchomieniu programu? ps. dzieki za kurs, jest naprawde dobry!

          DDO

          :-) Musi być wczytywanie wartości w pascalu miales readln; Które pisało się przed zakończeniem dopuki nie kliknoles enterprogram nie mogl isc dalej, tu jest to samo.

          Pawel

          Powrót karetki sluzy jak wyzej napisano do powrotu kursora na poczatek nastepnej linii - to tak jakbys w Word'ie na koncu linii wcisnął dokladnie taki daje to efekt. Ja mam 2 pytania, czy jest mozliwosc wydrukowania tego co pojawia sie w oknie konsoli do pliku na komputerze? Powyzsze programy mi nie dzialaja - wyskakuje taki komunikat: Typy.java:10: ';' expected

          Witek

          Witam Musisz mieć coś źle napisane bo jak na razie to wszystkie przykłady i zadania do samorealizacji u mnie działają. Jak możesz to wklej kod z którym masz problem to zobaczymy co u Ciebie jest nie tak. (moje gg: 6800421)

          ZIK

          - Powrót karetki służy do powrotu na początek tej samej linii a nie następnej... - Pewnie, że jest możliwość zapakowania zawartości w plik. - ';' expected - oznacza, że kompilator spodziewa się średnika w konkretnym miejscu

          Arkadiusz

          Ja bym tutaj dodał, dlaczego użyłeś apostrofa i kiedy się go stosuje System.out.println('a'+'A');

          Pawel

          Mnie właśnie też zastanawia, dlaczego w jednym miejscu apostrof, a w innym cudzysłów. Czy cudzysłów tylko do tekstu, a apostrof do znaków?

          Kamil

          Tak, znaki (dane typu char) zawsze umieszczamy w aposrtofach, czy to w javie czy w c++ zasada jest ta sama. Natomiast zwykły tekst (typ srting) umieszczamy w cudzysłowach.

          Jędrzej

          No. I to jest zdrowo pojechane! ☺

          Jędrzej

          Mam problem, bo konsola wyświetla: A. Powinno wyświetlić Al!. Używam javy 7u1. Kod programu: public class AA{ public static void main(String[] args){ System.out.print("!\rl\rA"); } }

          DDO

          Jesli wraca do tej samej lini to patrz przyklad pod lekcją //kod System.out.println(„tekst”+”\r”+”??”); ? //wyswietla ??kst Wynika z tego że po powrocie znaki sa zastepowanie

          Jędrzej

          Dzięki, pomogło :3

          Jędrzej

          Po zdekompilowaniu bytecode'u okazało się że wszystko gra oprócz \' Popatrzyłem i zobaczyłem ' zamias w.w. \'. Sławek please correct or reply to my message.☺

          folcrum

          Nie wiem czemu, ale u mnie znak \r nie działa (pisze w netbinsie); System.out.println("abcd\refgh"); a wynik mam taki: abcdefgh wie może ktoś czemu ?

          Mateusz

          Napisałeś to ciągiem, bez osobnych argumentów. Powinno być tak: System.out.println("abcd"+"\r"+"efgh");

          folcrum

          Niestety Twój sposób Mateusz też nie jest skuteczny, efekt jest taki sam jak poprzednie a pozatym pozostale znaki specjalne pisane w ciągu reagują prawidłowo tylko ten jeden się uparł i nie działa. Miał juz ktoś tak ?

          DDO

          Mi w eclipse nie dziala tak jak trzeba przeskakuje do nowej lini.

          xcam

          z tym bendzie kalkulator

          MIchał

          a ja próbuję i próbuję i ciągle wyskakuje mi po 13 błędów, nie kumam czemu ; C wg mnie wszystko jest ok a on ma zastrzeżenia do różnych znaków -_-

          gandy

          Przedstaw co wypichciłeś i jakie są efekty i co chciałbyś osiągnąć - mi wszystko pasuje.

          Wysepka

          Po chwilowym przeglądaniu kodu dotarłem do naprawdę fajnej rzeczy oto próbka kodu: public class Dzielne{ public static void main(String[] args){ System.out.println("Piotr \t \t Pawel"); System.out.println("150zl \t \t 20zl"); System.out.println("20 lat \t \t 30 lat"); } } Warto zobaczyć :)

          Killrog

          Rzeczywiście ciekawe - nie wiem tylko dlaczego tak się robi o_O

          Mateusz

          Cudzysłów wygląda tak: " " Popraw i będzie działać!

          H0o1982

          Wszystko rozumiem z różnych typów danych bez problemów. Jednak znaki specjalne a raczej ich znaczenie i użycie nie jest wyjaśnione. Czy powinienem się tym martwić czy później w miarę potrzeb będziesz je wyjaśniał i używał? P.S. Wypasiony kurs Sławek!

          Jacek

          Jak zadeklarowac zmienna tekstowa?

          Witek

          Witam Zmienną tekstową zadeklaruj jako string np: String zdanie = "To jest jakiś tekst "; // przypisuje tekst do zmiennej zdanie System.out.println(zdanie); // wyświetla tekst na ekranie Pozdrawiam

          safilo

          witam ponownie A co to takiego flaga i do czego służy?? pozdrawiam.

          Thomas

          Jak można konwertować znaki na liczby i odwrotnie? Tak samo jak w C# czy inaczej?

          vishi

          Mnie to bardzo boli zdanie, że "w systemie dwójkowym nie da się przedstawić wszystkich liczb", khm, da się, ale nie zawsze w 8 czy 4 bajtach stąd konieczność czasem utworzenia dłuższego zapisu czym domyślam się są te BigNumbers :)

          Sławek Ludwiczak

          Możesz mi pokazać dokładną reprezentację dwójkową liczby 0,9 ? Nawet jeśli zapiszesz ją na mega bajcie to będzie to reprezentacja liczby z bardzo dużą dokładnością, ale nie dokładna wartość.

          vishi

          0.11(1001) hm, to tak jakbyś wymagał ode mnie dokładnego przedstawienia w dziesiętnym 0.(3) ale spoko już czaję, 2 jest względnie pierwsza z 5 która występuje w 10 stąd nasze przyzwyczajenia, że system dziesiętny pokazuje coś 'dokładniej' niż dwójkowy, pod tym względem masz rację, mnie jednak jako matematyka to zdanie zabolało, ale już czaję, dzięki za odpowiedź.

          n_euro_n

          null: tylko komu i poc sie to ma przydac??
          no głupszego pytania to już nie można było wymyślić

          Kuba

          Mam pytanie . Mam 12 lat i zacząłem się interesować językiem Java . Czy to źle czy dobrze że w tak młodym wieku zaczynam coś tak trudnego i nieco skomplikowanego ? Czy powinienem jeszcze odczekać ?

          Sławek Ludwiczak

          Programowanie to nie jest żadna czarna magia, tylko nauka jak matematyka itp. Dobrze rozwija twórczość i kreatywność. Dzięki temu, że wcześniej zaczniesz będziesz mógł się szybciej określić, czy to coś, co Cię kręci, czy Ci się znudzi po pół roku. Próbuj śmiało.

          Mike

          wszystko fajnie tylko, że to jest tutorial dla ludzi którzy są obyci w slangu komputerowym i troche już o programowaniu wiedzą. i pełno jest bezsensownych spolszczeń. gdzie mogę znaleźć kurs java "dla idioty"? gdzie wszystko jest po kolei rozpisane, tak, że moja 90-letnia babcia, która przy komputerze spędziła w swoim życiu 3 godziny, mogła się nauczyć.

          Marcin Kunert

          Programowanie wymaga umiejętności analitycznego myślenia i znajomości podstawowych pojęć komputerowych. Kurs jest skierowany do osób chcących się nauczyć programować i mających do tego predyspozycje, a nie "dla idiotów". Przykro mi, że musiałem Ci to uświadomić.

          Kavu

          Sorki, ale zrezygnujcie z nauczania programowania, bo kompletnie Wam to nie wychodzi. Przykro mi że muszę Wam to uświadomić... owszem, nie wszyscy mają predyspozycje do podjęcia się programowania, ale czytając taki kurs wątpie czy i ja bym się czegokolwiek nauczył, gdyby nie to mam już za sobą spore osiągnięcia w pisaniu w innych językach. Piszecie w sposób bardzo nieprecyzyjny, rzucacie wiele słów nowych dla kogoś kto się wcześniej tym nie zajmował i nie tłumaczycie ich znaczenia w rzetelny sposób. Nazwałbym to tłumaczeniem "po łebkach". Programowanie wymaga matematycznej precyzji, to nie html. Spytam tylko jeszcze... jakiej to liczby nie da się przedstawić w systemie dwójkowym? Tego uczą na pierwszym roku studiów o ile dobrze pamiętam...

          Marcin Kunert

          Dzięki za przekazanie swojej opinii. Na razie jednak nie planujemy rezygnacji z prowadzenia tego kursu - wręcz przeciwnie. Może faktycznie artykuł napisany jest zbyt trudnym językiem. Weźmiemy to pod uwagę przy odświeżaniu całego kursu, a przed opublikowaniem damy do przeczytania osobie nie związanej z programowaniem. Co do pytania - tak, dokładnie, uczą tego na pierwszym roku. U nas kurs nazywał się "Architektura systemów komputerowych". Jeśli nie zgadzasz się z tym zdaniem to podaj proszę dokładną reprezentację liczby 0,9 w systemie binarnym. P.S. Fajnie, że nas kurs odwiedzają doświadczeni programiści i nas weryfikują. Pochwal się tymi sporymi osiągnięciami z innych języków :) Pozdrawiam

          dawid

          null: Programowanie wymaga umiejętności analitycznego myślenia i znajomości podstawowych pojęć komputerowych. Kurs jest skierowany do osób chcących się nauczyć programować i mających do tego predyspozycje, a nie „dla idiotów”. Przykro mi, że musiałem Ci to uświadomić.
          hehehe dobrze powiedziane, rowniez jestem nowy, od wczoraj zaczalem kurs, mam zamiar w tym brnac, jak narazie wyglada to dobrze, tylko mam nadzieje ze za pol roku jak pisales wyzej mi sie nie znudzi, bo mam zamiar sie tym w zyciu zajmowac :)

          Adam

          Hmm , Czy może mi ktoś to wytłumaczyć bo do tej lekcji Wszystko rozumiałem a tutaj się zatrzymałem ;/..

          Adam

          Ok dzięki :D... teraz trochę już zaczynam rozumieć :D!

          Damian

          Nie bardzo wyjaśniłeś czego nie rozumiesz, ale może to Ci pomoże http://pl.wikipedia.org/wiki/Typ_danych .

          banialuk

          Chciałbym na przykład wynik takiego zapisu System.out.println(1.0+2.0); uzyskać po tabulatorze i udaje mi się to w ten sposób System.out.print("\t"); System.out.println(1.0+2.0); natomiast jak to zrobić w jednej linijce? Próbowałem już przeróżnych sposobów i ciężka sprawa. System.out.println("\t"+"1.0+2.0"); np nie sumuje, ale to jeszcze kumam,natomiast dlaczego przy zapisie System.out.println("\t"+1.0+2.0) mam efekt w postaci 1.02.0 to już nie rozumiem. Jakiś dobrodziej objaśni?

          Marcin Kunert

          Hej, chodzi o to jak interpretowane jest parametr dla System.out.println(). W Twoim pierwszym przykładzie: System.out.println(1.0+2.0); JVM interpretuje 1.0 jako liczbę i "+" zostaje rozpatrzony jako operator dodawania. Natomiast dla System.out.println(„\t”+1.0+2.0): JVM zauważa, że pierwsza część to ciąg znaków, a w takim przypadku "+" oznacza konkatenacją (łączenie znaków). W javie akcje wykonywane są od lewej strony do prawej, więc argument będzie przekształcany następująco: „\t”+1.0+2.0 --> „\t1.0"+2.0 -->„\t1.02.0" Żeby uzyskać Twój cel spróbuj zmienić kolejność interpretacji dodając nawiasy: System.out.println(„\t”+(1.0+2.0)) Mam nadzieję, że pomogłem

          banialuk

          Pomogłeś, dzięki.

          Meliasz

          Cześć, mam problem z tą lekcją. Po przepisaniu kodu i uruchomieniu go wyskakują mi w konsoli błędy. http://zapodaj.net/images/2fcfd419f5ece.jpg Gdy skopiowałem kod ze strony (plik i klasę nazwałem Typy2) wszystko działało bez zarzutu, jedynie nie wyświetlają się polskie znaki, z czym nie mogę sobie poradzić. Kod poza wcięciami się niczym nie różni, nie wiem gdzie jest błąd. Bardzo fajny kurs, fajnie się go czyta i nie chciałbym utknąć w tym problemie, więc proszę o w miarę szybką pomoc;) Z góry dzięki

          Sławek Ludwiczak

          wrzuć grafikę na inny hosting, ten nie działa.

          Meliasz

          dziwne, mi działa ale ok: http://www.iv.pl/images/61338384515159030753.jpg http://fotoo.pl//out.php?i=553444_java.jpg&id=36c290b4b9f2f48c333735323830 http://zapodaj.net/images/2fcfd419f5ece.jpg

          kamyk

          Znalazłem różnicę w plikach -sprawdź " printLn i printIn " Chciałbym pocwiczyc przedstawione przykłady ale czytam ten kurs na tablecie (pod androidem) i nie mam pojęcia jak z tym ruszyć do przodu (mam zainstalowany edytor "AIDE") -POMOCY

          krzjna

          Czy to wina tego że nie zdałem z matematyki i nie umiem dodawać czy tego że jest to pokręcone ? Pierwsze lekcje wykonywałem bez problemów, ale teraz ledwo rozumiem o co chodzi.

          Andrzej

          O co chodzi,przepisuje,kopiuje typy danych public class Typy{ public static void main(String[] args){ System.out.println('a'+'A'); System.out.println(1+2); System.out.println(1.0+2.0); System.out.println("cudzysłów \""); System.out.println(true); } } I mi nie wchodzi,robie wszystko jak mówiłeś i wyskakuje błąd: D:\K>javac Jezyki.java Jezyki.java:1: error: class Typy is Public, should be declared in a file named Typy.java public class Typy{1 error Bład jest w literce c w słowie class

          Marcin Kunert

          Twój plik nazywa się Jezyki.java a głowna klasa to Typy. Musisz albo zmienić nazwę pliku na Typy.java, albo główną klasę na Jezyki

          Andrzej

          A jeśli pisze komende javac [nazwa pliku].java i mam komunikat że komenda javac nie jest rozpoznawana, to musze za każdym razem wklejać Path'a?

          Mroczny

          public class Typy { public static void main(String[] args) { System.out.println('a'+'A'); System.out.println(1+1); System.out.println(1.0+2.0); System.out.println("cudzysłów \""); System.out.println(true); System.out.println("\ttekst po tab"); System.out.println("\ntekst po nowej lini"); System.out.println("To jest bardzo dlugi tekst\ra to krotki"); System.out.println("apostrof \'"); System.out.println("backslasch \\"); } } DObrze zrobiłem?

          Shinnok84

          Może ktoś wskazać błędy w programie u kolegi powyżej?Co jest nie tak?

          lolo

          A dlaczego coś ma być niby nie tak? Kod się kompiluje więc teoretycznie wszystko jest dobrze. Nie wiem co dokładnie chciał osiągnąć Mroczny, więc nie mogę stwierdzić, że coś źle zrobił. Może dany efekt był zamierzony, a ja nie wiedząc o tym uznaje go za błąd. Przykład linia: System.out.println(„To jest bardzo dlugi tekst\ra to krotki”); Może jej działanie jest zamierzone ale choć podejrzewam, że raczej nie.

          Shinnok84

          Mnie wyskakuje mnóstwo errorów, nawet po skopiowaniu całego programu.

          lolo

          Trzeba poprawić wszystkie cudzysłowy oraz apostrofy bo system komentarzy zmienia podczas wysyłanie je.

          Raskul

          Piszę w notepadzie ++ i niestety w cmd nie wyświetla mi polskich znaków, kodowanie ustawione mam na ANSI.

          nowak

          Cześć, wielkie dzięki za ten kurs. Czy jest jakiś sposób, żeby konsola poprawnie wyświetlała znaki spoza ASCII (np. chińskie)? W tej chwili wyświetlają mi się tylko znaki zapytania. Z góry dzięki za pomoc.

          Asia

          Czesc, dziekuje za kurs. Jestem kobieta, nie mam zadnego doswiadczenia w programowaniu. Generalnie jestem na bakier z technika:) Ale ten kurs jak na razie mnie nie przeraza. Jest dosc trudno mi zrozumiec poszczegolne lekcje, ale nie zniechecam sie i czytam kilkakrotnie kazda i robie "prace domowe" :) I pre do przodu. Chce sie nauczyc Javy dla siebie. Potem zabiore sie za androida. Trzymajcie kciuki.

          Staszek

          Nie wiem czemu, ale nie działają mi funkcje /n, /t nie wiem czym jest to spowodowane. To po prostu musi działać a tak się nie dzieje... Jaka może być przyczyna? Program w Javie nie zaczyna mi nowej linii, tylko pojawia sie w formie zdanie1/nzdanie2, to samo z tabulatorem...

          volq

          Aby rozwiązać ten problem, wystarczy że wpiszesz funkcję na początku drugiego zdania, tak jak ja zrobiłem to poniżej: System.out.println("Tekst w pierwszej linii"+"\nTekst w drugiej linii");

          snt.banzai

          stawiasz ukośnik nie w ta stronę :)

          Janosch

          A mi karetka nie powraca, ale przechodzi do następnej linii, czy ktoś wie dlaczego?

          ja

          Ja wiem - źle wpisałeś. Nie powiem Ci gdzie źle wpisałeś, bo rozbiła mi się szklana kula (czyt. nie napisałeś swojego fragmentu kodu).

          Janosch

          System.out.print("powrót karetki \r i co dalej "); System.out.println("po karetce"); w rezultacie daje taki zapis: powrót karetki i co dalej po karetce Czy tak powinno być?

          Merol

          Tak powinno być.

          Seler

          Popraw cudzysłowia - program którego używasz zamienia je na znaki drukarskie (pisane na dole) używaj tylko tych pisanych na górze (") wie kreski nie dwa przecinki (,,)

          Krzysiek

          Dlaczego nie chce mi działać komenda System.out.printIn ? System.out.print działa bez problemu. Mógłby mi to ktoś wytłumaczyć?

          Dawid Kunert

          Twój błąd polega na tym, że stosujesz I(jak Irena), zamiast l(jak lew). Poprawnie powinno być System.out.println().

          Nawias

          Mam problem, mianowicie wyświetlają mi się błędy po samodzielnym napisaniu. Typy.java:2 error: expected public class void main (String[] args){ ^ Typy.java:2 error: invalid method declaration; return type required public class void main (String[] args){ ^ Typy.java:9: error: reached end of file while parsing } ^ 3 errors Czego ta java chce? dlaczego powinien tam być jakiś (indentifier), dlaczego metoda jest niepoprawna? To mój plik napisany w Notepad++: public class Typy{ public class void main(String[] args){ System.out.println('a'+'A'); System.out.println(1+2); System.out.println(1.0+2.0); System.out.println("cudzysłów \""); System.out.println(true); } } Kiedy wkleję ten z lekcji, wszystko ładnie działa.

          Lolo

          Zamień class na static w linii public class void main(String[] args){

          Nawias

          O rany, ale wpadka. Rzeczywiście, przepraszam :)

          Szkolenie Java Wrocław