问题2 String类equals 和 “==” 比较

"==" 比较是否为同一对象,即涉及到内存地址是否相同

“String 中equals” 比较对象中的内容

“Object 中equals” 如果没有重写equals方法,相当于 “=";若要是进行对象内容比较,则必须重写equals方法,因为在现实应用中大都是对对象内容的比较。(可参见问题1)

 1         String s1 = "String";
 2         String s2 = "String";
 3         String s3 = new String("String");
 4         String s4 = new String("String");
 5         System.out.println(s1 == s2 ); //结果为true
 6         System.out.println(s1 == s3 ); //结果为false
 7         System.out.println(s1.equals(s2));//结果为true
 8         System.out.println(s1.equals(s3));//结果为true
 9         System.out.println(s3 == s4);//结果为false
10         System.out.println(s3.equals(s4));//结果为true  

关于String类,先说说串池,字符串是程序中使用率非常高的类,为了提高效率,串是用“池”来管理的。

String s1="String";这个对象不是在堆中,而是在串池中,当再创建一个变量Sting s2="String";时,会先去池中找,如果有这个字符串存在,就不再新建,而是把s2也指向那个字符串,这样s1和s2就是指向同一个对象了,所以s1==s2是true;

当String s3=new String("String");就不一样了,这是强制在堆空间创建一个对象,这时不指向串池,所以s1==s3是false;但s1.equals(s3);是true;String s4=new String("String");是又创建一个对象在堆空间,s3==s4也是false;但s3.equals(s4);是true。

时间: 2024-10-05 19:18:19

问题2 String类equals 和 “==” 比较的相关文章

Object类和String类equals方法有什么区别?

相信很多学习过Java的同学都知道,在比较两个String对象的内容是否相同时是使用equals方法的 如:String str1=new String("A"); String str2=new String("B"); String str3=new String("B"); boolean result1= str1.equals(str2); boolean result2= str2.equals(str3); System.out.p

【Java】整理关于java的String类,equals函数和比较操作符的区别

初学 Java 有段时间了,感觉似乎开始入了门,有了点儿感觉但是发现很多困惑和疑问而且均来自于最基础的知识折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟大家先来看看一段奇怪的程序: public class TestString {       public static void main(String[] args) {           String s1 = "Monday";           String s2 = "Monday&qu

String类equals()方法详解

下面我们先看一段代码: 这段代码输出的结果为: ture true -------------- false 咋看之下貌似Object类比较特别,那么我们看一下Object下的equals()方法的源代码 Object下的queals()方法十分简单,就是单纯的判断这两个引用是不是指向同一个对象,是的话返回true,不是的话返回false. 可是把这个方法应用在上面代码的String对象身上明显不对,那么String类里面必定重写了equals()方法,来看一下它的源代码: 重这个方法的源代码可

关于String类的一些知识点

//原链接:https://blog.csdn.net/songylwq/article/details/7297004 String str=new String(“abc”); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个.接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识. 我们可以把上面这行代码分成String str.=.“abc”和new String()四部分来

String类中的equals()方法

在Java中,每一个对象都有一个地址空间,在这空间保存着这个对象的值. equals 比较的是值,==比较的地址以及值. 01: public class StringExample02: {03: public static void main (String args[])04:   {05: String s0 = "Programming";06: String s1 = new String ("Programming");07: String s2 =

string类的equals和==

==在八种原始数据类型中,判断的是两边的值是否相等.对于对象类型来说,判断的是内存地址,所以为true所满足的条件就是两边的引用指向同一个对象. 比如String s1 = "abcde"; String s2 = "abcde";这个时候如果判断两者是否==,值为true:这是因为两者指向同一个对象. 然而如果String s1 = "abcde"; String s2 =new String("abcde");则为fals

问题1、java.lang中String类和Object类中的equals方法比较

String类中的equals方法重写了Object类中的equals方法,下面通过代码来比较二者的不同之处: 一.String类 1. String s1 = "String"; String s2 = "String"; System.out.println(s1 == s2 ); System.out.println(s1.equals(s2));

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中

String类

一.概述 Sting s1 = "abc";    //s1是一个类类型变量,"abc"是一个对象. String s2 = new String("abc"); //s1 . s2 的区别: 前者在内存中有一个对象,后者在内存中有两个对象. s1.equals(s2) 为true  因为 String复写了equals方法 二.常见的功能-获取和判断 获取: 1.int length(); 获取长度 2.char chatAt(int inde