hjg 发表于 2021-3-26 22:21:48

027.面向对象基础-------匿名对象

本帖最后由 hjg 于 2021-3-27 09:51 编辑

早起的鸟儿有虫吃,瞎写的代码有BUG!   

         大家好,我是一名好久不见的老鱼油了,刚开始接触编程的时候都是看甲鱼老师的视频和来鱼C 论坛找答案 ,经过一段时间的学习,对计算机组成原理 计算机网络 操作系统数据结构与算法 算法设计与分析 C语言 python语言 java语言 and so on 。。的学习,让我在编程方面算是打下了一点儿基础,这次打算记录一下自己学习java的笔记,一来自己可以巩固知识,二来也算是来回馈给甲鱼&&平台。我更喜欢和大家一起学习,互相讨论。。 本人也新写手,文章不足方面还请大家体谅和指点一二。。。。。。

我们开始正文,先欢迎一下。
https://xxx.ilovefishc.com/album/202103/26/213818vaodoqtco7qzkdtd.gif
这篇介绍面向对象基础------匿名对象。。我这个系列打算就接着 非安全哥哥 的系列教程下去,之前没学java的可以先学完安全哥哥的教程再来
                              https://fishc.com.cn/thread-80133-1-1.html (出处: 鱼C论坛)]他的链接

为什么要面向对象基础呢?{:10_319:}
这边先分析非安全哥哥的目录
https://xxx.ilovefishc.com/album/202103/26/215625g9h06f3870h7a60b.png

那什么叫匿名对象呢?
没有对象名称的对象 就是匿名对象。 匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被G·C回收。 只使用一次的对象可以通过匿名对象的方式完成,这一点在以后的开发中将经常使用到。
/**
* @quther hjg
* @date 2021/1/28 21:35
**/
public class Demo7 {
    /**
   * 匿名      :      没有名字
   */
    public static void main(String[] args) {
//      Math2 m = new Math2();
//      int num = m.sum(100,200);
      
      //下面这里没有m
      int num = new Math2().sum(300, 200);
      System.out.println(num);
    }
}
class Math2{
    int sum(int x,int y) {
      return x+y;
    }
}
解释一下:
//      Math2 m = new Math2();
//      int num = m.sum(100,200);
这边是正常我们命名的做法,下面就是使用匿名的写法
//下面这里没有m
      int num = new Math2().sum(300, 200);

还记得 非安全说的 对象的引用和实体 ??里面介绍了 堆(heap) 和 栈(stack)
匿名了的话就会是图里面这样只有堆没有栈 用完就不要了。。。
https://xxx.ilovefishc.com/album/202103/26/221447v37uiio3kl7ill7u.png

下面再来看一段代码
/**
* @quther hjg
* @date 2021/1/28 21:38
**/

public class Demo8 {
    /**
   * 如果一个对象 , 我们准备使用两次 或 以上。 那么一定要给对象 创建对象名。
   * @param args
   */
    public static void main(String[] args) {
      new Person5().name = "张三"; //三段独立
      new Person5().age = 18;
      new Person5().say();
    }
}
class Person5{
    String name;
    int age;
    void say() {
      System.out.println("自我介绍,姓名:"+name+" , 年龄:"+age);
    }
}
它的运行结果是这样的      : 自我介绍,姓名:null , 年龄:0
为什么会这样呢?看这张图
https://xxx.ilovefishc.com/album/202103/26/221447iazscw4zeec0acxo.png
解释一下第一行新建一个Person5      :只有name 没有 age
第二行也新建一个Person5      : 只有 age 没有 name
第三行 say 方法也新建一个Person5   name 和 age 都没有

记住一句话:如果一个对象 , 我们准备使用两次 或 以上。 那么一定要给对象 创建对象名。

OK,,结束 下次见   面向对象进阶

可以的话顺手一路四点一下【收藏{:10_277:} 评分{:10_243:}分享{:10_249:}淘帖{:10_334:}顶】   再多多留言       你的支持就是我持续写作的动力!!!

页: [1]
查看完整版本: 027.面向对象基础-------匿名对象