成员变量与局部变量

1、成员变量:定义在类中方法外的变量

 局部变量:定义在方法中的变量

2、不同点:

  代码层面:定义位置不同,参考1

  内存层面:空间不同,成员变量属于对象,跟对象一起存储在堆内存中

        局部变量属于方法,在栈内存的方法的栈帧中

  生命周期不同:成员变量随着对象的创建而存在,对象的消失而消失

        局部变量随着方法的调用而存在,方法的调用结束而消失

  初始化状态不同:局部变量:没有默认的初始值,必须先赋值才能使用

        成员变量:有默认的初始值,引用数据类型:null

               基本数据类型:整数类型:0

                      小数类型:0.0

                      布尔类型:false

                      字符类型:’\u0000’

方法的形式参数

1、方法的形式参数可以是引用数据类型,也可以是基本数据类型。

2、引用数据类型:类 接口 数组 枚举等

3、当方法的形式参数是引用数据类型时,调用方法时,传入的是一个对象的内存地址,在方法的内部可以通过这个内存地址访问方法外的对象。

方法的返回值

1、方法的返回值既可以是基本数据类型,也可以是引用数据类型

2、当方法的返回值是引用数据类型时,在return语句中,一定返回该类型的一个对象。

匿名对象

1、匿名对象:没有名字的对象。

2、定义格式:

  new 类名();

3、匿名对象的使用场景:

   1、如果某个对象在创建之后,其方法只调用一次,那么就可以使用匿名对象来调用。这种写法会节省一些内存空间。

   2、可以作为某个方法的实际参数。这种调用形式,在主方法中,可以将该对象看做匿名对象,但是在被调用的方法中,这个对象是有引用的对象,不是匿名对象。

   3、可以作为某个方法的返回值。这种调用形式,在被调用方法中,这个对象是匿名对象,但是在调用者,这个对象可能不是匿名对象。

  4、可以作为数组或者集合的元素,使用数组的索引可以依次取到匿名对象。

4、注意事项:

   匿名对象可以给成员变量赋值,但是这样做没有任何意义。因为匿名对象一旦被赋值,匿名对象就变成了垃圾,很快被回收掉。即使没有被回收,我们也无法使用这个匿名对象。

 5、匿名对象存入数组的使用

public class Test1 {

    public static void main(String[] args) {
        Person[] prr = new Person[5];
        for(int i=0;i<prr.length;i++) {
            prr[i]=new Person();
            prr[i].age = i;
        }
        System.out.println(prr[3].age);

    }

}
class Person{
    String name;
    int age;
}

 

 

 

 

 

posted on 2019-07-13 15:06  幸福的小耗子  阅读(103)  评论(0编辑  收藏  举报