SORU
10 NİSAN 2011, Pazar


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
10 NİSAN 2011, Pazar


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HTC

    HTC

    12 Ocak 2006
  • Microsoft Help & Training Videos

    Microsoft He

    31 Mart 2009
  • ThePointblank

    ThePointblan

    18 Aralık 2006