Java Interview Job search = = and equals () difference

Source: Internet
Author: User


The difference between equals and = = in Java
the data types in Java can be divided into two categories:
1. Basic data type (also known as raw data type): Byte,short,char,int,long,float,double,boolean, the comparison between them, double equals (= =) are applied, and their values are compared.
2. Composite data type (Class): when they compare with (= =), they compare their storage address in memory.。 Therefore, unless it is the same new object, the result of their comparison is true, otherwise the result is false. All classes in Java are inherited from the base class of object, and a method of equals is defined in the base class in object, and the initial behavior of this method is to compare the memory address of the object, but in some class libraries This method is overwritten, such as String,integer, In these classes, date equals has its own implementation, rather than the comparison class's storage address in heap memory.

for the equals comparison between composite data types, the comparison between them is based on the address value of the location in memory where the Equals method is not covered , because the Equals method of object is compared with the double equals sign (= =). So the result of the comparison is the same as the double equals sign (= =).

A value type is a stack stored in memory (a stack), whereas a variable of a reference type is simply the address of a reference-type variable stored in the stack, and itself stored in the heap. So,= = compares the address in the stack, while equals compares the contents of the heap inside the stack where the address is pointing.

public class TestString {public   static void Main (string[] args) {      String S1 = "Monday";      String s2 = "Monday";      if (S1 = = s2)          {             System.out.println ("S1 = = S2");}      else{          System.out.println ("S1! = s2");}}}   Compile and run the program, output: S1 = = S2 Description: S1 and S2 refer to the same String object-"Monday"!

A little more change to the program, there will be more strange discovery:

public class TestString {public static void main (string[] args) {String S1 = "Monday"; String s2 = new String ("Monday"), if (S1 = = s2) {System.out.println ("S1 = = S2");} ELSE{SYSTEM.OUT.PRINTLN ("S1! = s2");} if (s1.equals (S2)) {System.out.println ("S1 equals S2");} Else{system.out.println ("S1 not equals S2");}}} We will S2 use the new operator to create//program output://S1! = s2//s1 equals s2//description: S1 s2 references two "Monday" string objects respectively


3. String buffer pool
Originally, the program at run time will create a string buffer pool when using S2 = "Monday" expression is to create a string, the program first in this string buffer pool to find the same value of the object, in the first program, S1 was put into the pool, so when the S2 was created, The program found a S1 with the same value
S2 refers to the object referenced by S1 "Monday"
In the second procedure, the new operator was used, and he understood the telling program: "I want a new one!" Don't be old! "So a new" Monday "Sting object is created in memory. Their values are the same, but the locations are different, one swimming in the pool and one resting on the shore.


Summarized as follows



= = compares the addresses of 2 objects, while equals compares the contents of 2 objects.

Even if = = compares the contents of the stack is equal, equals compares the contents of the heap is equal.

Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.

Java interview = = and equals () difference

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.