• 变量和参数传递


    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;
        }
    }
  • 相关阅读:
    重启Linux机器异常的解决方法
    SSH连接Linux服务器异常
    H5本地存储
    Spring MVC概述
    Linux下oracle开机自启动
    [ASP.NET MVC]@Partial 和@RenderPartial的区别
    [ASP.NET MVC]EntityFramework离线部署
    [ASP.NET MVC]@RenderSection,@RenderBody(),@RenderPage
    [ASP.NET MVC]@Html.AntiForgeryToken() 防止CSRF攻击
    [ASP.NET MVC]@Scripts.Render、@Styles.Render的使用
  • 原文地址:https://www.cnblogs.com/quanjunkang/p/10616005.html
Copyright © 2020-2023  润新知