arrays - java - list question - Why did it print out -4 on the 3rd printout when i ran it? -


  पैकेज javaapplication8; सार्वजनिक वर्ग मुख्य {सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {int [] सूची 1 = {1, 2, 3,4}; Int [] list2 = {5, 6, 7,8}; के लिए (इंट i = 0; i & lt; list2.length; i ++) {System.out.print (सूची 2 [i] + ""); } System.out.println (""); List2 = list1; के लिए (इंट i = 0; i & lt; list2.length; i ++) {System.out.print (सूची 2 [आई] + ""); } System.out.println (""); // बदलें सूची 1 सूची 1 [0] = -1; // सूची 2 सूची 2 बदलें [3] = -4; // सूची 1 आउटपुट के लिए (इंट आई = 0; आई & lt; लिस्ट 1। लैंप; आई ++) {System.out.print (सूची 1 [आई] + ""); } System.out.println (""); // list2 आउटपुट के लिए (इंट i = 0; i & lt; list2.length; i ++) {System.out.print (list2 [i] + ""); } System.out.println (""); // सेट सूची 1 सूची 1 = नया इंट [2]; सूची 1 [0] = 100; सूची 1 [1] = 99; // सूची 1 आउटपुट के लिए (इंट आई = 0; आई & lt; लिस्ट 1। लैंप; आई ++) {System.out.print (सूची 1 [आई] + ""); } System.out.println (""); // list2 आउटपुट के लिए (इंट i = 0; i & lt; list2.length; i ++) {System.out.print (list2 [i] + ""); } System.out.println (""); }}  

चलाएं:

  5 6 7 8 1 2 3 4 -1 2 3 -4 -1 2 3 -4 100 99 -1 2 3 -4  

सूची 1 और सूची 2 आपके द्वारा किए जाने वाले एक ही सरणी ऑब्जेक्ट की ओर इशारा कर रहे हैं सूची 2 = सूची 1;

ऐसा करने से सूची 2 [3] = -4; वास्तव में यह सरणी ऑब्जेक्ट के लिए करता है जिसे पहले लिस्ट 1 द्वारा इंगित किया गया था।

और याद रखना कि सरणी ऑब्जेक्ट जो पहले लिस्ट 2 से संबंधित था अब कचरा संग्रह के लिए है।

तो पहले जब आपने लिस्ट 1 किया = X और List2 = y मेमोरी में दो सरणी ऑब्जेक्ट्स सूचीबद्ध हैं 1 सूची और list2 वेरिएबल हालांकि सूची 2 = list1 यू करने के बाद एक्स चर के लिए दोनों चर बिंदुओं को इंगित किया गया है और अन्य सरणी अब निशुल्क है और जावा को इस स्मृति को कुछ समय याद करना होगा और इसलिए जो भी बदलाव करता है वह y के बजाय x ऑब्जेक्ट करने के लिए किया जाता है


Comments