1. 程式人生 > >Java String類中的equals函式與==的區別

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!=輸入");
		}
	}
}