我同意楼上的观点 。我个人认为,这里的代码的内存数据传递跟深克隆的原理很相似- package thread;
- import java.util.*;
- class Student {
- private String name;
- private int age;
-
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return this.age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String toString(){
- String msg="\t"+this.name+"\t"+this.age;
- return msg;
- }
- }
- class Admin {
- public void create(String name ,int age,Student[] arr){
- Student stu=new Student();
- stu.setName(name);
- stu.setAge(age);
- /*arr[0]=stu;
- arr[1]=stu; 我觉得这段代码改成下面的会更加健壮点*/
- //arr数组的每个元素都是一个对象
- for (int i = 0; i < arr.length; i++) {
- arr[i]=stu;
- }
- }
- //函数的重载。arr数组的每个元素都是一个基本数据类型int型
- public void create(int[] arr){
- for (int i = 0; i < arr.length; i++) {
- arr[i]=1;
- }
- }
-
- }
-
-
- public class Test1 {
- public static void main(String[] args){
- Scanner in=new Scanner(System.in);
- Student[] stuArr=new Student[2];
- int[] arr = new int[2];
- System.out.println("10:添加一个学生");
- int b=in.nextInt();
- Admin adminStu=new Admin();
- if(b==10){
- // adminStu.create("小红",17,stuArr);这句代码创建的对象与下面的代码无关
- adminStu.create("小天",18,stuArr);
- adminStu.create(arr);
- }
- arr[0]=0;//这里改变arr[0],并不影响arr[1]
- stuArr[0].setName("小王");
- stuArr[0].setAge(55);
- //strArr[0]和strArr[1]的引用变量相同
- System.out.println(stuArr[0]==stuArr[1]);
-
- for(int i=0;i<2;i++){
- System.out.println(stuArr[i]);// 结果:小王 55
- 小王 55
- }
- for(int i=0;i<2;i++){
- System.out.println(arr[i]);//结果:0
- 1
-
- }
-
- }
-
- }
复制代码 |