Typy danych

W Javie podobnie jak w innych językach wyróżniamy wiele typów danych mogących przechowywać zarówno liczby całkowite jak i zmiennoprzecinkowe, znaki, ciągi znaków, oraz typ logiczny. Java posiada ścisłą kontrolę typów, czyli mówiąc prościej wszystko co zapisujemy musi mieć określony typ, musimy wskazać, czy coś jest np. liczbą, albo napisem.

Liczby całkowite

Wyróżniamy cztery typy danych dla liczb całkowitych. Różnią się one tym, jak dużą liczbę będzie można z ich pomocą zapisać.

  • 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ę w dobie taniejących pamięci ram). Ważne jest to, że jeżeli zapisujesz w kodzie programu dowolną liczbę, np. 123, to pomimo że mieści się ona w typie byte i short , to w rzeczywistości będzie wartością typu int. Typy byte i short będą miały sens w przypadku definiowania zmiennych, o których możesz przeczytać w innym artykule.

Kurs Java

Liczby zmiennoprzecinkowe

Kolejne dwa typy reprezentują liczby zmiennoprzecinkowe i podobnie jak liczby całkowite różnią się zakresem, 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 w postaci dokładnej wartości, zamiast tego posługujemy się najczęściej przybliżeniem danej wartości. Jeżeli chcesz wykonywać bardzo dokładne obliczenia lub musisz posługiwać się liczbami większymi niż liczby typu double lub long , to rozwiązaniem jest wykorzystanie klas BigInteger oraz BigDecimal . W Javie dowolna liczba zmiennoprzecinkowa domyślnie reprezentuje typ double. Jeżeli chcesz posługiwać się pojedynczą precyzją, to do liczby możesz dopisać literę F.

Znaki

Kolejnym typem jest char, czyli znak. Służy on do reprezentacji pojedynczych znaków. Wartości tego typu będziemy zapisywali pomiędzy apostrofami. Możemy się posługiwać także wartością w postaci liczby szesnastkowej, lub dziesiętnej, odpowiadającej kodowi danego znaku z tabeli Unikodu.

Znaki specjalne

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

Boolean (prawda/fałsz)

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

  • true- prawda
  • false- fałsz

Wartości tego typu wykorzystujemy w różnych instrukcjach sterujących i pętlach, czyli możemy określić, czy pewne operacje w naszym programie mają się wykonać, czy nie.

Ciąg znaków

Oprócz powyższych typów prostych na początku musisz wiedzieć także o jednym typie obiektowym. Jest nim typ String, który pozwala reprezentować ciągi znaków. Ciągi znaków zapisujemy w cudzysłowie, np. "Kasia".

Przykład

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

class DataTypes {
    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);
    }
}

Wynik działania:

zmienne przykład

Zachowanie użycia "+" w zależności od typu danych

Warto w nim zwrócić uwagę głównie na różne działanie operatora + (plus) w metodzie println() dla różnych typów danych. W przypadku znaków następuje dziwne zachowanie. Wyświetla się liczba 162, zamiast oczekiwanego "aA ". Dlaczego się tak dzieje? Następuje automatyczna zmiana typu i typ char jest zamieniany na typ int . Znak plus dla typu char nie powoduje więc połączenia znaków w napis, tylko dodaje kod liczbowy, który odpowiada poszczególnym znakom.

Dodatkowo w przypadku liczb operator + powoduje dodanie liczb i wyświetlenie wyniku, a nie ich połączenie w jeden napis.

Ważna jest też kolejność w jakiej zapisujemy różne wartości. Przykładowo:

System.out.println("Wynik to " + 1 + 2 + 3);

zmienne Wyrażenie jest obliczane od lewej do prawej. Po kolei do napisu doklejamy więc kolejne liczby. Jeśli odwrócimy kolejność:

System.out.println(1 + 2 + 3 + " to wynik ");
zmienne wynik

to wynik jest zupełnie inny, ponieważ najpierw wykonywane jest dodawanie kolejnych liczb, a gdy trafiamy na napis, to wynik ten jest z nim łączony w jedną całość.

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.

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

<blockquote> <a href="#comment-430" rel="nofollow"> <strong><em>s4ncho:</em></strong> </a> „double -(..) (posiadają przyrostek F, lub f)” a nie „d” a Float „d”? </blockquote> 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: <b>A</b>. Powinno wyświetlić <b>Al!</b>. Używam javy 7u1. Kod programu:<code> public class AA{ public static void main(String[] args){ System.out.print("!\rl\rA"); } } </code>

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 <b>\'</b> Popatrzyłem i zobaczyłem <b>'</b> zamias w.w. <b>\'</b>. Sławek please correct or reply to my message.☺

folcrum

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

Mateusz

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

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ć <b>dokładną</b> 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

<blockquote> <a href="#comment-168" rel="nofollow"> <strong><em>null:</em></strong> </a> tylko komu i poc sie to ma przydac?? </blockquote> 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ę <b>dokładną</b> 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

<blockquote> <a href="#comment-11976" rel="nofollow"> <strong><em>null:</em></strong> </a> 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ć. </blockquote> 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&amp;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&gt;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 :)