오랜만에 자바 기본 문법을 복습해 보았는데 반가웠다. 허허
특별히 어려운 건 없었고 강의를 수강하면서 리마인드 하면 좋을 만한 내용들을 정리해보려 한다.
스코프
변수는 선언한 위치에 따라 지역 변수, 멤버 변수(클래스 변수, 인스턴스 변수)와 같이 분류된다.
지역 변수는 이름 그대로 특정 지역에서만 사용할 수 있는 변수라는 뜻이다.
멤버 변수(클래스 변수, 인스턴스 변수)는 클래스 내부에 선언된 변수로, 다시 클래스 변수와 인스턴스 변수로 나뉜다.
클래스 변수 (static 변수) | 인스턴스 변수 |
static 키워드가 붙은 변수로, 클래스 로더가 클래스를 메모리에 로드할 때 초기화된다. 모든 객체가 해당 변수를 공유한다. | 객체마다 독립적으로 존재하는 변수로, 객체가 생성될 때마다 초기화된다. |
변수의 접근 가능한 범위를 스코프(Scope)라 한다.
변수를 선언한 시점부터 변수를 계속 사용할 수 있게 해도 되지 않을까?
왜 복잡하게 접근 범위(스코프)라는 개념을 만들었을까?
스코프(Scope) 개념으로 인해 효율적인 메모리 사용과 코드 복잡성 감소한다는 이점이 존재하기 때문이다.
형변환 1️⃣
작은 범위에서 큰 범위로는 값을 넣을 수 있다. | 큰 범위에서 작은 범위는 다음과 같은 문제가 발생할 수 있다. |
예) int -> long -> double | 예) 소수점 버림, 오버플로우 |
작은 범위 숫자 타입에서 큰 범위 숫자 타입으로의 대입은 직접 형변환을 하지 않아도 된다.
이런 과정이 자동으로 일어나기 때문에 자동 형변환, 또는 묵시적 형변환이라 한다.
형변환 2️⃣
큰 범위에서 작은 범위 대입은 명시적 형변환이 필요하다.
개발자가 직접 형변환 코드를 입력해서 데이터 타입을 변경하면 명시적 형변환이라 한다.
기본형 vs 참조형
기본형(Primitive Type) | 참조형(Reference Type) |
byte, short, int, long, float, double, char, boolean | 표준 라이브러리 클래스, 사용자 정의 클래스, 배열, 인터페이스, 예외 클래스, 입출력 클래스, 스레드 클래스 |
for-each문
메서드 호출과 용어정리
인수(Argument)라는 용어는 '인’과 '수’의 합성어로, '들어가는 수’라는 의미를 가진다. 즉, 메서드 내부로 들어가는 값을 의미한다. 인자도 같은 의미이다.
매개변수(Parameter)는 '매개’와 '변수’의 합성어로, '중간에서 전달하는 변수’라는 의미를 가진다. 즉, 메서드 호 출부와 메서드 내부 사이에서 값을 전달하는 역할을 하는 변수라는 뜻이다.
메서드 호출과 값 전달 1️⃣
자바는 항상 변수의 값을 복사해서 대입한다.
메서드 오버로딩
오버로딩 규칙, 메서드의 이름이 같아도 매개변수의 타입 및 순서가 다르면 오버로딩을 할 수 있다. 참고로 반환 타입은 인정하지 않는다.
메서드 시그니처(method signature) = 메서드 이름 + 매개변수 타입(순서)
변수명 vs 메서드명
변수 이름은 일반적으로 명사를 사용한다.
한편 메서드는 무언가 동작하는 데 사용하기 때문에 일반적으로 동사로 시작한다.
'Dev > Java' 카테고리의 다른 글
Gradle은 무엇인가? 의존성 관리는 왜 필요한가? (1) | 2024.10.25 |
---|---|
final에 대한 이해 (0) | 2024.10.24 |
static 변수와 static 메서드를 왜 쓸까? (0) | 2024.10.24 |
Java Virtual Machine & Runtime Data Areas (2) | 2024.10.23 |
Lombok은 어떤 원리로 동작할까? (0) | 2024.10.21 |