Different kinds of parameters can be passed to methods, such as primitives, arrays, and objects.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijlywBKFj40XrO5ax4bUbl6rTMJ52D9R0gZGbFOSS_j7L-5pqyKozYmZBLxehyphenhyphenlP_Plh0-IxGZtWwm0cmKFqnrME6ASDuvQIj0SbRmCS4K3gmUMB-_4g3Q57mw6TCqqfmb_O63F1LgKXRV/s1600/java16+-+1.png)
A test class, Ex16a, is written with instance variables x and y.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUjgPY3eVVseuTTJVgCFRtcEBIwgJQZ_Nxmxs5ocyfTlvcikp5rm1BcDWgHxy4uNsWHwskeYF3Twf-DCTEjAeeOcZL9At12fpal8UusQA1pT0arF_eRhlcayKI2fY-j37sOlr13dntY0em/s1600/java16+-+2.png)
// *** 1. Start (Ex16a) class Ex16a { public int x = 5; public int y = 8; } // *** 1. End
This method changes the instance variables.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh35yrqq_3Ir66Ia0M1YxNa7OU5nr-uwPT4iaarZtWHRfxhynMa_wZ1GO5k6b4tExTqkQKDopa7E5a3gvqBXAHD-hJZqdbT7HsdWv8XZLYDtXApcGov3Q7ypQDRV5a_4D7KsjkQJNE2elfY/s1600/java16+-+3.png)
// *** 2. Start (change class) public static void retc(Ex16a c) { c.x = 10; c.y = 20; } // *** 2. End
If we pass primitives to a method, local variables will be created.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOdxMcoj9DAdV8zoPnzB_hWrb9thOL8UW8cZLcOQAsIkhg-oEF4PVRj1dE0xV2HhC780UoCgovzI7VDBeb76DQf6nzcZ3gk7GSj5auh-k7WOfRJobDH37CG48IxtqaLla2jcJR6fpjUMWh/s1600/java16+-+4.png)
// *** 3. Start (change local) public static void reta(int a) { a = a + 1; } // *** 3. End
If we pass a String, a local variable is made of that Sting.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPLw0ByEbyZyvfMYUNUBVY6R54rAKCuefIRXHhC1lI5jCvcAetssgQC_O4imTyDSpnHuIM5uW7mLdhSDeVYqjuCJtm6CSW1jQGX9xihkufs-HoBWgXOC24YRtsorLmOpxAzQgdz40YAhjT/s1600/java16+-+5.png)
// *** 4. Start (change local) public static void rets(String s) { s = "abcd"; } // *** 4. End
However, arrays, are passed by reference so any array changes persist.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBPm-uhRYiKoXTC1jxcSB73OiIgV92g-3HBJZ8-5pqrtZukanlu4Ly9_XktQiT3C4xYmwirKEK-7QKoPhH9jvvD1IH_FZ_CPTDj-A_K2MRegxzEFTPlStBwkXZscrGXcM6n3HFGHgnbJ-M/s1600/java16+-+6.png)
// *** 5. Start (change array) public static void retA(int[] A) { A[0] = 5; A[1] = 2; } // *** 5. End
// Ex16.java package com.javaAndroid.ex16; // *** 1. Start (Ex16a) class Ex16a { public int x = 5; public int y = 8; } // *** 1. End public class Ex16 { // *** 2. Start (change class) public static void retc(Ex16a c) { c.x = 10; c.y = 20; } // *** 2. End // *** 3. Start (change local) public static void reta(int a) { a = a + 1; } // *** 3. End // *** 4. Start (change local) public static void rets(String s) { s = "abcd"; } // *** 4. End // *** 5. Start (change array) public static void retA(int[] A) { A[0] = 5; A[1] = 2; } // *** 5. End public static void main(String[] args) { int a = 5; Ex16.reta(a); System.out.println(a); String s = "This"; Ex16.rets(s); System.out.println(s); int[] A = {1,1,1}; Ex16.retA(A); for (int arr : A) { System.out.println(arr); } Ex16a ex16a = new Ex16a(); System.out.println(ex16a.x + "," + ex16a.y); Ex16.retc(ex16a); System.out.println(ex16a.x + "," + ex16a.y); } }
No comments:
Post a Comment