java中为什么,int类型的成员变量不能调用equals方法以及hashCode方法,而String类型的成员变量可以?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中为什么,int类型的成员变量不能调用equals方法以及hashCode方法,而String类型的成员变量可以?相关的知识,希望对你有一定的参考价值。
比如:int year;
year.equals........... 会报错
String year;
year.equals............ 是对的
public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
equals 方法在非空对象引用上实现相等关系:
自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。 望采纳 参考技术A 想跟你说的是这是JAVA语言的一种规则,数值型等要用“==”,系统会直接拿这两个数在内存内进行大小比较处理,而字符串的等要用equals方法去处理,它的处理办法是,按字符串从左到右的顺序,比较每个字符的asc码值,一旦遇到不想等那就会返回false。
这样说不知道你明白没有。 参考技术B 楼上说的很明确了,我想补充的是,int是基本数据类型,-没有引用指向的,
补:像String是类类型,有引用指向,所以地址不同(这就需要equals()方法判断内容一样“则相同”) 参考技术C int是整型就是数值要比较要用==,而equals是给字符类型相比较用的。。。。
int year中的year是要等于一个数值的,而string year中的year是字符串,所以呢,后者可以用equals... 参考技术D int是基本类型,equals是Object类型的方法 ,基本类型都没有equals方法。无法进行调用
类作为成员变量
声明定义一个类的时候,成员变量的类型经常有int,String等,其实看源码知道String也是一个类:
说明是可以用类作为成员变量的;
其中,构造方法用于创建对象时候调用,new的时候jvm默认调用,可以直接new无参的(人),也可以直接new有参赋值的(小明——身高体重等);
类作为成员变量时候,在成员方法中必须要用这个类变量点它的属性来用,不能直接用,直接用是在栈内存中的一个地址值;
set/get方法用于调用赋值或者获取值;
以上是关于java中为什么,int类型的成员变量不能调用equals方法以及hashCode方法,而String类型的成员变量可以?的主要内容,如果未能解决你的问题,请参考以下文章
java中,在实例化一个类时,这个类中没有初始值的int类型成员变量i,i的值是否0?