局部变量和成员变量以及值传递和引用传递

局部变量和成员变量

成员变量:

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

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;
}
复制代码

运行结果:

 

 

posted @   xjw12345  阅读(288)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示