局部变量和成员变量 与 值传递和引用传递
局部变量和成员变量
成员变量不能定义到类体外(成员变量是定义在类)
局部变量:
定义在方法里面的变量就是局部变量
这两个变量的不同之处
定义的位置不同:
成员变量:定义在类体以内,方法体以外
局部变量:定义在方法体内或者声明在方法上
在内存中的位置不同
成员变量:在堆中进行存储
局部变量:在栈中进行存储
初始化值的不同
成员变量:有默认值
局部变量:没有默认值,在使用的时候需要进行赋值
生命周期不同
生命周期:一个变量从创建到销毁的全过程就是生命的周期
成员变量:随着对象的创建而创建,随着对象的销毁而销毁的,具体结束是按照垃圾回收器空闲的时候进行销毁的
局部变量:随着你的方法创建而创建的,随着你的方法销毁而进行销毁
当局部变量和成员变量名称相同的时候
局部变量会优先于成员变量(就近原则)
public class a1 { public static void main(String[] args) { Dogs d = new Dogs(); System.out.println(d.dogName); d.dogName="旺财"; System.out.println(d.dogName); d.eat(); } } class Dogs{ //成员变量 public String dogName; //方法 public void eat(){ //局部变量 System.out.println("->"+dogName); String dogName="小黑"; System.out.println(dogName); } }
基本数据类型
public class a1 { public static void main(String[] args) { Cat cat = new Cat(); int x=10; System.out.println("调用前x的值为:"+x); cat.chea(x); System.out.println("调用后x的值为:"+x); } } class Cat{ public void chea(int x){ //局部变量 x += 5; System.out.println("方法中x的值为:"+x); } }
引用数据类型
public class a1 { public static void main(String[] args) { Dogs dogs = new Dogs(); dogs.name = "张三"; dogs.age = 20; System.out.println("方法调用前的信息:"+dogs.name+"\t"+dogs.age); Cat c = new Cat(); c.change(dogs); System.out.println("方法调用后的信息:"+dogs.name+"\t"+dogs.age); } } class Cat{ public void change(Dogs d){ d.name = "小明"; d.age = 10; System.out.println("方法调用时的信息:"+d.name+"\t"+d.age); } } class Dogs{ 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