❶ JAVA 整形变量之间的比较问题
你对==的理解有错误,如果是引用变量,当然比较的是引用变量的值,而引用变量的值就是对象的地址,所以当2个引用变量指向同一个对象时,返回true;而如果是数值型,同样,只要他们的值相等就返回true。所以不用改
❷ java泛型方法的equals是如何比较的
java里面的泛型是假的没错,泛型的出现更大的作用是为了编写检查。
java有多态的特性!调用对象的方法时候,取决于这个方法的实际实现。就假如说,你写了Object s1 = "abc";Object s2 = "abc";然后调用二者的equals方法时,s1,s2虽然声明为Object,但其实际的类型为字符串(String),并且字符串重写了equals方法,所以s1.equals(s2)实际调用的是由String.class 内提供的方法。
调用哪一个方法取决于调用的时候实际对象究竟是谁,并且还要注意他有没有重写父类的方法。
❸ equals 的用法
equals 方法是 java.lang.Object 类的方法。
有两种用法说明:
(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
比如:
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
那么:s1==s2 是 false //两个变量的内存地址不一样,说明指向的对象不 一样,故不相等。
s1.equals(s2) 是 true //两个变量的所包含的内容是abc,故相等。
注意(1):
如果: StringBuffer s1 = new StringBuffer("a");
StringBuffer s2 = new StringBuffer("a");
结果: s1.equals(s2) //是false
解释:StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,
而Object类中的equals方法是用来比较“地址”的,所以等于false.
注意(2):
对于s3和s4来说,由于s3和s4是两个字符串常量所生成的变量,其中所存放的内存地址是相等的,所以s3==s4是true(即使没有s3=s4这样一个赋值语句)。
❹ java怎么用equals方法比较引用整型的对象
在class Value这么写:
classValue{
intj;
publicbooleanequals(ValueanotherValue){
returnthis.j==anotherValue.j;
}
}
❺ equals可以对比integer吗为什么
Integer类型的要转换为int去判断,就好用了。
Integer a=new Integer(3);
Integer b=new Integer(3);
int a1=a.intValue();
int b1=b.intValue();
blean bb=a1==b1;//这里就输出true了。
因为Integer是对象类型,你用equals比较是两个引用是否指向同一个对象,很多时候不是指向同一个对象,所以,你用equals得出的结果就是false,比如上面的a和b用a.equals(b),结果是false,当然对于Integer类型还有其它特殊规定,但是明白到这里就足够用了。
❻ equals可以比较integer类型吗
应该都是输出 != 因为你这里使用的是 Integer class,不是使用的基础类型int, 类的比较是使用 equals 如果改成以下语句结果就会不同了。 if(i1.equals(i2)){ System.out.println("=="); }else{ System.out.println("!="); }
❼ java整形可以用equals表达式的比较吗
不能,因为equals是object的方法,整形int没有继承Object
❽ java中equals()方法是怎么进行比较的
因为你自己定义的Value类调用的equals是Object类的,此时的equals就相当于“==”;
而Integer的equals是重写了Object的equals,此时比较的是2个Integer对象的值。。。
如果你不重写equals,它比较的就是内存中的地址,也就是引用是否指向的是同一个对象。。。
如果有问题,请追问。。
希望可以帮助你,谢谢采纳。。。
❾ java里整型,浮点型,字符串,比较时什么时候用.equals() 什么时候用 compareTo() 什么时候用==
1. == 基本数据类型都用这个比较, 基本数据类型你知道吧~
Java里面包含8个基本数据类型,分别是:
boolean、byte、char、short、int、float、double、long
注意String 可不属于基本数据类型,它是个类...
2..equals() 用于引用数据类型(除了上面的8个,都是引用数据类型,包括封装类,Object子类等), 比较是否指向相同的对象,
例如 String str = "abc";
等效于: char data[] = {'a', 'b', 'c'}; String str = new String(data);
就是str 指向了 new String(data) 这个对象. 如果再有其他变量也指向这个对象,他们比较的结果就返回true;
由于此方法在Object里, 所以它有很多重写, 具体要看说明;
另外``` equalsIgnoreCase()可以忽略大小写;
3. compareTO可以比较两个字符串并且得到顺序.
按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象在参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只有在方法 equals(Object) 返回 true 时才返回 0, 所以,一定程度上, 个人认为它能取代. equals(), 可能是因为计算比较复杂, 占用资源吧.
~写的有点乱``应该能懂~