यह प्रोग्राम आउटपुट के रूप में 6 देता है, लेकिन जब मैं लाइन 9 को अपूर्ण करता हूं, आउटपुट 5 है। क्यों? मुझे लगता है कि बी को नहीं बदला जाना चाहिए, मुख्य में 5 रहना चाहिए।मूल्य/संदर्भ से गुजरता है, क्या?
1 class C1{
2 int a=5;
3 public static void main(String args[]){
4 C1 b=new C1();
5 m1(b);
6 System.out.println(b.a);
7 }
8 static void m1(C1 c){
9 //c=new C1();
10 c.a=6;
11 }
12 }
जावा * हमेशा * मूल्य से गुजरता है, लेकिन आपके द्वारा गुजरने वाला मान संदर्भ चर है, इसलिए यह * इस स्थिति में संदर्भ द्वारा पारित होने लगता है (लेकिन यह नहीं है)। संपादित करें, जैसा कि @mprabhat अपने महान उत्तर (1+) में बताता है। इसके अलावा मैंने आपके प्रश्न को उखाड़ फेंक दिया क्योंकि मुझे नहीं लगता कि यह क्यों कम हो गया था। क्या हम डाउनवोटिंग कर रहे हैं क्योंकि लोग जावा को जानकर पैदा नहीं हुए हैं? –
आपको डीबगर में अपने कोड के दोनों संस्करणों के माध्यम से कदम उठाना चाहिए और अंतर देखें। –
//s.a http://stackoverflow.com/questions/40480/is-java-pass-by-reference – FailedDev