==与equals比较

news2024/10/8 16:05:16

 在JVM中,内存分为堆内存跟栈内存。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用。还需注意的一点,基本数据类型是存储在栈内存中。

初步认识equals与==的区别:
  1.  ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同 
  2. ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较
  3. ==指引用是否相同, equals()指的是值是否相同

equals与==的区别详解:

        == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。

String s="abcd"是一种非常特殊的形式,和new 有本质的区别。它是java中唯一不需要new 就可以产生对象的途径。以String s="abcd";形式赋值在java中叫直接量,它是在常量池中而不是像new一样放在压缩堆中。 这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有没有一个值为"abcd"的对象,如果有,就会把它赋给当前引用.即原来那个引用和现在这个引用指点向了同一对象, 如果没有,则在常量池中新创建一个"abcd",下一次如果有String s1 = "abcd";又会将s1指向"abcd"这个对象,即以这种形式声明的字符串,只要值相等,任何多个引用都指向同一对象.
   而String s = new String("abcd");和其它任何对象一样.每调用一次就产生一个对象,只要它们调用。
也可以这么理解: String str = "hello"; 先在内存中找是不是有"hello"这个对象,如果有,就让str指向那个"hello".如果内存里没有"hello",就创建一个新的对象保存"hello". String str=new String ("hello") 就是不管内存里是不是已经有"hello"这个对象,都新建一个对象保存"hello"。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2196721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI绘画】如何选择AI绘画工具?Midjourney VS Stable Diffusion?

前言 文章目录 💯如何选择合适的AI绘画工具 个人需求选择比较工具特点社区和资源 💯 Midjourney VS Stable Diffusion:深度对比与剖析 使用费用对比使用便捷性与系统兼容性对比开源与闭源对比图片质量对比上手难易对比学习资源对比作品版权…

猎头是这样看简历的?

猎头在看简历时,会遵循一系列高效而系统的步骤,以确保筛选出最适合客户需求的候选人。以下是对猎头如何看简历的详细分析,内容虽无法精确控制在3000字以内,但将尽量精简并涵盖关键信息: 一、初步浏览与筛选 1.基本信…

FLIR AX8 download.php 任意文件读取复现

0x01 产品描述: FLIR-AX8是美国菲力尔公司(Teledyne FLIR)旗下的一款工业红外热像仪AX8,英文名为Teledyne FLIR AX8 thermal sensor cameras。菲力尔公司专注于设计、开发、生产、营销和推广用于增强态势感知力的专业技术&#xf…

栈与队列面试题(Java数据结构)

前言: 这里举两个典型的例子,实际上该类型的面试题是不确定的! 用栈实现队列: 232. 用栈实现队列 - 力扣(LeetCode) 方法一:双栈 思路 将一个栈当作输入栈,用于压入 push 传入的数…

传统少数民族物品检测系统源码分享

传统少数民族物品检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

【C语言】分支和循环(3)

😀个人主页: 起名字真南 😁个人专栏 目录 1 for 循环1.1 语法形式1.2 执行流程图1.3 for循环的实践 2 do-while循环2.1 语法形式2.2 执行流程图2.3 do-while循环的实践 3 break 和 continue 语句4 goto语句 1 for 循环 1.1 语法形式 for循环是三种循环…

【Centos】系统安装虚拟系统管理器创建虚拟机

在windows服务器里使用vmware等工具轻松建立虚拟服务器,可以安装各种操作系统。 在Centos系统中默认安装菜单的系统工具中没有找到这个管理器的启动菜单,默认没有安装。 想使用KVM虚拟系统创建虚拟机如何操作呢?最简单就是下面这些命令&…

ViT(Vision Transformer详解)

Transformer作为前沿的深度学习框架,带有多模态的特性,对于不同类型的输入数据,不管是文本还是图像均可进行处理,而ViT则是对于Transformer中的视觉方面(也就是输入数据为图像)的衍生物(因Trans…

从基础到精通:构建并微调大型语言模型以实现分类任务

本章内容 介绍不同的大型语言模型(LLM)微调方法准备用于文本分类的数据集修改预训练LLM以便进行微调微调LLM以识别垃圾信息评估微调后的LLM分类器的准确性使用微调后的LLM对新数据进行分类 到目前为止,我们已经编写了LLM的架构、对其进行了…

小程序和h5深度分析

你写过小程序/H5,那你知道他们的区别在哪里吗? 为什么说小程序的性能通常优于 H5? 小程序能访问到 DOM 对象吗? 小程序的原理是什么? 小程序和 H5 都是轻量级的、可直接在移动设备上运行的应用,但它们之间存在一些关…

C语言的类型提升机制

概念 在C语言中,整数类型按照其大小可以分为以下几类(从小到大): charshortintlonglong long 当在表达式中涉及这些类型的混合运算时,较小的类型会被提升为较大的类型。具体规则如下: ①char 和 short …

【NLP自然语言处理】02 - NLP简介/NLP发展历史/应用场景

1.什么是自然语言处理 (NLP) 自然语言处理(Natural Language Processing, NLP)是人工智能的一个重要分支,旨在通过计算机实现对人类自然语言的理解、生成和互动。其核心任务包括分析、生成和转换人类语言,涉及语法、语义、语音识…

Mapsui绘制WKT的示例

步骤 创建.NET Framework4.8的WPF应用在NuGet中安装Mapsui.Wpf 4.1.7添加命名空间和组件 <Window x:Class"TestMapsui.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winf…

基于单片机的烧水壶系统设计

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52RC单片机&#xff0c;采用四个按键&#xff0c;通过DS18B20检测温度&#xff0c;开机显示实时温度 第一个按键为切换功能按键&#xff0c;按下后&#xff0c;可以设置烧水温度的大小&…

codetop标签双指针题目大全解析(三),双指针刷穿地心!!!!!

复习比学习更重要&#xff0c;更需要投入时间&#xff0c;更需要花费精力 1.字符串的排列2.找出字符串中第一个匹配的下标3.最大连续1的个数II4.数组中的山脉5.移除元素6.两个数组的交集II7.有序数组的平方8.删除有序数组中的重复项II9.寻找重复数10.水果成篮 1.字符串的排列 …

HUAWEI_HCIA_实验指南_Lib1.4_配置通过Telnet登录系统

一、原理概述 Telnet(Telecommunication Network Protocol)起源于ARPANET,是最早的Internet应用之一。 Telnet 通常用在远程登录应用中&#xff0c;以便对本地或远端运行的网络设备进行配置、监控和维护。如网络中有多台设备需要配置和管理&#xff0c;用户无需为每一台设备…

C++ 算法学习——7.4.1 优化算法——双指针

双指针法&#xff08;Two Pointers&#xff09;是一种常用的算法技巧&#xff0c;通常用于解决数组或链表中的问题。这种技巧通过维护两个指针&#xff0c;通常分别指向数组或链表的不同位置&#xff0c;来协同解决问题。双指针法一般有两种类型&#xff1a;快慢指针和左右指针…

查询计算移出数据库用 Java 太慢咋办

很多现代应用会把数据计算和处理任务从数据库移出来采用 Java 实现&#xff0c;这样能获得架构上的好处&#xff0c;而且 Java 有完善过程处理能力&#xff0c;应对日益复杂的业务逻辑比 SQL 更得心应手&#xff08;虽然代码不短&#xff09;。不过&#xff0c;我们常常会发现&…

为什么没有能够处理 Python 字节码的 CPU?

问题 有没有能够处理Python字节码&#xff08;Python bytecode&#xff09;的CPU&#xff1f;众所周知&#xff0c;CPU靠执行字节码指令运作。那有没有能够处理Python字节码&#xff08;Python bytecode&#xff09;的CPU&#xff1f;如果没有&#xff0c;为什么&#xff1f;不…

OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【内存管理】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 内存管理模块管理系统的内存资源&#xff0c;它是操作系…