Szkolenia programowania we Wrocławiu
Kurs Java Podstawy - rozszerzony

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ę).

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.

<- Poprzednia LekcjaNastępna Lekcja ->

Komentarze

Komentarze zamknięte. Zapraszamy do grupy 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??

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

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

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.

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.

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ą.

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...

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.

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.

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.

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");
}
}

Zbyszek

Jak narazie wszystko się uruchamia

aga

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

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

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.

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 ;/..

Damian

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

Adam

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

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

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.

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

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 :)