== vs equals(), length vs length(), 여러 변수 한 줄에 선언== 와 .equals()의 차이자바에서 두 값을 비교할 때 사용하는 두 가지 방법입니다. 어떤 자료형을 비교하느냐에 따라 적절한 방법을 사용해야 해요.
| 구분 | == 연산자 | .equals() 메서드 |
|---|---|---|
| 주요 사용 | 기본 자료형 (Primitive Types)int, char, boolean 등 | 참조 자료형 (Reference Types)String, Integer, Double 등 |
| 비교 대상 | 변수에 저장된 실제 값 | 객체가 가리키는 데이터 내용 |
| 주의 사항 | 참조 자료형에 사용 시, **참조 주소(메모리 위치)**를 비교해요. 내용이 같아도 주소가 다르면 false입니다. | 기본 자료형에는 사용할 수 없어요. |
length 와 length()의 차이💡 핵심 원리: '종류'를 구별하기
프로그래밍 문법은 결국 '무엇'의 길이를 재는가에 따라 달라져요.
이때 . 뒤에 ()가 붙는지 여부는 그 '무엇'이 데이터(속성)인지 기능(메서드)인지를 나타내는 중요한 힌트가 됩니다.
length (괄호 없음)📝 이건 데이터(속성)예요. 배열처럼 고정된 크기를 가진 객체의 고유한 정보를 의미합니다. 배열을 만들 때 그 길이가 정해지기 때문에, 그냥 그 값을 읽어오기만 하면 되죠. 따라서 굳이 어떤 동작을 실행할 필요가 없어 괄호가 붙지 않습니다.
String[] arr = {"A", "B", "C"};arr.length의 결과는 3 입니다.length() (괄호 있음)💻 이건 기능(메서드)이에요. 문자열처럼 가변적인 데이터를 다룰 때, 길이를 계산하거나 확인하는 '동작'을 수행하는 것이죠. "야, 지금 이 문자열의 길이가 몇이야?"라고 물어보는 명령과 같아서 괄호 ()가 필요합니다.
String str = "Hello";str.length()의 결과는 5 입니다. 문자열의 길이를 세는 '행위'를 수행하는 거죠.이 두 가지를 구별하기 어렵다면, 다음과 같은 간단한 질문을 스스로에게 해보세요.
"이것은 이미 정해진 상수(값)인가?" 👉 그렇다면 length (괄호 없음)
"이것은 어떤 동작을 통해 알아내야 하는가?" 👉 그렇다면 length() (괄호 있음)
자바에서 여러 변수를 한 줄에 선언할 수 있지만, 초기화에는 주의해야 합니다.
잘못된 초기화:
int a, b, c, d = 0;
d만 0으로 초기화하고, a, b, c는 초기화되지 않은 상태가 됩니다. 이 변수들을 사용하면 컴파일 오류가 발생해요.올바른 초기화:
int a = 0, b = 0, c = 0, d = 0;
오 equals() 메서드가 값의 참조였군요 처음 알았습니다 ㅎㅎ 유익한 포스트 잘 보고 갑니당