내배캠 사전캠프 TIL 16일차

오병택·2025년 2월 7일

내배캠

목록 보기
16/73

학습 요약

자바 강의, 코테 문제

JAVA 강의

익명 클래스: 이름이 없는 일회용 클래스. 정의와 생성을 동시에

클래스 정의: 객체를 정의해 놓은 것
클래스의 용도: 객체를 생성하는데 사용

객체의 정의: 실제로 존재하는 것. 사물 또는 개념
객체의 용도: 객체가 가지고 있는 기능과 속성에 따라 다름

객체: 속성(변수) + 기능(메서드). 모든 인스턴스를 대표하는 일반적 용어
인스턴스: 특정 클래스로부터 생성된 객체

Tv t = new Tv();
Tv t1= new Tv();
TV 객체의 주소값 0x100이 참조변수 t에 전달

t1=t; 를 한다고 하면 t의 주소값이 t1에 저장

참조변수의 기본 값: null

Tv [] tvArr = new Tv[3]; // 길이가 3인 TV타입의 참조변수 배열
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();

선언 위치에 따른 변수의 종류

영역
1. 클래스 영역 - iv(인스턴수 변수), cv(클래스 변수==스태틱변수)
2. 메서드 영역 - lv(지역변수)

class Variables {
int iv;
static int cv;
void method() {
	int lv = 0;
      } 
}

class 안에는 선언문만 가능
선언할 때 순서는 상관x

iv 생성시기: 객체 생성될 때
iv는 개별 속성, cv는 공통 속성 작성할 때 사용

iv호출 : 객체 생성하고 참조변수.iv명으로 호출
cv호출 : 객체 생성없이 클래스명.cv명으로 호출

메서드: 문장들을 묶어 놓은 것 { }
메서드는 클래스 영역에만 정의 가능

int add(int x,int y) {   // 반환타입 메서드명(매개변수1,매개변수2) <- 선언부
int result = x + y;     // 메서드 호출 시 수행될 코드 <-구현부
return result; //  결과를 반환
}

lv: 메서드 안에 사용된 변수들(위의 코드에서 매개변수(int x, int y), int result)
메서드가 종료되면 사라짐
반환할 타입이 없다면 반환타입을 void로 작성. void일 때만 return 생략가능. 컴파일러가 자동추가

메서드 호출: 메서드명(값1,값2,...); ex) int answer = add(3,5); void면 메서드명();
호출이 끝나면 호출한 곳으로 되돌아감

메서드의 장점:
1. 코드의 중복을 줄일 수 있음
2. 코드의 관리가 쉬움
3. 코드를 재사용할 수 있음
4. 코드가 간결해서 이해하기 쉬움

호출 스택:
메서드 수행에 필요한 메모리가 제공되는 공간
메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제
최상단 메서드 하나만 실행 하고 나머지는 대기

기본형 매개변수: read only
ex)

class Data { int x; }

class Ex6_6 {
	public static void main(String[] args) {
		Data d = new Data();
		d.x = 10;
		System.out.println(d.x);  // 10
		change(d.x); // 1000, 메서드 안의 lv x값
		System.out.println(d.x); // 10, lv는 메서드가 끝나면 사라지기 때문에 원래 d.x값을 반환
	}
	static void change(int x) {  // 기본형 매개변수를 받는 메서드
		x = 1000;
		System.out.println("change() : x = " + x);
	}
}

느낀 점

진도 나가다 보면 앞 부분을 까먹어서 어 이게 뭐였지..? 하고 멈칫 거리는 부분이 조금씩 생겨서 객체지향파트만 한번 더 회독하고 있다. 다시 보니까 또 다른 느낌이다.

profile
걱정하지 말고 일단 해봐!

0개의 댓글