首页 > 编程语言 >【Android面试八股文】1. 说一说Java四大引用有哪些? 2. 软引用和弱引用的区别是什么?

【Android面试八股文】1. 说一说Java四大引用有哪些? 2. 软引用和弱引用的区别是什么?

时间:2024-07-15 23:30:02浏览次数:15  
标签:Java Reference Object 引用 obj Android Strong

一、Java四大引用有哪些?

在Java中,有四种不同类型的引用,它们在垃圾回收和对象生命周期管理方面有着不同的作用和行为。

这四种引用分别是:

  • 强引用(Strong Reference)
  • 软引用(Soft Reference)
  • 弱引用(Weak Reference)
  • 虚引用(Phantom Reference)

下面详细解释每种引用的特点和用途:
在这里插入图片描述
在这里插入图片描述

1. 强引用(Strong Reference)

  • 特点: 强引用是默认的引用类型,在代码中通常使用的引用方式。例如:Object obj = new Object(); 这种情况下,obj 就是一个强引用。

  • 行为: 强引用指向的对象只要存在,垃圾回收器就不会回收它。 即使内存空间不足

标签:Java,Reference,Object,引用,obj,Android,Strong
From: https://blog.csdn.net/qq446282412/article/details/140451516

相关文章

  • [Java基础]HashMap
    HashSet基于哈希表实现的无序集合,它使用哈希算法来存储和检索元素。下面是向HashSet中加入元素的过程:计算哈希码(HashCode):当你向HashSet中添加一个元素时,首先会调用该元素的hashCode()方法,得到元素的哈希码。如果元素为null,则它的哈希码为0。映射到桶位置(BucketP......
  • JavaScript全解析——本地存储✔(localStorage~sessionStorage~cookie)
    ●就是浏览器给我们提供的可以让我们在浏览器上保存一些数据●常用的本地存储(localStorage~sessionStorage~cookie)1-localStorage=>特点:->长期存储,除非手动删除否则会一直保存在浏览器中清除缓存或者卸载浏览器也就没有了->可以跨页面通讯,也就是说在一个页面写下......
  • Java 中有哪几种基本数据类型?请分别列出它们并简述每种数据类型的特点及其在内存中的
    在Java的世界里,数据是构建应用程序的基石。为了高效地处理这些数据,Java设计了一系列基础数据类型,它们直接映射到计算机硬件上,因此在性能和内存使用上更为高效。我们常说的Java八大基本数据类型,涵盖了整数、浮点数、字符和布尔值,下面我将一一介绍它们的特点以及在内存中的占用......
  • Java 中如何实现接口和抽象类,它们的主要区别是什么?
    在Java编程中,接口(Interface)和抽象类(AbstractClass)是实现抽象化的两种重要手段,它们帮助我们设计更灵活、可扩展的代码结构。下面,我将从定义、实现方式、主要区别以及应用场景等方面,用平实的语言和示例代码来阐述它们的使用。接口(Interface)定义:接口是一种完全抽象的类型,它只......
  • 什么是 Java 中的静态变量和静态方法?它们在类与对象间的关系是如何体现的?
    在Java编程的世界里,静态变量和静态方法是两个非常基础且重要的概念,它们让我们的代码更加灵活和高效。想象一下,你正在设计一个班级管理系统,每个学生都有姓名和学号,但班级的名称只有一个,对所有人共享。这里的班级名称就可以用静态变量来表示,因为它不属于任何一个特定的学生,而是......
  • 第一百六十四节 Java IO教程 - Java随机访问文件
    JavaIO教程-Java随机访问文件使用随机访问文件,我们可以从文件读取以及写入文件。使用文件输入和输出流的读取和写入是顺序过程。使用随机访问文件,我们可以在文件中的任何位置读取或写入。RandomAccessFile类的一个对象可以进行随机文件访问。我们可以读/写字节和所有原......
  • 第一百六十五节 Java IO教程 - Java标准输入/输出/错误流
    JavaIO教程-Java标准输入/输出/错误流我们可以使用System.out和System.err对象引用,只要我们可以使用OutputStream对象。我们可以使用System.in对象,只要我们可以使用InputStream对象。System类提供了三个静态设置器方法setOut(),setIn()和setErr(),以用您自己的设备替换这......
  • Javase-5.逻辑控制的习题
    1.根据年龄,来打印出当前年龄的人是少年(低于18),青年(19-28),中年(29-55),老年(56以上)Scannersc=newScanner(System.in);intage=sc.nextInt();if(age>0&&age<=18){System.out.println("是少年");}elseif(age>=19&&......
  • Java中的序列化与反序列化
    序列化与反序列化的定义序列化(Serialization)与反序列化(Deserialization)是编程中常见的两个概念,它们主要涉及到将数据结构或对象状态转换为可以存储或传输的格式,以及将存储或传输的格式转换回原始的数据结构或对象状态的过程。这两个过程在数据持久化、网络通信、对象深拷......
  • 链表引用——约瑟夫问题
    约瑟夫问题Josephu问题为:设编号为1,2,...n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理Josephu问题:先构成一个有......