
datatype은 크게 primitive datatype과 non-primitive datatype 둘로 구분됨
primitive DT는 기본적으로 우리가 생각하는 원형의 DT
boolean, char, int, double, short, long, float
7가지가 있음
나머지 non primitive DT는 수없이 많음
사실 이것들은 결국 하나의 object인 것이지만 DT처럼 사용되고 있음
많이 사용하는 것들로는 String, Array, Date, File 등이 있음

이제 본격적으로 == (comparison operator)과 .equal (object String's method) 비교해보자
쉽게말해,
== 는 primitive datatype 비교할 때
.equals() 는 non-primitive datatype 비교할 때
사용하면 된다
primitive datatype은 엄밀히 말하면 정해진 값 자체(리터럴; literal)를 지정하게 됨
즉, 포인터로 그 값 자체를 가리키는 것
따라서 ==를 통해서 그 값 자체를 비교하면 됨
하지만 non-primitive datatype은 공간을 할당하고 거기에 값들을 넣게 됨
이 과정에서 하나씩 내용을 비교하면 같더라도 할당되어있는 공간은 다르기 때문에 == 을 하면 다른 공간에 할당된 것이므로 다르다고 프로그램이 판단함
그래서 할당 주소 말고 딱 내용만 비교하기 위해 만들어진 .equals() 라는 method를 이용해야 함
참고로 non-primitive datatype은 그냥 object이므로
String a1 = new String("java");
이렇게 생성해야 맞지만
Strig은 너무 자주 쓰는 것이기 때문에
예외적으로
String a1 = "java";
라고 써도 허용해줌
또한 == 도 사용이 가능함
String a1 = "a";
String a2 = "a";
String a3 = new String("a");
이렇게 두 가지가 있다고 하면
a1 == a2 // true
a1.equals(a2) // true
a1 == a3 // false
a1.equals(a3) // true
'Language > Java' 카테고리의 다른 글
[JAVA] enum 이란? (아무리 봐도 이해가 안 된다면 꼭 보자) (0) | 2022.01.20 |
---|---|
자바 예외 종류 (Exception) (0) | 2022.01.18 |
[JAVA] InputStreamReader 란?? (+ BufferedReader) (0) | 2022.01.17 |
[JAVA] 스트림 Stream 이란? (+ InputStream, OutputSream) (0) | 2022.01.17 |
[JAVA] Scanner 와 BufferedReader 차이 & 사용법 (0) | 2022.01.14 |