博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
变量和参数传递
阅读量:5265 次
发布时间:2019-06-14

本文共 1191 字,大约阅读时间需要 3 分钟。

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;    }}

 

转载于:https://www.cnblogs.com/quanjunkang/p/10616005.html

你可能感兴趣的文章
Octotree Chrome安装与使用方法
查看>>
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>
MetaWeblog API Test
查看>>
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>
移动、尺寸改变
查看>>
poj2255Tree Recovery【二叉树重构】
查看>>
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>