Java字符串比较


对Java字符串的比较有3种方法,接下来分别介绍对应方法内容。

1、使用"=="比较两个字符串是否为同一个对象

对于使用“==”进行比较,不仅需要两个字符串的值本身是相同的,同时要求两个字符串是同一个对象。下面我们从Java中来仔细看。

public static void main(String[] args) {
        String a = "hello world";
        String b = "hello world";
        String c = "hello " + "world";
        
        String d = "hello ";
        String e = "world";
        String f = d + e;


        if (a == b) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }

        if (a == c) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }

        if (a == f) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
true
true
false

上面代码的运行结果如上所示。

注意到上面的字符串a 字符串b 字符串c都是相同的一个对象,对于Java而言,只是将不同的引用指向相同的静态字符串,即都是同一个对象,所以使用"=="判断结果为true。

对于f而言,虽然字符串的值与字符串a 字符串b 字符串c的值相等,但是是通过新建的其他对象生成的,因此使用 "= ="结果为false。这里需要注意一下。

可能大家对于字符串a 字符串b 字符串c 与字符串f的区别还是比较明显的,因为f是新建的另一个对象;但是对于字符串a 字符串b 与 字符串c可能就存在一点问题,因为字符c是通过字符串相加获得的,这里需要主要,即使字符串相加也是静态变量,因此字符串a 字符串b 字符串c指向的是同一个对象。

2、使用String.equals()比较两个字符串的值是否相等

只关注两个字符串的值是否相等,不关注是不是同一个对象

public static void main(String[] args) {
        String a = "hello world";
        String b = "hello world";

        String c = "hello " + "world";

        String d = "hello ";
        String e = "world";
        String f = d + e;


        if (a.equals(b)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }

        if (a.equals(c)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }

        if (a.equals(f)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
		String i = new String("你好");
        String j = new String("你好");
        // i和j是两个不同的对象
        if (i.equals(j)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
true
true
true
true

理解上面说的使用"=="判断,这里就很清楚了吧。String.equals()只比较两个对象的值是否相等。

3、使用String.compareTo()比较两个字符串的大小

用于 字符串与对象进行比较 或者 按字典顺序比较两个字符串
这里我们看一个按字典顺序比较两个字符串:

public static void main(String[] args) {
        String a = "hello world";
        String b = "hello f world";
        System.out.println(a.compareTo(b));
    }
17

输出结果17

返回值是整型,它是比较对应字符的大小(ASCLL码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的长度差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。
如果参数字符串等于此字符串,则返回值0;
如果此字符串小于字符串参数,则返回一个小于0的值;
如果此字符串大于字符串参数,则返回一个大于0的值。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值