String、char值相等比较

       有时在写代码时会不小心在比较String与String值相等,char与char值相等时会没弄清楚”==”与equals()两种比较方法的区别就直接选一个用上了,最后在Debug时才发现以为是true的地方却是false,以为是false的地方却是true。写这篇文章只是为了记录平时写代码时可能会犯的一些小错误,如下先预先说明:

       String与String值相等比较用equals()方法,char与char值相等比较用”==”进行比较。

       先说一下String与char的区别:
- java中的八大基本类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(boolean)
- 在java里面除去基本数据类型的其它类型都是引用数据类型,所以String不是基本类型而是引用类型。
- 也就是说,String是一个类,可以在IDE中查看到String的源码,String有很多API。而char只是一个基本数据类型,不是一个类。

       String是引用类型,用”==”进行比较是比较两个字符串是否引用同一地址,如果只是比较内容是否一致,是不是同一个对象(即是不是同一地址)不去比较,则只能用equals()方法进行比较。代码如下:

public class StringEqualsTest {
    public static void main(String[] args) {
        String s1 = "abcdef";
        String s2 = "abcdef";
        System.out.println(s1 == s2); // true,因为s1和s2是同一个字符串常量abcdef的引用,是同一个对象地址,所以相等。
        System.out.println(s1.equals(s2)); //true,equals()方法只是比较两个字符串的值是否相等,地址不会进行比较,两个字符串的值都是abcdef,所以相等。

        s1 = new String("abcdef");
        s2 = new String("abcdef");
        System.out.println(s1 == s2);  // false,因为s1和s2是两个不同的对象,虽然字符串值都是abcdef,但是对象地址不同,用==比较的话不相等。
        System.out.println(s1.equals(s2));  //true,equals()方法只是比较两个字符串的值是否相等,地址不会进行比较。
    }
}

       char是一个基本数据类型,只能用”==”进行值相等比较,如果想用equals()方法进行比较,则要用char的封装对象Character。代码如下:

public class CharEqualsTest {
    public static void main(String[] args) {
        //char是基本类型,没有equals()方法,只能用"=="来进行比较。
        char c1 = 'a';
        char c2 = 'a';
        System.out.println(c1 == c2);   //true,c1和c2是同一个字符常量'a'的引用,是同一个对象地址,所以相同。

        //如想用equals()方法,则可以用char的封装对象Character。下面就与String是一模一样的了,如下:
        Character c3 = 'a';
        Character c4 = 'a';
        System.out.println(c3 == c4);  // true,c3和c4是同一个字符串常量'a'的引用,是同一个对象地址,所以相同。
        System.out.println(c3.equals(c4));  //true,equals()方法只是比较两个字符串的值是否相等,地址不会进行比较,两个字符串的值都是a,所以相等。

        c3 = new Character('a');
        c4 = new Character('a');
        System.out.println(c3 == c4);  // false,c3和c4是两个不同的对象,虽然字符串值都是a,但是对象地址不同,用==比较的话不相同。
        System.out.println(c3.equals(c4));  //true,equals()方法只是比较两个字符串的值是否相等,地址不会进行比较。
    }
}
### 回答1: 在 Java 中可以使用 "==" 运算符来判断两个 char 类型的变量是否相等。例如: char c1 = 'a'; char c2 = 'b'; if (c1 == c2) { System.out.println("c1 is equal to c2"); } else { System.out.println("c1 is not equal to c2"); } 输出结果为 "c1 is not equal to c2"。 需要注意的是,如果你想比较两个字符串是否相等,那么应该使用 equals() 方法,而不是 "==" 运算符。例如: String s1 = "hello"; String s2 = "world"; if (s1.equals(s2)) { System.out.println("s1 is equal to s2"); } else { System.out.println("s1 is not equal to s2"); } 输出结果为 "s1 is not equal to s2"。 如果你想比较两个对象的引用是否指向同一个对象,那么可以使用 "==" 运算符。例如: String s1 = new String("hello"); String s2 = s1; if (s1 == s2) { System.out.println("s1 and s2 refer to the same object"); } else { System.out.println("s1 and s2 do not refer to the same object"); } 输出结果为 "s1 and s2 refer to the same object"。 ### 回答2: 在Java中,使用双等号(==)来判断两个char类型的是否相等是可行的。例如,我们可以使用以下代码段来比较两个char变量的相等性: ```java char char1 = 'a'; char char2 = 'b'; if (char1 == char2) { System.out.println("char1和char2相等"); } else { System.out.println("char1和char2不相等"); } ``` 上述代码会输出"char1和char2不相等",因为char1的是'a',而char2的是'b',它们不相等。 但需要注意的是,如果要比较两个char类型的对象是否相等,应该使用equals()方法而不是使用双等号(==)。因为双等号(==)比较的是两个对象的引用,而不是它们的内容。例如: ```java Character char1 = new Character('a'); Character char2 = new Character('a'); if (char1.equals(char2)) { System.out.println("char1和char2相等"); } else { System.out.println("char1和char2不相等"); } ``` 上述代码会输出"char1和char2相等",因为虽然char1和char2是两个不同的对象,但它们的内容相等。 ### 回答3: 在Java中,我们可以使用“==”运算符来判断两个char变量是否相等。具体的判断方法如下: 1. 首先,我们声明两个char变量char1和char2。 2. 然后,我们可以使用“==”运算符来比较这两个char变量是否相等。 - 如果char1 == char2返回true,表示两个char变量相等。 - 如果char1 == char2返回false,表示两个char变量不相等。 需要注意的是,由于char类型是基本类型,所以我们可以直接使用“==”运算符进行比较。但是如果我们要比较两个String类型的char是否相等,需要使用equals()方法来判断,例如:char1.equals(char2)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值