Different kinds of parameters can be passed to methods, such as primitives, arrays, and objects.

A test class, Ex16a, is written with instance variables x and y.

// *** 1. Start (Ex16a)
class Ex16a {
public int x = 5;
public int y = 8;
}
// *** 1. End
This method changes the instance variables.

// *** 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.

// *** 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.

// *** 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.

// *** 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