java基础知识16_局部变量与成员变量的区别 & 匿名对象

局部变量与成员变量

区别:

  • 定义的位置上的区别:
    1、成员变量:定义在方法之外、类之内;
    2、局部变量:定义在方法之内。
  • 作用上的区别:
    1、成员变量:是用于描述一类事物的公共属性的;
    2、局部变量:是提供一个变量给方法内部使用而已。
  • 生命周期的区别:
    1、成员变量:随着对象的创建而存在,随着对象的消失而消失;
    2、局部变量:在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量一但出了自己的作用域那么马上从内存中消失。
    例如:
    class Person{
    String name;
    public void eat(){
    for(int i = 0; i < 5; i++){
    System.out.println(“i=”+i);//for后的大括号为i的作用局,此句执行完后i就消失
    }
    System.out.println(“i=”+i);//此句时i已经消失,故会报错
    }
    }
  • 初始值的区别:
    1、成员变量是有 默认的初始值的(如下图);
    这里写图片描述
    2、局部变量是没有默认的初始值的,必须要先初始化才能使用。
    这里写图片描述

匿名对象

1、匿名对象定义:没有引用类型变量指向的对象称作为匿名对象。
2、匿名对象的好处:简化书写、节省内存。
3、匿名对象要注意的事项:

  • 1、我们一般不会给匿名对象赋予属性值,因为永远无法获取到;
  • 2、两个匿名对象永远都不可能是同一个对象。

4、匿名对象的应用场景:

  • 1、如果一个对象需要调用一个方法一次的时候,而调用完这个方法之后,该对象就不再使用了,这时候可以使用匿名对象;
  • 2、可以作为实参调用一个函数。

5、练习:需求:使用java类描述一个学生类。

//学生类
class Student{
    int num;//学号
    String name;//姓名
    public void study(){
        System.out.println("好好学习!");
    }
}
class Demo1{
    public static void main(String[] args){
        //创建一个学生对象
        Student s = new Student();//这句不是匿名对象
        //new Student();//这是匿名对象
        new Student().name = "狗娃";//匿名对象,但一般不对匿名对象赋予属性值
        System.out.println(new Student().name);//输出结果为null

    }
}

class Demo2{        
    public static void main(String[] args){             
        //创建一个学生对象
        System.out.println(new Student()==new Student());//"=="用于引用类型变量时,比较的是内存地址。判断两个对象是否为同一个对象。//输出结果是false
    } 
}

//应用场景一实例:
class Demo3{        
    public static void main(String[] args){ 
        //调用Student的study方法
        Student s = new Student();
        s.study();
        //如果调用对象只使用一次,后续代码就不再使用该对象了,此时建议使用匿名对象的方式来实现,如下:
        new Student().study();
    } 
}
//应用场景二实例:
//需求:调用一次repair方法。接上篇修车的实例。
class Demo4{        
    public static void main(String[] args){ 
        //CarFactory f = new CarFactory();
        //Car c = new Car();
        //f.repair(c);
        //以上可优化为: 
        CarFactory f = new CarFactory();
        f.repair(new Car());
    } 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值