Java String类中的equals函数与==的区别

String类型中的equals函数格式为 String A.equals(String B)
返回值为true或false。
如图
当st1赋值为“123”时,“123”作为首次出现的值会被放在一个内存空间(地址为ad1)中。
当st1与st2用’==来进行比较时,并不是比较它们的值,而是比较它们的值的地址ad,如果ad相同,那么st1=='t2。
但是当用Scanner进行字符串输入input时,此时input的值“123”的地址(地址为ad2)并不是st1的值“123”的地址(地址为ad1)。所以当st1与input用 '==‘比较时,比较的虽仍然是其值所在的地址,但是地址不同,自然返回值为false。
而equals函数比较的是地址指向的值而不是地址。所以纵然ad1不等于ad2,但是ad1,ad2中的值“123”是相等的,返回值为true。
在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;
public class aboutEquals
{
	public static void main(String[] args)
	{
		System.out.print("输入:");
		Scanner sc=new Scanner(System.in);
		String input = sc.nextLine();
		String st1="123";
		String st2="123";
		if(st1==st2)
		{
			System.out.println("==:st1==st2");
		}
		else
		{
			System.out.println("==:st1!=st2");
		}
		if(st1==input)
		{
			System.out.println("==:st==输入");
		}
		else
		{
			System.out.println("==:st1!=输入");
		}
		if(st1.equals(input))
		{
			System.out.println("equals:st1==输入");
		}
		else
		{
			System.out.println("equals:st1!=输入");
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_43228135/article/details/83690695
今日推荐