Nasıl bir pas eşdeğer yapmak için Java ilkel için başvuru
Bu kod Java:
public class XYZ {
public static void main(){
int toyNumber = 5;
XYZ temp = new XYZ();
temp.play(toyNumber);
System.out.println("Toy number in main " toyNumber);
}
void play(int toyNumber){
System.out.println("Toy number in play " toyNumber);
toyNumber ;
System.out.println("Toy number in play after increement " toyNumber);
}
}
çıkış bu
Toy number in play 5 Toy number in play after increement 6 Toy number in main 5
C referans yani gölgeleme önlemek için by-pass toyNumber
değişken aynı değişken bir kopyasını oluşturma aşağıdaki gibi geçebilir:
void main(){
int toyNumber = 5;
play(toyNumber);
cout << "Toy number in main " << toyNumber << endl;
}
void play(int &toyNumber){
cout << "Toy number in play " << toyNumber << endl;
toyNumber ;
cout << "Toy number in play after increement " << toyNumber << endl;
}
ve C çıktı bu olacak:
Toy number in play 5 Toy number in play after increement 6 Toy number in main 6
Benim sorum C kodu olarak aynı çıktı almak için Java eşdeğer kodu Nedir, Java is pass by value rather than pass by reference göz önüne alındığında?
CEVAP
Birkaç seçenek var. En mantıklı olan gerçekten yapmak için çalışıyoruz ne bağlıdır.
Seçenek 1: toyNumber bir sınıf olarak ortak bir üye değişkeni
class MyToy {
public int toyNumber;
}
sonra pass yöntemine bir MyToy için bir referans.
void play(MyToy toy){
System.out.println("Toy number in play " toy.toyNumber);
toy.toyNumber ;
System.out.println("Toy number in play after increement " toy.toyNumber);
}
Seçenek 2: referans geçmek yerine . değerini döndürür
int play(int toyNumber){
System.out.println("Toy number in play " toyNumber);
toyNumber ;
System.out.println("Toy number in play after increement " toyNumber);
return toyNumber
}
Bu seçim okuyan, toyNumber = temp.play(toyNumber);
main callsite için küçük bir değişim gerektiriyor.
Seçenek 3: sınıf veya statik bir değişken
Eğer iki işlevi aynı sınıf veya sınıf örneği yöntemler, sınıf üye değişkeni içine toyNumber dönüştürmek olabilir.
Seçim 4: int türünde bir öğeyi bir dizi Oluşturmak ve o pası
Bu hack bir olarak kabul edilir, ama bazen içi sınıfı çağırmaları değerler döndürmek için kullanılır.
void play(int [] toyNumber){
System.out.println("Toy number in play " toyNumber[0]);
toyNumber[0] ;
System.out.println("Toy number in play after increement " toyNumber[0]);
}
Java nasıl yeni bir Liste yapmak için...
Nasıl Java URL kod çözme yapmak için?...
Nasıl Java bir dizi bir dizi yapmak iç...
Nasıl Java Genel bir yöntem statik yap...
Nasıl Java GWT takvim işlemleri yapmak...