[java] skąd się uczyć, jakie są różnice między c++

Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[java] skąd się uczyć, jakie są różnice między c++

Post autor: Ser Cubus »

hej,
chciałbym się nauczyć javy (zależy mi na jakimś szybkim kursie), póki co używam javastart.pl, ale to wygląda na dosyć słabą stronkę. Uważam, że całkiem nieźle znam c++, więc fajnie by było uczyć się porównując te dwa języki, a nie od 0.

Różnice jakie znalazłem:
- brak wskaźników w javie
- (wszytkie ?) obiekty w javie są tworzone przez referencje
- brak wielokrotnego dziedziczenia w javie
- wszytkie klasy javy dziedziczą po jednej głównej
- final (odpowiednik const w c++) nie musi być definiowany podczas inicjalizacji


Tak na chwilę obecną mam też dodatkowe 2 pytania:
1) jak dokładnie definiować tablice, co kiedy znam na starcie rozmiar jaki chcę, aby one miały, a co w przeciwnym wypadku (interesują mnie przypadki 1 i 2 wymiarowe)
2) dlaczego mogę uzyć zmiennej

Kod: Zaznacz cały

int a = 5;
ale, to już nie zadziała

Kod: Zaznacz cały

BigInteger big_a = "123";
poprawnie jest:

Kod: Zaznacz cały

BigInteger big_a = new BigInteger ("123");
Jeżeli znacie inne ciekawostki, z chęcią posłucham
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[java] skąd się uczyć, jakie są różnice między c++

Post autor: Althorion »

Javy akurat uczyłem się z książek, tak więc źródeł elektronicznych Ci zbytnio nie polecę.

Ja Ci jednak polecę nauczenie się nowego języka od zera. Różnią się sporo, głównie filozofią działania i możesz wpadać niechcący w wiele pułapek (np. bardzo się zdziwić, kiedy porównanie 12345 == 12345 zwróci fałsz).

Tablice tworzy się trochę podobnie jak w C++, int[] tablica = new int[42]; int[][][] szescian = new int[6][6][6];. Omówienie listy znajdziesz w .

W pierwszym przypadku tworzysz zmienną i przypisujesz do niej typ prymitywny, jakim jest małe wyrażenie całkowite (większe będą już obiektami) — i to jest w porządku. W drugim próbujesz zrobić obiekt typu BigInteger, po czym przypisać do niego zupełnie inny obiekt (stringa). To nie ma prawa działać. W trzecim tworzysz nowy obiekt typu BigInteger, wywołując poprawnie jego konstruktor.
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[java] skąd się uczyć, jakie są różnice między c++

Post autor: Ser Cubus »

racja, chodziło mi o coś takiego:
BigInteger big("123");

i jak to jest z wysyłaniem obiektów przez referencje i przez wartość? Rozumiem, że funkcja jest jedna (w c++ byłyby 2), zależy co wyślemy. Jeżeli referencje, to:

Kod: Zaznacz cały

typ zmienna = new typ(...);
foo(zmienna) //referencja
czy tak?
Ostatnio zmieniony 15 maja 2013, o 08:32 przez Althorion, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości.
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[java] skąd się uczyć, jakie są różnice między c++

Post autor: dexter90 »

Co się z wami dzieje?

... nd_C%2B%2B

Kod: Zaznacz cały

http://www.dickbaldwin.com/java/Java008.htm

http://stackoverflow.com/questions/9192 ... een-java-c
http://www.lrdev.com/lr/java/javacppdiffs.html
http://www.javacoffeebreak.com/articles ... djava.html

Nie dziękujcie.
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[java] skąd się uczyć, jakie są różnice między c++

Post autor: Ser Cubus »

dzięki, tego szukałem. I chciałbym potwierdzić jedną rzecz. W javie nie mogę zrobić czegoś takiego?

Kod: Zaznacz cały

class Main{
...
String str1, str2;
Foo.Bar(str1, str2);
...
}
class Foo{
public static void Bar(str1, str2){
str1 = "AAA";
str2="BBB";
}
Aby móc modyfikować stringa muszę stowrzyć klasę osłonową, która będzie posiadała metodę do zamiany wartości swojego stringa?
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[java] skąd się uczyć, jakie są różnice między c++

Post autor: dexter90 »

Wiesz czym jest typ referencyjny? String do funkcji przekazywany jest jako referencja. Wewnątrz funkcji Bar operację wykonujesz na kopii referencji, która została przekazana do funkcji. Nie wiem jak w JAVA, ale aby podobne coś zadziałało musisz wykorzystać przekazanie ref przez ref. czyli ref lub out.
ODPOWIEDZ