Dobrý den,
jsem začátečník v programování obecně. Pokud v metodě uvedu referenční proměnou, třeba Integer, jak změním hodnotu na kterou ukazuje;
tj. Předávám hodnotu odkazem.
1) Ahoj
2) V Javě se předávají primitivní datové typy výlučně hodnotou, odkazem se dá předat pouze objekt.
3) Pokud přesto potřebuješ předat (třeba) INT, musíš ho zabalit do třídy OBJECT a potom poslat tu referenci.
4) Myslím, že se to tu už někde na foru řešilo, zkus zapátrat :)
#2 TheOndrap
Asi jiná cesta není. Zkoušel jem:
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer a=new Integer(2);
Integer b=new Integer(5);
swap (a,b);
System.out.println ("A="+a+" B="+b);
}
static void swap(Integer a,Integer b) {
int pomocna=0;
// Lze měnit přes instanci?
pomocna = a;
a=b;
b=pomocna;
}
#2 TheOndrap
A nefunguje ani to to:
public static void main(String[] args) {
// TODO Auto-generated method stub
String a;
a="Ahoj";
swap (a);
System.out.println (a);
System.exit(0);
}
static void swap(String s) {
s= new String("čau");
}
}
Opravdu jsou objekty předávané odkazem? Podle toho co jsem pochopil, tak paramety jsou vždy předávány hodnotou. A ne objekty odkazem jak tvrdí darthdeus. Nebo se pletu?
tohle je největší demence Javy, nemůžeš předat hodnotu odkazem pokud to není objekt, takže pokud chceš předat třeba základní typ jako int, double, string apod. tak to musíš zabalit do objektu... takže například takto
public class Main {
public static void main(String[] args) {
SwapObject obj = new SwapObject(50, 100);
swap(obj);
}
private static void swap(SwapObject obj) {
if (obj != null) {
Object tmp = obj.a;
obj.a = obj.b;
obj.b = tmp;
}
}
}
final class SwapObject {
public Object a;
public Object b;
public SwapObject(Object a, Object b) {
this.a = a;
this.b = b;
}
}
zlatý jazyky rodiny C, kde tohle vůbec není problém... Java hold hlade až příliš velkej důraz na bezpečnost a tím, že je kompletně OOP, tak jiná možnost (aspoň pokud vim), tak neni
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku