当前位置: 首页 > news >正文

java的引用理解

1.引用含义

存储对象的内存地址

2.java中new 出来的对象都是强引用

原因:强引用提供了最可靠、最可预测的对象生命周期控制

Object obj = new Object(); // 创建对象
obj = null; // 需要手动明确释放对象

3.实例对象的理解

Person p1 = new Person("张三"); // p1实例存储对象地址
Person p2 = p1;                // p2实例复制了p1的引用,但是都是指向同一个对象!!!
// 比较实例对象
System.out.println("实例比较: " + (p1 == p2 ));  // true
// 创建两个实例
Book book1 = new Book();
Book book2 = new Book();

// 比较实例对象
System.out.println("实例比较: " + (book1 == book2));  // false

4.反射创建对象和new创建的实例对象是一个意思,但是class就只有一个内存地址,所有创建的实例对象的class对象都是一个内存地址,但是每个实例对象对象地址不一样

//实例对象比较
Dog dog = (Dog.class).newInstance();    //java8之前
Dog dog2 = new Dog();
System.out.println("实例比较: " + (dog == dog2 ));  // false

//class对象比较
Book book1 = new Book();
Book book2 = new Book();
Class<?> c1 = book1.getClass();
Class<?> c2 = book2.getClass();
Class<?> c3 = Book.class;
System.out.println("Class比较1: " + (c1 == c2));  // true
System.out.println("Class比较2: " + (c1 == c3));  // true

相关文章:

  • 【行测】判断推理:逻辑判断
  • 4.1-python操作wrod/pdf 文件
  • Pytorch实现之基于GAN+序列后向选择的情绪识别增强方法
  • PyInstaller打包实战:如何智能切换本地调试与EXE模式,资源打包全攻略
  • MySQL数据库学习笔记1.SQL(1)
  • aarch64-none-elf-gcc与aarch64-linux-gnu-gcc
  • 源码分析之Leaflet中control模块Zoom类实现原理
  • 第二十二章:Python-NLTK库:自然语言处理
  • Vue3.5 企业级管理系统实战(十二):组件尺寸及多语言实现
  • k8s运维面试总结(持续更新)
  • 【Harmonyos】项目开发总结--摇杆拖动侧重实现(适用游戏摇杆)
  • 数据库表的三种关系,通俗易懂的讲解
  • 【RAG 系统实战课】01 用RAG改造传统MIS系统
  • MySQL 中常用的日期和时间类型
  • Nuxt2中全局路由守卫的写法(含Nuxt3写法和变化)
  • 01背包问题二维数组和一维数组间的区别
  • RAG优化:python从零实现Proposition Chunking[命题分块]让 RAG不再“断章取义”,从此“言之有物”!
  • 基于mediapipe深度学习和限定半径最近邻分类树算法的人体摔倒检测系统python源码
  • 步进电机驱动电压对定位精度的深层影响分析
  • 机器学习的定义及分类
  • 总奖金池百万!澎湃与七猫非虚构写作与现实题材征文大赛征稿启动
  • 大陆非遗项目打铁花、英歌舞将在台演出
  • 标普500指数连涨四日,大型科技股多数下跌
  • 阿里上季度营收增7%:淘天营收创新高,AI产品营收连续七个季度三位数增长
  • “大型翻车现场”科技满满,黄骅打造现代化港口和沿海新城典范
  • 泽连斯基抵达安卡拉,称乌将派出最高级别代表团参与谈判