zoukankan      html  css  js  c++  java
  • 变量和参数传递

    1     局部变量和成员变量区别

    区别一:定义的位置不同

    定义在类中的变量是成员变量

    定义在方法中或者{}语句里面的变量是局部变量

    区别二:在内存中的位置不同

    成员变量存储在堆内存的对象中

    局部变量存储在栈内存的方法中

    区别三:生命周期不同

    成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

    局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

    区别四:初始化不同

    成员变量因为在堆内存中,所有默认的初始化值

    局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

    public class GirlFriend {
        String name;
        double height;
        String hair;
        public void speak(){
            //解决局部变量和成员变量同名的问题,用this区分
            System.out.println("我叫"+name+",身高"+height+","+hair+",大波浪");
        }
    }

    2    基本类型和引用类型作为参数传递

    1.基本类型作为参数传递时,其实就是将基本类型变量x空间中的值复制了一份传递给调用的方法show(),当在show()方法中x接受到了复制的值,再在show()方法中对x变量进行操作,这时只会影响到show中的x。当show方法执行完成,弹栈后,程序又回到main方法执行,main方法中的x值还是原来的值。

    2.当引用变量作为参数传递时,这时其实是将引用变量空间中的内存地址(引用)复制了一份传递给了show方法的d引用变量。这时会有两个引用同时指向堆中的同一个对象。

    public class Demo01 {
        //参数传递
        public static void main(String[] args) {
            int a=1;
            method01(a);
            System.out.println(a);//1
            //引用数据类型传递--对象
            Person p=new Person();
            p.name="杨超越";
            p.age=18;
            method02(p);
            p.speak();
        }
        //基本数据类型传递
        public static void method01(int a){
            a=2;
        }
        public static void method02(Person p){
            p.name="岳云鹏";
            p.age=45;
        }
    }
  • 相关阅读:
    [转] iphoneX、iphoneXS、iphoneXSMax、iphoneXR适配
    [转] 以 async/await 为例,说明 babel 插件怎么搭
    [转] 使用Node.js实现简易MVC框架
    [转] vue异步处理错误
    [转] 谈谈前端异常捕获与上报
    everything 13问
    Mysql 工具mysqlbinlog
    Mysql 删除日志
    Mysql 错误 ERROR 1 (HY000) at line 1: Can't create/write to file '/home/kaizenly/cfg_dict.csv' (Errcode: 13
    Mysql 问题集
  • 原文地址:https://www.cnblogs.com/quanjunkang/p/10616005.html
Copyright © 2011-2022 走看看