본문 바로가기
728x90
반응형

자바의정석17

[ch2-14] 화면으로부터 입력 받기 1) import 문: 사용하려는 클래스가 어떤 패키지에 속해있는지 알려주기 위한 것. import문이 필요한 클래스가 있고 필요하지 않은 클래스가 있다 2) Scanner 클래스는 꼭 객체를 생성해야만 사용할 수 있다 System.in - 화면 입력을 의미 Scanner 클래스는 화면 뿐만 아니라 파일로부터도 입력 받을 수 있다 3) 생성한 Scanner 객체를 사용하면 화면으로부터 입력을 받을 수 있다 화면에서 입력한 정수를 변수 num에 저장한 것. 정수가 아니라 실수를 입력할 땐 => Float를 이용 nextLine (메서드): 화면에서 입력한 내용을, 한 행을 읽어서 문자열로 만든 것 그래서, 저장할 때 타입이 String input 이라는 문자열을 숫자(정수)로 변환해서 변수 num에 저장한.. 2023. 1. 27.
[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.
728x90
반응형