请教Java中的compareTo与==之间的区别

sonic_andy 2005-09-22 07:07:29
import java.io.*;

class Test
{
public static void main(String[] args)
{
int i = 4;
int j = 4;
System.out.println(i == j);
// System.out.println(i.compareTo(j));

Integer a = new Integer(5);
Integer b = new Integer(5);
System.out.println(a == b);
// System.out.println(a.compareTo(b));

String x = "6";
String y = "6";
System.out.println(x == y);
// System.out.println(x.compareTo(y));
}
}
程序的结果是
true
false
true
...全文
2491 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
toto2004 2005-11-11
  • 打赏
  • 举报
回复
up
yunjixiaoxiang 2005-09-23
  • 打赏
  • 举报
回复
==是用来比较基本数据类型的值是否相等,比如int型 float型 double型
compare To比较的是比较引用的对象是否相同
KOfeng 2005-09-23
  • 打赏
  • 举报
回复
大多数情况下用
== 来比较 int, float, double基本数据类型

比较对象时则用compareTo


另外java不能重载运算符

有一个例外就是=

believefym 2005-09-22
  • 打赏
  • 举报
回复
compareTo可以自己定义
tlowl 2005-09-22
  • 打赏
  • 举报
回复
JAVA中的数据类型分为基本类型(简单类型)和复合类型(引用类型),基本型别有8个,byte、short、char、int、long、double、float、boolean,复合类型指得就是对象,包括String。

==属于运算符,是不能被重载的,如果用来比较基本类型那么比较的就是基本类型的值;用来比较复合类型的话比较的其实就是引用对象的地址,如果你明白对象在内存中是如何创建和引用对象是如何指向对象内存地址的话这些是很好理解的

JAVA中创建对象的关键字是new,也就是说遇到new就创建了一个新的对象,Integer a = new Integer(5);和Integer b = new Integer(5);创建了两个不同的对象,虽然对象中存储的值是一样的,而a和b就是分别指向这两个对象的引用(也叫句柄),两个对象地址不同,当然==比较后的返回的就是false

String x = "6";String y = "6";并没有用new创建新的对象,所以它们指向的对象是同一个,返回true

关于compareTo,没有找到有比较基本类型的,但是看文档我没有看懂,直接找得源代码
public int compareTo(Integer anotherInteger) {
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}
这个是java.lang.Integer中的

public int compareTo(String anotherString) {
int len1 = count;
int len2 = anotherString.count;
int n = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;

if (i == j) {
int k = i;
int lim = n + i;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
} else {
while (n-- != 0) {
char c1 = v1[i++];
char c2 = v2[j++];
if (c1 != c2) {
return c1 - c2;
}
}
}
return len1 - len2;
}
这个是java.lang.String中的,看了源代码后楼主应该明白输出结果为什么都是0了
jk88811 2005-09-22
  • 打赏
  • 举报
回复
一般只用 == 来比较 int, float, double等基本类型的数据

比较对象时用compareTo
smlovetp 2005-09-22
  • 打赏
  • 举报
回复
java不能重载运算符

==直接比较的是变量的值

compareTo比较的是引用的对象的值
sonic_andy 2005-09-22
  • 打赏
  • 举报
回复
还有如何重载==呢?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧