• 非零基础自学Java (老师:韩顺平) 第7章 面向对象编程(基础部分) 7.3 成员方法传参机制


    非零基础自学Java (老师:韩顺平)

    ✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】

    第7章 面向对象编程(基础部分)

    7.3 成员方法传参机制
    7.3.1 基本数据类型的传参机制

    举个栗子

    /**
     * ClassName: AA
     * date: 2022/9/2 15:25
     *
     * @author DingJiaxiong
     */
    
    class AA {
        public void swap(int a , int b){
            System.out.println("a和b交换前的值 a = " + a + " b =" + b);
            int tmp = a;
            a = b;
            b = tmp;
            System.out.println("a和b交换后的值 a = " + a + " b =" + b);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    调用类

    /**
     * ClassName: MethodParameter01
     * date: 2022/9/2 15:40
     *
     * @author DingJiaxiong
     */
    
    public class MethodParameter01 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
    
            AA obj = new AA();
            obj.swap(a , b);
    
            System.out.println("main方法中 a = " + a + " b = " + b);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    运行结果

    在这里插入图片描述

    7.3.2 引用数据类型的传参机制

    举个栗子

    B 类中编写一个方法 test100,可以接收一个数组,在方法中修改该数组,看看原来的数组是否变化

    /**
     * ClassName: B
     * date: 2022/9/2 15:44
     *
     * @author DingJiaxiong
     */
    
    class B {
        public void test100(int[] arr){
            arr[0] = 200;
            System.out.println("test100的arr数组");
    
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + "\t");
            }
            System.out.println();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    调用类

    /**
     * ClassName: MethodParameter02
     * date: 2022/9/2 15:44
     *
     * @author DingJiaxiong
     */
    
    public class MethodParameter02 {
        public static void main(String[] args) {
            B b = new B();
            int[] arr = {1 ,2 ,3};
    
            b.test100(arr);
            System.out.println("main中的arr数组");
    
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + "\t");
            }
            System.out.println();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    运行结果

    在这里插入图片描述

    再举个栗子

    B 类中编写一个方法 test200,可以接收一个 Person(name,age)对象,在方法中修改该对象属性,看看原来的对象是否变化

    在这里插入图片描述

    可以看到修改后,原来的实例对象的值变化了。

    直接重新创建一个实例对象,效果如何

    在这里插入图片描述

    把p赋值为null试试

    在这里插入图片描述

    OK。

    听听韩老师的讲解:

    【置空时】

    在这里插入图片描述

    p = null是把test200中的p指向了“空”,与main方法中的p没有关系。

    【new出新对象】

    也与原先main方法中的没有关系,

    在这里插入图片描述

    懂了。

    7.3.3 成员方法返回类型是引用类型应用实例

    编写一个方法 copyPerson,可以复制一个 Person 对象,返回复制的对象。克隆对象

    注意要求得到新对象和原来的对象是两个独立的对象,只是他们的属性相同

    Person类

    /**
     * ClassName: Person
     * date: 2022/9/2 15:11
     *
     * @author DingJiaxiong
     */
    class Person {
        String name;
        int age;
    
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    /**
     * ClassName: MyTools
     * date: 2022/9/2 15:18
     *
     * @author DingJiaxiong
     */
    
    class MyTools {
        public Person copyPerson(Person p){
            Person p2 = new Person();
            p2.name = p.name;
            p2.age = p.age;
            return p2;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    调用类

    /**
     * ClassName: MethodExercise02
     * date: 2022/9/2 16:13
     *
     * @author DingJiaxiong
     */
    public class MethodExercise02 {
        public static void main(String[] args) {
            Person p = new Person();
            p.name = "张三";
            p.age = 100;
    
            MyTools tools = new MyTools();
            Person p2 = tools.copyPerson(p);
    
            System.out.println(p);
            System.out.println(p2);
    
            System.out.println(p == p2);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    运行结果

    在这里插入图片描述

  • 相关阅读:
    网络请求技术--跨域
    缓存穿透详解及解决方案
    java 调用C#语言写的dll文件代码 超详细过程
    差分、差模,共模,单端(1)
    MySQL索引和优化
    Netty网络框架学习笔记-17(客户端断线重连)
    ABAP-VL02N修改交货单外部标识BAPI
    【精讲】vue框架 路由(hash及history)区别、ui组件库
    centos8安装rabbitmq(rpm包)
    【PWN · heap | Off-By-One】Asis CTF 2016 b00ks
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126845600