匿名对象

  

  1. package com.demo02;
  2. public class Person {
  3. String name;
  4. int age;
  5. public void callname(){
  6. System.out.println("hello,"+name);
  7. }
  8. }
  9. package com.demo02;
  10. /*
  11. 创建对象的标准格式:
  12. 类名称 对象名 = new 类名称();
  13. 匿名对象就是只有右边的对象,没有左边的名字喝赋值运算符。
  14. new 类名称();
  15. */
  16. public class Demo01Anonymous {
  17. public static void main(String[] args) {
  18. //创建有名字的对象
  19. Person one = new Person();
  20. one.name="Jack";
  21. //匿名对象
  22. //匿名对象是否可以调用属性并赋值?有什么意义?
  23. /*
  24. 匿名对象可以调用属性,但是没有意义,因为调用后就变成垃圾
  25. 如果需要赋值还是用有名字对象
  26. */
  27. one.callname();
  28. new Person().name="Lily";
  29. new Person().callname();
  30. }
  31. }

image.png

内存分析

  1. new Car().num =5;
  2. new Car().color = "green"
  3. new Car().run();

匿名对象 - 图2

匿名对象执行完毕后,由于再无引用引用之,Java的自动回收机制会视作垃圾处理

匿名对象作为方法的参数

  1. package com.demo02;
  2. import java.util.Scanner;
  3. public class Demo02Anonymous {
  4. public static void main(String[] args) {
  5. methodParams(new Scanner(System.in));
  6. }
  7. public static void methodParams(Scanner sc){
  8. System.out.println("输入一个数字");
  9. int num = sc.nextInt();
  10. System.out.println("输入的是:"+num);
  11. }
  12. }

匿名对象作为方法的返回值

  1. package com.demo02;
  2. import java.util.Scanner;
  3. public class Demo02Anonymous {
  4. public static void main(String[] args) {
  5. System.out.println("请输入一个数字");
  6. int num=methodParams().nextInt();
  7. System.out.println("输入的数字:"+num);
  8. }
  9. public static Scanner methodParams(){
  10. return new Scanner(System.in);
  11. }
  12. }