본문 바로가기
728x90
반응형

> 프로그래밍 언어/JAVA34

[ch6-22] 호출 스택(call stack) 스택에서 넣을 때와 꺼낼 때 스택은 위에 뚫려진 공간으로만 넣거나 뺄 수 있다 메서드가 호출되면 메소드 작업이 필요하게 되고, 메소드가 작업을 수행하는데 필요한 메모리공간이 호출스택에 만들어짐 작업하다가 작업이 종료되면 호출스택에서 메소드가 사용하던 메모리 공간이 제거됨 main 메소드가 println 메소드 호출하면 main 메소드 위에 println 메소드가 올라감 main메소드는 대기상태가 되고, println은 실행상태가 됨 첨에는 main메소드가 실행중이었음 println 메서드가 작업을 마치면 (println 종료) 종료되고, 스택이 사라짐 다시 main 메서드로 돌아와 main 메서드가 실행상태가 됨 아래에 있는 메서드가 위의 메서드를 호출함 맨 위의 메서드 하나만 실행중이고, 나머지는 대기.. 2023. 1. 26.
[ch11-22~24] Iterator, Enumeration, Map과 Iterator 컬렉션에 저장된 데이터를 읽어올 때 사용 핵심은 위에 두 개 동그라미 표시된 것 hasNext: 읽어올게 남아있는 지 확인 Object next: 읽어오기 1) 확인 2) 읽기 더 이상 읽어올 것이 없으면 false로 리턴 Enumeration은 Iterator의 구버전 거의 같다고 봄 Enumeration이 가진 메서드 이름만 다를 뿐 위의 표처럼 하는 일이 같음 true면 다음 요소 읽어옴 false면 반환 Listlterator는 next 뿐만 아니라 previous도 있다 next: 한방향으로만 감 (다음요소만 읽을 수 있음) Listlterator는 양방향 다음요소 + 이전요소 읽어올 수 있음 잘은 안 씀 컬렉션: List / Set / Map 컬렉션들 마다 구조가 다르고 요소를 읽어오는 방법이.. 2023. 1. 25.
[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.
[ch11-15~18] Stack과 Queue 스택: 상자같은 것 밑이 막힌 상자 먼저 넣은게 맨 밑에 깔려있다 스택을 Last In First Out (LIFO) 이라고도 함 (마지막에 넣은게 첫 번째로 나온다) 넣는 것: push 꺼내는 것: pop 큐: 줄서기하고 똑같음 양 끝이 뚤린 상자 꺼내면 젤 첫 번쨰 숫자인 0이 꺼내지는 것 스택과 달리 저장한 순서대로 꺼내짐 저장하는 것: offer 꺼내는 것: poll First In First out (FIFO) (먼저 온 사람이 먼저 나간다) 스택은 배열이 효율적이고 큐는 링크드리스트가 효율적 스택을 사용할 때의 클래스가 있다 Stack st = new Stack(); empty: 비어있는 지 알려줌 true - 비어있는 것 false - 비어있지 않은 것 peek: 상자 맨 위에 뭐가 있는 지.. 2023. 1. 23.
[ch11-12~14] LinkedList 장점: 첫 번쨰 요소 1을 읽어오는 것 하고 마지막 요소를 읽어오는 것 하고 접근시간이 똑같다 단점(1) 한 번 생성하면 크기 변경할 수 없음! 어떻게 해야할까? 1) 더 큰 배열을 생성 2) 기존의 내용 복사하고 3) 참조를 변경해야한다 그렇다고 처음부터 크기를 넉넉하게 해버리면 메모리 낭비 좋은 건 아님 단점(2) 비순차적: 배열 중간에 있는 데이터를 삭제 또는 추가하는 것을 의미 뒤의 데이터들이 이동을 하기 때문에 시간이 많이 걸린다. 중간의 데이터 추가,삭제는 시간이 많이 걸리지만 처음 끝과 마지막 끝은 빠름 배열의 단점: 1) 크기변경불가 2) 추가삭제 시간 多 이 단점들을 보완해서 나온 것 ∴ LinkedLIst 배열은 각 요소가 연속적 (다닥다닥 붙어있음) LinkedList는 각 요소가 어.. 2023. 1. 21.
[ch11-7~11] ArrayList ArrayList 하고 Vector은 같음 Vector은 옛날 거 vector은 동기화처리가 돼있다 ArrayLIst는 동기화 안돼있음 List가 붙은 애들은 List 인터페이스 구현했다는 뜻 소스를 보면 아래에 객체배열이 있다 모든 종류의 객체를 저장할 수 있다 생성자(3) 1) ArrayList() - 기본생성자 2) ArrayList(Collection c) - 매개변수로 어떤 collection을 주면 그 collection에 저장돼있는 걸 저장하는 ArrayList를 만들 수 있음 Collection끼리 변환할 때 많이 씀 3) 배열의 길이를 늘려줌 1) 추가하는 메서드 ArrayList에 어떤 객체 저장하려면 add 쓰면 된다 성공하면 true 반환 실패하면 false 2) index - 저장.. 2023. 1. 20.
728x90
반응형