본문 바로가기
728x90
반응형

자바정석기초610

[ch6-22] 호출 스택(call stack) 스택에서 넣을 때와 꺼낼 때 스택은 위에 뚫려진 공간으로만 넣거나 뺄 수 있다 메서드가 호출되면 메소드 작업이 필요하게 되고, 메소드가 작업을 수행하는데 필요한 메모리공간이 호출스택에 만들어짐 작업하다가 작업이 종료되면 호출스택에서 메소드가 사용하던 메모리 공간이 제거됨 main 메소드가 println 메소드 호출하면 main 메소드 위에 println 메소드가 올라감 main메소드는 대기상태가 되고, println은 실행상태가 됨 첨에는 main메소드가 실행중이었음 println 메서드가 작업을 마치면 (println 종료) 종료되고, 스택이 사라짐 다시 main 메서드로 돌아와 main 메서드가 실행상태가 됨 아래에 있는 메서드가 위의 메서드를 호출함 맨 위의 메서드 하나만 실행중이고, 나머지는 대기.. 2023. 1. 26.
[ch6-20,21] return문, 반환 값 printGugudan은 dan을 입력하면 그 dan을 출력해주는 메서드 3단을 출력해주고 싶으면 3을 넣어주면 됨 if 문에 입력한 dan의 값 2단부터 9단 사이가 아니면 (return) 더 이상 작업 진행하지 않고 호출한 곳으로 되돌아간다 원래는 메서드 마지막에 return 써야 함 매번 쓰기 귀찮으니 생략하는 것 근데 return문을 생략할 수 있는 경우는, 반환타입이 void 일 때만 가능 반환타입이 void가 아닌 경우, 반드시 return문이 필요 (return문 생략불가) 그나저나 이 작성문에는 문제가 있어서 에러가 발생함 에러 내용: return문이 없음 if 조건식이 참일 땐, return문이 있고 거짓일 땐, 없는 것 이런식으로 참일 때랑, 거짓일 때 return문이 있도록 작성해야 .. 2023. 1. 24.
[ch6-17~19] 메서드 호출 메서드를 호출해야 괄호 안 문장 실행됨 메서드 이름을 먼저 작성 메서드가 작업하는데 필요한 값을 괄호안에 적어준다 (없을 때는 아무것도 안써도 됨) ex) print99danAll(); 구구단을 출력하는데 딱히 add 메서드의 경우엔 값이 2개 있음 (덧셈 하려면 필요한 값들) 값 두 개 주면 int 값 출력 한다는 뜻 print99danAll 메서드의 반환타입은 void 즉, 출력이 없다는 뜻. 내가 작업을 수행하고 그 결과를 줄 게 없다는 의미 3하고 5가 매개변수의 x와 y에 대입됨 3+5 의 값 8이 int result 에 저장된다 그리고 result 변수가 메서드 수행 결과로 반환된다 (return) 메서드 호출할 때 int result 이 부분이 없어도 된다 뒤에 add(3,5)가 메서드 호출.. 2023. 1. 24.
[ch6-14~16] 메서드란? 메서드의 선언부와 구현부 똑같은 코드 2번 들어가는 것 : 코드의 중복 오른쪽 코드는 배열출력을 별도의 메서드로 만든 것 printArr: 메서드 이름 하나의 작업을 하는 코드를 괄호 안에 집어 넣고 하나로 묶은 후 이름을 붙여준 것이 메서드 printArr(numArr) - 메서드 호출 즉, 메서드 사용하는 것 이 3문장이 1줄로 줄어듦 얘 또한 1줄로 줄어듦 메서드 : 작업 단위로 문장들을 묶어서 이름 붙인 것 메서드가 작업을 할 때 필요한 값을 주고 그 결과를 받을 수도 있다 메서드: 한가지 기능만 수행하도록 작성하는게 좋음 메서드: 선언부, 구현부로 구성 반환타입: 메서드가 작업한 작업결과의 타입을 보는 것 add메서드: 두 개 이상의 입력 값이 필요 입력은 0~n개 가능 출력 값은 0~1개 출력(반환타입): 예시에는 작.. 2023. 1. 23.
[ch6-12,13] 클래스 변수 인스턴스 변수 카드의 속성 - 무늬/숫자/폭/높이 객체마다 숫자하고 무늬는 개별 값 : 카드 객체마다 다르게 유지돼야 하는 값 폭,높이 : 모든 객체가 공통적으로 가져야 하는 값 같은 속성이지만, 무늬와 숫자는 개별적이고 폭,높이는 공통적이어야 함 속성 중에 개별적인 것은 iv 공통적인 것은 cv 속성 중에 개별적인 값을 가져야 하는 것은 인스턴스 변수(iv) 를 사용하고 모든 인스턴스가 공통으로 갖는 속성에는 static을 붙여서 클래스 변수(cv)를 씀 객체를 생성 cv는 왼쪽 보단 오른쪽 Card.width = 200; 처럼 써야 함. 클래스 이름이 붙어야 한다 좌측처럼 쓰면 iv로 오해할 수 있다 cv 예시 : 객체생성없이 사용가능 iv 예시 객체를 만들 때 생김 c1 하고 c2 는 서로 다른 객체인데 cv 값.. 2023. 1. 23.
[ch6-11] 선언 위치 변수 종류 변수의 종류는 선언 위치에 따라서 종류가 3가지로 나뉘어짐 종류 3가지 - iv / cv / lv class 안에는 영역이 2가지 있음 1) 클래스 영역 / 2) 메서드 영역 cv: class 변수 iv 앞에 static을 붙이는 것 cv에 static이 없으면 iv가 됨 iv: 인스턴스 변수 - instance lv: 지역변수 - local variable 메서드 영역: 메서드 시작 ~ 메서드 끝까지의 영역 클래스 영역: 클래스 시작 ~ 클래스 끝까지의 영역 클래스영역에는 선언문만 가능 iv, cv : 변수 선언문 메서드 선언과 정의 선언문의 순서는 상관 X 메서드를 이렇게 위에다 써도 상관 ㄴㄴ 일반적으로 변수선언을 먼저하지만, 규칙이 따로 있는 건 아님 lv의 범위 iv와 cv의 범위: class .. 2023. 1. 17.
[ch6-9,10] 클래스의 정의 클래스(3) - 설계도 / 데이터+함수 / 사용자 정의 타입 배열의 한계: 같은 종류밖에 저장할 수 없음 구조체: 여러 값을 묶은 것 구조체하고 배열하고의 다른점: 다른타입도 ok 클래스: 변수를(데이터) 함수와 같이 묶은 것 묶는 이유: 서로 관계가 있어서 사용자 정의 타입: 우리가 정의한 타입 3개의 변수를 하나로 묶은 것 3개의 변수를 선언하는 대신에, 하나의 객체를 생성하는 것으로 대신할 수 있음 Time은 세개의 변수를 하나로 묶은 것이기 떄문에 왼쪽코드하고 오른쪽 코드는 같은 코드가 됨 두번째 건 3개의 시간을 다루는 것이니까 Time객체를 3개 만들면 왼쪽 코드하고 오른쪽 코드가 같은 것이 된다 맨 아래건 객체 배열로 바꿀 수 있음 3개의 변수를 선언하면 3개의 저장공간이 생김 녹색 칸에 정.. 2023. 1. 17.
[ch6-8] 객체 배열 참조변수의 배열을 객체배열이라고 부름 Tv타입의 참조변수 tv1, tv2, tv3 이걸 배열로 바꾸면 Tv[] tvArr = new Tv[3]; 로 변경된다. (Tv타입 참조변수 곱하기 3) 참조변수 3개 붙여놓은 것 참조변수 기본값: null 객체의 배열은 객체를 담기위한 것이니까, 객체를 생성해서 각각의 참조변수에 저장해 놓음 tv 객체가 만들어지고, 번지가 저장이 됨 이런 걸 객체배열이라고 한다 3문장을 아래의 문장과 같이 간단히 표현 가능 Tv[] tvArr = { new tv(), new tv(), new tv() }; 참조변수하고 객체를 그림으로 나타내면 참조변수 t1, t2, t3과 Tv객체 그림 tvArr: 참조변수 new Tv[3]: Tv타입 참조변수 3개 객체배열 new Tv[3] 을 .. 2023. 1. 17.
[ch6-6, 7] 객체의 생성과 사용 객체를 다룰려면 리모컨(참조변수)가 필요 리모컨을 만들어주고 - 객체 만들어준 다음 - 대입연산자로 리모컨과 객체 연결 Tv t; t = new Tv(); || Tv t = new Tv(); 이렇게 합쳐서 쓸 수 있음 객체의 사용 의미 : 변수와 메서드 사용 메서드 사용 = 메서드 호출 메서드 호출하면 해당 문장 내에 있는 메서드 사용됨 1) 클래스 작성(설계도) 2) 객체 생성(제품) 3) 객체 사용 Tv t; : 변수선언문 Tv는 변수의 타입이 기본형 타입이 아니라 참조형 타입 변수 (기본형 8개에 포함X) 참조변수(리모컨)만들어지고 (저장할 공간) t = new Tv(); 객체도 생성해준다 객체주소가 참조변수(리모컨)에 대입됨 => 대입연산자에 의해서 리모컨하고 TV를 연결해주는 것 객체를 다룰 때.. 2023. 1. 16.
728x90
반응형