关于String类型中==和equals的区别。
"=="操作符的作用
1、用于基本数据类型的比较,比较的是值。
2、用于比较对象,判断对象的引用是否指向堆内存的同一块地址。
equals的作用
用于比较两个对象的内容是否相同
代码如下:
/*
* String de ==和equals
*/
@Test
public void aa5(){ String s1="abc";//创建一个对象“abc”
String s2="abc";//当String缓存池中存在这个指定的对象“abc”,将不会再创建新的String对象。反之,则创建新的对象
String s3=new String("abc");
String s4=new String("abc");
System.out.print("s1==s2:");
System.out.println(s1==s2);//返回true
System.out.print("s3==s4:");
System.out.println(s3==s4);//返回false,s3和s4是两个不同的对象
System.out.println(s1.equals(s2));//返回true
System.out.println(s3.equals(s4));//返回true
System.out.println(s1.equals(s4));//返回true
}
equals的底层原理说明
String.class下的equals方法
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;//(private final char value[];//这是String类中的value属性声明,是一个char类型的数组)
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = ;
while (n-- != ) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
Object.calss下的equals方法
public boolean equals(Object obj) {
return (this == obj);
}
public class equalsTest {
public static void main(String[] args) {
String a3=new String("");
A a1=new A();
A a2=new A();
System.out.println(a1.equals(a2));//true,使用的equals方法是重写之后的equals方法
B b1=new B();
B b2=new B();
System.out.println(b1.equals(b2));//false,使用的equals是原来的
}
}
class A{
private int age;
public A(){};
public A(int age){
this.age=age;
}
//重写equals方法
public boolean equals(Object obj){
A other=(A)obj;
return this.age==other.age;
}
}
class B{
private int age;
public B(){};
public B(int age){
this.age=age;
}
}
关于String类型中==和equals的区别。的更多相关文章
- String类型中"=="和"equals"的区别
"=="比较的是两个字符串的内存地址. "equals"比较的是两个字符串的实际值. 例子1. String s1="abc"; Stri ...
- String类型中 "=="和"equals"比较的差别
String类型中 "=="和"equals"比较的差别 先说明一下String类型的变量的创建方式 在创建新的String类型的变量时,首先会在缓冲区查找是否 ...
- 【原创】Java和C#下String类型中的==和equals的原理与区别
一.Java下 1.几个例子 public static void main(String[] arge) { String str1 = new String("1234"); ...
- [No0000B6]C#中 ==与equals的区别
using System; internal class Person { public Person(string name) { Name = name; } public string Name ...
- Java中“==”和 equals的区别
“==”的作用: 判断两个变量栈内存中存储的值是否相等,如果相等返回true,如果不相等返回false. 有两种形式的比较需要用到比较运算符“==”,一是两个基本数据类型之间的比较,二是两个引用数据类 ...
- 码农带你区分String类型的"=="和equals()
大家玩csdn也可以关注我的博客额http://blog.csdn.net/wujiandong25253344 情形一: String s1= new String("hello" ...
- String类中"=="、equals和普通类中"=="、equals的比较
package cn.method.demo; public class StringDemo2 { public static void main(String[] args) { String s ...
- String类中的equals()方法:
String类中的equals()方法: public boolean equals(Object anObject) { //如果是同一个对象 if (this == anObject) { ret ...
- JAVA中==与equals的区别
equals如果没有被重写的话,和==的作用是一样的,都是判断两个对象引用是否指向同一个地址.一般重写了equals()方法就表示比较它们“实际意义上相等”,比较的是内容,而不是引用地址.Java中S ...
随机推荐
- C语言关键字register、extern、static、一些总结,及项目中使用的心得
首先介绍两个概念: 一.变量的生存周期: 变量从建立到撤销的时间段成变量的生存周期.静态变量,从变量产生到整个程序执行结束.当函数使用变量结束后,变量的存储空间依然存在,变量的值也会随着函数的对其的使 ...
- SignUtil
最近接的新项目 加密比较多 我就记录下. SignUtil是jnewsdk-mer-1.0.0.jar com.jnewsdk.util中的一个工具类.由于我没有百度到对应的信息.所以我只能看源码 ...
- Django的时区问题
在Django项目中,最好全部日期值都做成配时区信息的,但是由于遗留项目或者跨语言项目,其他语言的开发人员觉得时区信息处理太麻烦.如何在一个项目中同时适配带时区和不带时区的两种字段. 1.输出:不带时 ...
- Java Code Style
近期困惑于团队成员代码风格迥异,代码质量不可控,作为一名老司机,忧患于后期服务的可维护性,多次一对一的代码Review,耗时耗力不说,效果也不明显.痛定思痛,多次反思之后得出结论:无规矩不成方圆,可靠 ...
- Python的编码风格
1.采用四个空格作为缩进 2.一行代码不要超多79个字符 3.使用空行分割类,函数,以及大块代码 4.注释独占一行 5.使用文档字符串 6.操作符的两侧,逗号后面都要加空格(但是括号的里侧是不加的) ...
- Flask入门之自定义过滤器(匹配器)
1. 动态路由的匹配器? 不知道这种叫啥名,啥用法,暂且叫做匹配器吧. Flask自带的匹配器可以说有四种吧(保守数字,就我学到的) 动态路由本身,可以传任何参数字符串或者数字,如:<user ...
- 【踩坑】iconfont使用异常bug
你见过html页面上'x'字符变成打印机图标么?一般人应该没有. -----------------------诡异bug----------------------- 今天测试报了一个bug,说页面 ...
- 杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例
案例设计背景介绍: 编写一个新浪微博用户注册的程序,要求使用HashSet集合实现. 假设当用户输入用户名.密码.确认密码.生日(输入格式yyyy-mm-dd为正确).手机号码(手机长度为11位,并 ...
- 字典的.get方法
字典的.get方法表示是dict.get(key,default)用于判断建是否存在,存在返回键对应的值,不存在返回指定的default值 dict = {'a':1,'b':2} dict.get( ...
- linux基础命令用法
目录管理 ls.cd.pwd.mkdir.rmdir.tree ls(list) 列出,列表 用法: ls -l:长格式 文件类型: -:普通文件 (f) d: 目录文件 b: 块设备文件 (bloc ...