본문 바로가기

분류 전체보기

(49)
[WS live-study] 8주차: 인터페이스 학습할 것 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메서드(Default Method), 자바 8 인터페이스의 static 메서드, 자바 8 인터페이스 private 메서드, 자바 9 인터페이스 (interface) 지난 포스팅에서 클래스는 상속(extends)이 1개만 가능하다고 했다. 이건 객체지향 프로그래밍에서의 큰 제약사항이다. 그래서 이 점을 해결하기 위해 인터페이스가 존재한다. 인터페이스는 이를 구현(implement)하는 클래스가 인터페이스의 타입이나 메서드를 사용할 수 있도록 제공한다. 같은 인터페이스를 구현한 클래스는 인터페이스 타입으로 호환이 가능하다. 따라서 인터페이스 타입 변수가 이를 구현한..
[WS live-study] 7주차: 패키지 패키지 키워드 패키지란? 성격에 맞는 클래스와 인터페이스들을 조직화한 네임스페이스 쉽게 말해서 우리의 컴퓨터에 있는 파일들을 공통된 특성에 따라 분류해놓은 폴더의 역할이 java에서 패키지이다. 한 프로그램에 JAVA 언어로 작성된 파일들이 수백, 수천개가 됐을 때 파일 성격에 알맞게 분류해 놓은 패키지의 역할은 중요하다. JAVA는 또한 패키지 묶음으로 자바 프로그래밍에 유용한 많은 class 라이브러리(api)를 제공한다. (예- java.util.String, java.io.File, java.net.Socket... 등) 디렉토리 안에 디렉토리를 가질 수 있는 것처럼 패키지도 마찬가지다. 특정 패키지에서 하위 패키지를 가리킬 때 점(.)으로 구분한다. 패키지 선언 패키지 선언은 다음과 같다. pa..
[백준 1260번] DFS와 BFS (Python) import collections import sys def solution(lst, v): graph = collections.defaultdict(list) for a, b in lst: graph[a].append(b) graph[b].append(a) # 작은 수부터 탐방 for key in graph.keys(): graph[key].sort() def dfs(v, discovered=[]): discovered.append(v) for w in graph[v]: if w not in discovered: discovered = dfs(w, discovered) return discovered def bfs(v): discovered = [v] queue = [v] while queue: v =..
[WS live-study] 6주차: 상속 학습할 것 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 추상 클래스 final 키워드 Object 키워드 상속 상속이란? 자식클래스가 상속받을 부모클래스를 선택하여 받는 것으로 상속받은 부모클래스의 필드와 메소드를 사용할 수 있다. 상속하는 이유와 대상 상속하는 이유는 이미 마련되어 있는 클래스를 재사용할 수 있다. 따라서 개발 시간을 줄여주고, 중복된 코드를 줄일 수 있기 때문이다. 모든 대상이 상속 가능한 것은 아니다. 아래의 경우를 제외한 대상은 상속 가능하다. 부모 클래스의 접근제어자가 default인 경우 부모 클래스의 필드 또는 메서드의 접근제어자가 private인 경우 다른 패키지의 부모 클래스의 필드 또는 메서드의 접근제어자가 default인 경우 상속의 ..
[WS live-study] 5주차: 클래스 클래스와 객체 객체는 클래스에서 파생된 객체마다 속성이 각각 다른 상태를 갖게되는 것을 말한다. 즉, 객체는 클래스를 바탕으로 생성된다. 그런데 이 클래스는 모두 객체로 만들어서 사용해야하는게 아닌 객체 생성 없이 사용할 수도 있다. 클래스에서 객체 생성을 해서 사용하는 것을 인스턴스 변수, 인스턴스 메서드라고 하며, 객체 생성없이 바로 호출할 수 있는 것을 클래스 변수(정적 변수), 클래스 메서드(정적 메서드) 라고 한다. 객체는 속성이 객체마다 각각 다르다했다. 간단한 예를 들어보겠다. class Person { String name; int age; String address; Person(String name, int age, String address) { this.name = name; thi..
[WS live-study] 4주차: 제어문 제어문 프로그램 실행을 조절하고 흐름을 제어하는 문장을 말한다. 선택문 if 문 if문은 조건식이 true인지 false인지에 따라 실행하는 구문을 제어하는 역할을 한다. if문에는 if, if-else, if-else if-else 총 세가지 종류로 사용할 수 있다. if 문 if(조건식) { // 조건식이 true일 경우 실행하는 구문 } ex) String color = "red"; if(color.equals("red")) { System.out.println("The color is red."); } if-else문 if(조건식) { // 조건식이 true일 경우 실행하는 구문 } else { // 조건식이 false일 경우 실행하는 구문 } ex) String color = "blue"; if..
[WS live-study] 3주차: 연산자 산술 연산자 수학적 연산에 사용되는 연산자다. 기본적으로 알고 있는 덧셈, 뺄셈, 나눗셈, 곱셈에서 사용되는 연산자이고, 여기서 몇가지의 연산자가 더 추가된다. 산술연산자는 boolean을 제외한 기본형 타입의 값의 연산에 사용할 수 있다. 피연산자 중에 부동소수점이 있다면 결과도 부동소수점이 되고, 모두 정수라면 결과는 정수가 된다. + (더하기) 두 개 이상의 숫자를 더할 때 사용한다. 또한 문자열을 연결시키는 데에도 사용한다. 피연산자 중에 숫자와 문자열이 함께 있다면 문자열의 위치에 따라 결과가 달라진다. 연산 시 왼쪽에서 오른쪽 순서대로 되기 때문에 문자열 이전에 두 개 이상의 숫자가 나온다면 숫자끼리 연산이 된 다음 문자열 연결이 되고, 문자열이 나온 후에 숫자가 나온다면 문자열로 이미 타입이..
[WS live-study] 2주차: 자바 데이터 타입, 변수 그리고 배열 1. 프리미티브 타입 종류와 값의 범위 그리고 기본값 프리미티브 타입은 기본자료형이다. 프리미티브 타입의 종류는 8개이고, 크게 논리형, 문자형, 정수형, 실수형으로 4가지로 나눠진다. 정수형은 많이 사용되므로 타입이 4종류나 지원이 된다. 정수형 타입 중에는 대부분 int형이 많이 사용되는데 이는 CPU가 효율적으로 처리할 수 있는 타입이기 때문이다. 메모리를 줄이고 싶다면 그보다 크기가 작은 타입으로 사용하면 된다. 논리형인 boolean을 제외하고는 나머지 7가지는 서로 연산이 가능하다. 타입 크기 범위 기본값 논리형 boolean 1byte / 8bit false, true false 문자형 char 2byte / 16bit '\u0000' ~ '\uffff' (0~65,535) '\u0000' ..
[WS live-study ] 1주차:JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 JVM이란 무엇인가 JAVA Virtual Machine(자바 가상 기계)의 약자 실행 전 JAVA 어플리케이션을 운영체제로 바로 전달되는 것이 아니라 JVM을 거쳐서 실행되기 때문에 특정 환경에 구애받지 않는다. (Write once, run anywhere : 한번 작성하면 어디에서나 실행된다. 가 가능하게 된것.) 메모리 관리를 알아서 해준다. (JVM에 Garbage Collector가 포함되어 있다.) 스택기반의 가상머신이다. 1. 컴파일을 하는 방법 1) 자바 코드를 작성한 후 확장자가 .java인 파일을 만든다. 2) 콘솔화면에서 javac '파일이름명.java'를 작성 후 엔터를 누르면 컴파일이 된다. 바이트 파일(.class)가 생긴 것을 확인할 수 있다. 여기서 JAVAC란 '자바 컴파..
Intellij 에서 JAVA 프로젝트 만들기 intellij를 실행하는 것부터 java 클래스 파일 실행까지 정리해보겠다. 1) 인텔리제이 버튼을 클릭하면 아래와 같은 창이 나온다. 새 프로젝트를 생성하려면 'New Project' 버튼을 클릭하고, 기존의 프로젝트를 열려면 'Open or Import' 버튼을 클릭한다. 2) 다음의 창이 나오면 좌측 바에서 어떤 프로젝트를 생성할 지 선택할 수 있다. JAVA 프로젝트를 생성할 예정이기에 'Java'를 선택하고 우측에 버전을 선택하면 된다. 이미지에서는 14버전으로 되어 있지만 다른 버전이 설치되어 있다면 그 버전으로 선택하면 된다. 3) 아래와 같은 화면이 나오면 Next로 넘어간다. 4) 이 화면에서는 프로젝트 이름과 경로를 설정할 수 있다. location에서 다른 위치로 설정하고 싶으면 '..