java char类型判断相等_判断String类是否相等

判断字符串相等有两种方式:一种方式是用“==”运算符来判断,主要是判断两个字符串的内存地址是否相等;一种方式是用String类的equals()方法来判断,主要是判断两个字符串的内容是否相等。

使用运算符“==”来判断

使用运算符“==”判断两个字符串是否相等时,它会判断两个字符串的内存地址是否相同,如果相同返回true,否则返回false。

案例1:创建两个字符串对象,使用“==”判断两个字符串是否相等。

在PbaseUnit11项目unit包下创建StringEqualSample1类。代码如下:

/**

* @Title: StringEqualSample1.java

* @Packageunit

* @Description:Java基础知识课程案例

* @author编程训练营

* @date

* @versionV1.0

*/

packageunit;

/**

* @ClassName: StringEqualSample1

* @Description: 字符串(判断字符串是否相等)案例2

* @author编程训练营

* @date

*

*/

publicclassStringEqualSample1 {

/**

* @Title: main

* @Description:Java程序入口main方法

* @param@param args 参数

* @return void 返回类型

* @throws

*/

publicstaticvoidmain(String[] args) {

// 创建字符串对象

String szTempA = "Hello World";

String szTempB = "Hello World";

String szTempC = new String("Hello World");

String szTempD = new String("Hello World");

// 判断szTempA是否等于szTempB

if( szTempA == szTempB )

{

System.out.println("szTempA等于szTempB");

}

else

{

System.out.println("szTempA不等于szTempB");

}

// 判断szTempC是否等于szTempD

if( szTempC == szTempD )

{

System.out.println("szTempC等于szTempD");

}

else

{

System.out.println("szTempC不等于szTempD");

}

}

}

程序结构分析

代码创建了四个字符串对象,szTempA和szTempB由字符串常量初始化,szTempC和szTempD由new运算符创建。然后分别用“==”运算符判断szTempA和szTempB、以及szTempD和szTempC是否相等。

程序执行结果如下图所示:

从执行结果可以看出,判断结果是szTempA和szTempB相等,而szTempC和szTempD不相等。这四个字符串的内容都相同,为什么会有不同的判断结果呢?

原因就是“==”运算符主要是判断两个String对象的内存地址是否相同,当用字符串常量给字符串对象赋值时,Java虚拟机会从维护的一个内存池中查找是否有内容相同的字符串对象,如果有相同的字符串对象,则返回这个字符串对象的内存地址赋值给新创建的字符串对象。所以szTempA和szTempB的内存地址是相同的,判断结果自然是相等。

szTempD和szTempC是new运算符创建的字符串对象,在Java中只有使用new运算符创建对象,Java虚拟机就会在堆(系统存储区域,用于存储应用程序创建的对象)中创建一个新的对象。所以szTempD和szTempC的内存地址不相同,判断结果自然是不相等。

由此可以看出,要判断两个字符串对象的内容是否相等,不应该使用“==”运算符,而要使用String类的equals()方法。

使用equals()方法来判断

String类的equals()方法用于判断两个字符串的内容是否相同,调用equals()方法语法如下:

str.equals(String s);

其中str和s是要判断的两个字符串对象。

String类的equals()方法判断两个字符串对象的内容是否相同时,是区分大小写的。如要忽略字符串内字符的大小写,可以使用String类的equalsIgoreCase()方法来判断,使用方法和equals()方法相同。

案例2:使用equals()方法和equalsIgoreCase()方法来判断字符串是否相等。

在PbaseUnit11项目unit包下创建StringEqualSample2类。代码如下:

/**

* @Title: StringEqualSample2.java

* @Packageunit

* @Description: Java基础知识课程案例

* @author编程训练营

* @date

* @versionV1.0

*/

packageunit;

/**

* @ClassName: StringEqualSample2

* @Description: 字符串(判断字符串是否相等)案例2

* @author编程训练营

* @date

*

*/

publicclassStringEqualSample2 {

/**

* @Title: main

* @Description:Java程序入口main方法

* @param@param args 参数

* @return void 返回类型

* @throws

*/

publicstaticvoidmain(String[] args) {

// 创建字符串对象

String szTempA = "hello World";

String szTempB = "Hello World";

String szTempC = new String("Hello World");

String szTempD = new String("Hello World");

// szTempA和szTempB区分大小写判断

if( szTempA.equals(szTempB) )

{

System.out.println("szTempA等于szTempB(区分大小写)");

}

// szTempA和szTempB不区分大小写判断

if( szTempA.equalsIgnoreCase(szTempB) )

{

System.out.println("szTempA等于szTempB(不区分大小写)");

}

// szTempC和szTempD判断

if( szTempC.equals(szTempD) )

{

System.out.println("szTempC等于szTempD(区分大小写)");

}

}

}

程序结构分析

程序创建了四个字符串对象,szTempA和szTempB用字符串常量赋值,szTempA和szTempB的内容有字符大小写的区别,用于实验eauals()方法和equalsIgnoreCase()方法。szTempC和szTempD使用new运算符创建,这两个字符串的内容相同,但内存地址不同,用于验证eauals()方法。

程序执行结果如下图所示:

cb11f153d77c462453dc332cd7648470.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值