String s1 = new String(hello); String s2 = hello;的区别
String s1 = new String("hello");
String s2 = "hello";
System.out.println(s1 == s2);//false
System.out.pringln(s1.equals(s2));//true
对于String s1 = new String("hello"),
- 首先在堆内存中申请内存存储String类型的对象,地址值赋给引用 s1;
- 在方法区的常量池中找,有无hello:
- 没有,就在常量池中开辟空间存储hello,并将该空间的地址值赋给堆中存储对象的空间
- 有,就直接将hello所在空间的地址值给堆中存储对象的空间
对于String s2 = "hello",
- 由于上述过程,常量池中已经存储了一个hello,此时只需要将hello所在空间的地址值赋给引用 s2;
综上,s1存储的是堆内存中的地址值,s2存储的是常量池中的地址值,所以s1 == s2为false;又由于String类的equals方法重写了toString,比较的是两个字符串的内容,故结果为true。
回顾:
==,比较运算符,可以比较基本类型,也可以比较引用类型。
- 比较基本类型时,比较的是值是否相同
- 比较引用类型时,比较的是地址值是否相同
equals方法,是Object类中的方法,只能比较引用类型
- 没有重写时,比较的是地址值
- 重写后,一般比较的是引用所指的对象的内容
String s1 = new String(hello); String s2 = hello;的区别相关推荐
- java中string类相等_Java中String类的常见面试题
第一题:==与equals()的区别 1.判断定义为String类型的s1和s2是否相等 String s1 = "abc"; String s2 = "abc" ...
- python string转date类型_java string类型怎么转化成date类型
/** * 根据一段日期时间字符串,转换得到日期时间对象.日期时间字符串可以是以下格式: * 1. yyyy-MM * 2. yyyy-MM-dd * 3. HH:mm * 4. HH:mm:ss * ...
- string教程c语言,C++ string类详解
C++ 大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类.string 类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针. string ...
- java s1=abc s2=abc s1==s2_经典问题:String s1 = abc 与 String s2 = new String(abc)的区别...
这是以前刚学Java那会经常被问到的问题,并且也会经常出现在面试中.这个问题不仅仅只局限于Java,可以适用于其他大部分语言,正好最近有个小朋友在学编程,特此整理一下. String s1 = &qu ...
- String s1==s2面试题
这个程序运行的结果是什么? class StringTest1{public static void main(String[] args) {String s1="equal"; ...
- 判断字符串s1中是否包含s2字符串c语言,C语言:找出s1中是否存在字符串s2(C language: find out if string s2 exists in s1)...
C语言:找出s1中是否存在字符串s2(C language: find out if string s2 exists in s1) 是否有任何C函数来检查s1中是否存在字符串s2? s1: &quo ...
- String s=“abc“ 和 String s1=new String(“abc“)和String s2=new String(“abc“)之间的关系
这篇文章针对困扰新手初学java基础时常遇到的难以理解的一个问题!!! ==∶它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象(基本数据类型==比较的是值,引用数据类型==比较 ...
- String s1=new String(“abc“); 和String s1=“abc“区别
在讨论他们的区别时,我们要知道java中的内存,主要分为堆和栈.栈中一般存放的是java中的基本数据变量 比如 int,double,float 还存放了对象的引用变量 如 Person person ...
- java string类方法_Java基础学习——String类及其方法
String类概述 该类被final修饰,无子类,不可被复写.创建的对象一旦初始化,其内容不可被改变. String类复写了Object类中的equals()定义了自己的独特内容,该方法用于判断字符串 ...
最新文章
- 关于CSS 3 及浏览器兼容性问题
- linux ip add address,linux – ip地址范围参数
- n1进入recovery模式_启动自动变砖模式?三星Galaxy“智能”手机
- IPK僵尸网络 看看其传播手法
- 【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )
- jQuery笔记总结篇
- 弱电工程室内外光纤敷设有哪些技术要求
- MAC 压测工具Webbench
- python3.6是用来干嘛的_学 Python 都用来干嘛的?
- vi定位到第一行,最后一行和任意行
- matlab可视化大学物理学_传输矩阵法在大学物理波动光学教学中的应用
- [oc学习日记]代理模式
- 2016年大数据Spark“蘑菇云”行动之spark streaming消费flume采集的kafka数据Directf方式...
- 全网首发:JDK绘制文字:八、绘制函数简要分析
- 恒温箱温度计算机控制系统仿真,实验用恒温箱控制系统设计及其模型建立
- 金蝶KIS应用虚拟化集成解决方案
- comsol移动网格_COMSOL动网格调试
- FME模板兴趣班第二期任务小结
- Mac电脑下载软件的几个网站
- 5种录制Windows 10 音频的方法
热门文章
- 位、比特、字节和字之间的关系
- windows+vscode搭建远程linux开发环境
- MySQL中表视图使用操作详解
- Oracle数据库如何创建视图【示例演示】
- Python如何读取Excel表内容
- 训练神经网络用什么显卡,cpu可以训练神经网络吗
- UVM_MAX_QUIT_COUNT
- 什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围
- matlab deconv出现无穷大,【 MATLAB 】deconv 函数介绍
- 精简Windows Defender,关闭superfetch