java编程思想练习题-第3章练习14-String判等全解

本文探讨如何通过编写方法比较两个字符串,并使用各种布尔值的比较关系来判断它们是否相等,解释了不同比较方式背后的原理,包括直接比较、使用equals方法、使用==操作符等,展示了编译器对字符串的处理方式以及new关键字的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:编写一个接受两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结果打印出来。

 

解析:有很多种可能,看例子先

 

import java.util.*; 
public class test {
	
static void f(boolean b) {if(b == true) System.out.println(true);
		else System.out.println(false);}
		
		
	static void stringTest(String s, String t) {
		f(s == t);
		f(s.equals(t));
		f(t.equals(s));
	}	
	public static void main(String[] args) {
		String s = "one", t = "two";
		test.stringTest(s, t);	
		System.out.println("-------------------------");
		String s1 = "one", t1 = "one";
		test.stringTest(s1, t1);
		System.out.println("-------------------------");
		String s3 = new String("one"), t3 =new String("one");
		test.stringTest(s3, t3);
		System.out.println("-------------------------");
		String s2 = "one", t2 = s2;
		test.stringTest(s2, t2);
		System.out.println("-------------------------");
	}


}

 

结果是这样的:

false
false
false
-------------------------
true
true
true
-------------------------
false
true
true
-------------------------
true
true
true
-------------------------

 

第一栏三个false很好理解,因为他们表示的内容都不一样当然不相同。

第二栏为什么是三个true呢?虽然我们没有显式的把这两个变量用=连接起来,但是编译器为了节约存储,把表示相同字符串的变量指向了同一块内存区域,也就是说这一个字符串在内存中只保存了一次。

第三栏我们用new来强制编译器分配内存,所以会出现有false有true因为==比较的是引用是否相同,而equals比较的是字面量是否相同(String类重写)

第四栏因为引用相同所以不管是equals和==都输出true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值