局部变量和成员变量以及值传递和引用传递
局部变量和成员变量
成员变量:
定义在类中的变量就是成员变量
public class Dog {
//成员变量 String name; int age; String color; }
局部变量:
定义在方法中的变量就是局部变量
public void eat(){
//局部变量 String name; System.out.println("狗吃"); }
局部变量和成员变量的区别:
1、定义的位置不同:
成员变量:定义在类体以内,方法体以外
局部变量:定义在方法体或者声明在方法体的参数
2、在内存中的位置不同:
成员变量:在堆内存中存储
局部变量:在栈区存储
3、初始化值不同:
成员变量:有默认值
局部变量:没有默认值,所以局部变量在使用前要先进行赋值
4、生命周期不同:
生命周期:一个变量从创建到销毁的全过程
成员变量:随着对象的创建而创建,随着对象的销毁而销毁,具体 的结束时间是在垃圾回收空闲的时候销毁
局部变量:随着的方法的调用而创建,随着方法的执行结束而销毁
5、当局部变量和成员变重名
当局部变量和成员变量重名的时候,局部变量有先与成员变量(就近原则)
值传递和引用传递
基本数据类型
基本数据类型作为形式参数,形参的改变不会影响实际参数,传递的是值本身
public class LocalVariable { public static void main(String[] args) { demo demo = new demo(); int x = 10; System.out.println("方法调用前x的值:"+x); demo.change(x); System.out.println("方法调用后x的值:"+x); } } class demo{ public void change(int x){ x+=5; //局部变量 System.out.println("方法中x的值:"+x); } }
运行结果:
引用数据类型
引用数据类型作为参数,形参的改变影响实际参数,传递的是地址值
public class LocalVariable { public static void main(String[] args) { Student s = new Student(); s.name="张三"; s.age=16; System.out.println("方法调用前的信息:"+s.name+"\t"+s.age); demo02 demo02 = new demo02(); demo02.change(s); System.out.println("方法调用后的信息:"+s.name+"\t"+s.age); } } class demo02{ public void change(Student s){ s.name="小明"; s.age=18; System.out.println("方法调用的信息:"+s.name+"\t"+s.age); } } class Student{ String name; int age; }
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix