Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TACApplicationOptions对象找不到方法导致项目崩溃?

TACApplicationOptions对象找不到方法导致项目崩溃?

提问于 2018-09-27 03:36:27
回答 1关注 0查看 278

回答 2

不知雨

发布于 2017-12-25 09:42:32

将对象引用与字符串进行比较时(即使对象引用是指字符串),==特定于字符串类的运算符的特殊行为也会被忽略。

通常(不处理字符串时),Equals比较值,同时==比较对象引用。如果你正在比较的两个对象是指同一个对象的确切实例,那么两者都将返回true,但是如果一个具有相同的内容并且来自不同的源(是具有相同数据的单独实例),则只有Equals会返回true。但是,正如注释中所指出的那样,字符串是一种特殊情况,因为它覆盖了==操作符,所以当纯粹处理字符串引用(而不是对象引用)时,即使它们是单独的实例,也只会比较这些值。以下代码说明了行为中的细微差别:

代码语言:txt
AI代码解释
复制
string s1 = "test";
代码语言:txt
AI代码解释
复制
string s2 = "test";
代码语言:txt
AI代码解释
复制
string s3 = "test1".Substring(0, 4);
代码语言:txt
AI代码解释
复制
object s4 = s3;
代码语言:txt
AI代码解释
复制
Console.WriteLine("{0} {1} {2}", object.ReferenceEquals(s1, s2), s1 == s2, s1.Equals(s2));
代码语言:txt
AI代码解释
复制
Console.WriteLine("{0} {1} {2}", object.ReferenceEquals(s1, s3), s1 == s3, s1.Equals(s3));
代码语言:txt
AI代码解释
复制
Console.WriteLine("{0} {1} {2}", object.ReferenceEquals(s1, s4), s1 == s4, s1.Equals(s4));

输出是:

代码语言:txt
AI代码解释
复制
True True True
代码语言:txt
AI代码解释
复制
False True True
代码语言:txt
AI代码解释
复制
False False True

心愿

发布于 2017-12-25 09:42:12

当==用于表达式类型时object,它将解析为System.Object.ReferenceEquals。

Equals只是一种virtual方法,并表现如此,所以被覆盖的版本将被使用(其中,string类型比较的内容)。

和开发者交流更多问题细节吧,去 写回答
相关文章
equals()与==的区别?
== : 它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)。
黑洞代码
2021/01/14
1.7K0
equals和==的区别
equals的作用: 用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型 String类型比较不同对象内容是否相同,应该用equals "=="操作符的作用 1、用于基本数据类型的比较 2、判断引用是否指向堆内存的同一块地址。 把String当作基本类型来使用时: 例:如果值不相同,对象就不相同,所以"==" 和equals结果一样 String s1 = "java"; String s2 = "java"; System.out.println(s1==s2);
gfu
2019/08/28
8570
==和equals的区别
==比较的是内存地址,equals方法在object里源代码也是用==来比较,比较的也是内存地址;
矿泉水
2018/05/11
1.1K4
==和equals的区别
==和equals的区别
==比较的是内存地址,equals方法在object里源代码也是用==来比较,比较的也是内存地址;
用户2141593
2019/02/20
4540
==和equals的区别
当执行String s1 = “chance”;这条语句时,会在堆中的字符常量池里找”chance”这个字符串,若没有找到,则将”chance”这个字符串放入字符串常量池中.而在栈中开辟一块名为s1的空间存放”chance”,这块空间的引用.
Java架构师历程
2018/09/26
1.6K0
==和equals的区别
hashCode与equals的区别
hashCode与equals HashSet和HashMap一直都是JDK中最常用的两个类,HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键。 那么Java运行时环境是如何判断HashSet 中相同对象、HashMap中相同键的呢?当存储了相同的东西之后Java运行时环境又将如何来维护呢? 在研究这个问题之前,首先说明一下JDK对equals(Object obj)和hashcode()这两个方法的定义和规范:在Java中任何一个对象都具备equals(Object obj) 和h
xiangzhihong
2018/01/26
9300
hashCode()与equals()的区别
面试官可能会问你:“你重写过hashcode()和equals()么,为什么重写equals ()时必须重写hashCode()方法?”
黑洞代码
2021/01/14
7440
hashCode与equals方法之间的关系
hashCode 顾名思义是一个“散列值码” 散列值,并不能表现其唯一性,但是有离散性,其意义在于类似于进行hashMap等操作时,加快对象比较的速度,进而加快对象搜索的速度。 hashCode 和 equals的关系。 两个对象 equals的时候,hashCode必须相等,但hashCode相等,对象不一定equals。 如果没有重写 hashcode方法,使用Object自带的hashCode,无法保证两个对象equals的时候 hashCode 必须相等的条件。 在Java中,重写equals()方法之后,是否需要重写hashCode()方法,那要看分情况来说明。有些情况下,是建议;有些情况下,是必须重写。 首先说建议的情况:    比如你的对象想放到Set集合或者是想作为Map的key时,那么你必须重写equals()方法,这样才能保证唯一性。当然,在这种情况下,你不想重写hashCode()方法,也没有错。但是,对于良好的编程风格而言,你应该在重写equals()方法的同时,也重写hashCode()方法。 必须重写hashCode()的情况:     如果你的对象想放进散列存储的集合中(比如:HashSet,LinkedHashSet)或者想作为散列Map(例如:HashMap,LinkedHashMap等等)的Key时,在重写equals()方法的同时,必须重写hashCode()方法。 最后明白两点就行了: 1.hashCode()方法存在的主要目的就是提高效率。 2.在集合中判断两个对象相等的条件,其实无论是往集合中存数据,还是从集合中取数据,包括如果控制唯一性等,都是用这个条件判断的,条件如下:     首先判断两个对象的hashCode是否相等,如果不相等,就认为这两个对象不相等,就完成了。如果相等,才会判断两个对象的equals()是否相等,如果不相等,就认为这两个对象不相等,如果相等,那就认为这两个对象相等。     上面的条件对于任何集合都是如此,只要理解上面的条件,你就明白了,为什么在有些情况下建议重写hashCode().有些情况下,是必须要重写的,只有一个目的,就是提高效率,你想想,如果你重写了hashCode(),只要不满足第一个条件,那就直接可以判断两个对象是不等的,也就不用花费时间再去比较equals了。 最后总结一句话就是,hashCode()方法存在的主要目的就是提高效率,但是如果你想把对象放到散列存储结构的集合中时,是必须要重写的。
yesr
2019/03/14
2.1K0
= =和equals的区别,break和continue的区别
= =和equals的区别: equals和==最大的区别是一个是方法一 个是运算符。 ==:如果比较的对象是基本数据类型,则此较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址值是否相等。 equals():用来比较方法两个对象的内容是否相等。 注意: equals 方法不能用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变 量所指向的对象的地址。
海拥
2021/08/23
2.2K0
c# == 和equals()的差异
2.==在比对引用类型时,如果二者引用的是同一个对象,则返回true,否则返回false。
vv彭
2020/10/27
1.1K0
c# == 和equals()的差异
== 与equals和hashCode与equals
== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)。
崔笑颜
2020/08/04
9090
==号和equals方法的区别
By CaesarChang 合作: root121toor@gmail.com
编程张无忌
2021/01/26
3940
深入解析==与equals()区别
相信大家一定在很多地方多看到过==与equals()的区别,也把区别讲的很详细,每次记住了,很快又会变得模糊不清。 这时就需要从原理深入剖析,一招制敌!
公众号 IT老哥
2020/09/16
3790
深入解析==与equals()区别
Java中==和equals的区别
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
JaneYork
2023/10/11
1650
Java中==和equals的区别
Java中equals与==区别
(1)基本数据类型比较值:只要两个变量的值相等,即为true 注意:当基本数据类型使用“==”进行比较时,符号两边的数据必须类型兼容(类型相同或可自动类型转换),否则编译出错;
程序员飞飞
2020/02/27
7430
Java中equals与==区别
Java中==和equals的区别
在Java中,equals是在object类中的方法,在object中equals是用来看看两个参数是否引用的是同一个对象,而 == 可用于判断两个对象的地址是否相等,那么equals和 == 有什么区别?
算法与编程之美
2023/08/22
1860
Java中==和equals的区别
java学习:字符串比较“==”与“equals”的差异及与c#的区别
.net中,其字符串特有的驻留机制,保证了在同一进程中,相同字符序列的字符串,只有一个实例,这样能避免相同内容的字符串重复实例化,以减少性能开销。 先来回顾一下c#中的代码: 1 public static void testString() 2 { 3 String s = "Abc"; 4 String s1 = "abc"; 5 String s2 = "abc"; 6 7 8
菩提树下的杨过
2018/01/23
1.1K0
C#中Equals和GetHashCode
我们需要达到的是忽略相同数据的对象,但是并没有达到我们如期的效果.因为是distinct默认比较的是对象的引用…所以这样达不到我们预期效果.那我们修改一下来实现我们预期效果.
HueiFeng
2020/02/24
6780
== 和 equals 的区别是什么?
2) 用户自定义类如果没有覆盖equals(),将调用父类的equals (比如是Object),而Object的equals的比较是地址(return (this == obj);)
用户5746037
2022/05/18
5640
.equals和name.equals有什么区别?
两个都是比较“”的地址和name的地址是否指向同一个地址,即判断name是否为“”, 建议用前者,因为name可能是null,此时name.equals("")就会报错,而前者则会避免这个问题避免了抛出空指针异常NullPointerException。
Twcat_tree
2022/11/30
3790

相似问题

==和equals区别?

1235

Java中的== 与equals()有什么区别?

2383

Java语言中equals和==的区别是什么?

0146

C#与Java Enum的区别

21.5K

\ n和\ r之间的区别?

2500
交个朋友
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
相关问答用户
新浪微博 | 高级总监擅长4个领域
到家集团 | 技术VP擅长5个领域
擅长5个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档