네이버 클라우드 캠프/Java 10

[Java] JDBC 이야기

JDBC JDBC(Java Database Connectivity) JAVA 프로그래밍 언어를 통해, DB에 데이터를 저장, 수정, 삭제, 조회 등 쿼리를 실행할 수 있도록 하는 API(Application Interface) 입니다. 다양한 DB 제공 벤더사에서 DB에 접속하도록 자체 드라이버를 제작해서 제공합니다. 참고로, JDBC 드라이버는 TYPE1 ~ 4까지 버전이 있습니다. 그 중 순수 자바(자바 네이티브)로 구성된 TYPE4를 사용합니다. 이 TYPE4 드라이버는 자바로 작성해서 타 네이티브 라이브러리, 추가 미들웨어 없이 DB에 접속할 수 있습니다. 적은 용량과 높은 성능을 가집니다. ORACLE : Oracle JDBC Thin Driver(ojdbc) MySQL : Connector/J..

[Java] 스트림 (Stream)

1. 스트림이란? 컬렉션이나 배열의 요소를 반복해서 처리하는 하나의 방식입니다. 컬렉션에 .stream() 메소드가 있어서 컬렉션을 스트림형식으로 변경해서 사용 가능합니다. 2. 스트림 선언 컬렉션 list => Stream typeStream = list.stream(); 3. 스트림의 forEach 람다식을 활용합니다. 컬렉션 요소 하나씩 담는 변수명을 아무거나 지정합니다. 내부에는 처리할 내용이 한 줄이면, 중괄호{} 없이 작성하고, 두 줄 이상이면 중괄호{} 내에 작성합니다. typeStream.forEach(컬렉션 요소 하나 담은 변수명 -> {처리할 내용}); 내부반복자로, Iterator보다 빠른 처리속도를 가지며, 람다식으로 다양한 작업이 가능합니다. 파이프 라인 혹은 체이닝 기법으로 중간..

[Java] 멀티스레드

Thread(스레드) - 영어 사전으로는 실, 흐름 등을 의미합니다. - 프로그램의 흐름으로 생각해볼 수 있습니다. - OS는 프로그램 하나를 처리할 때 프로세스라는 단위로 처리합니다. 멀티태스킹 멀티스레드 프로그램을 동시에 여러 개 사용할 때 프로세스가 각각의 프로그램에 하나씩 배정되어 멀티 프로세스로 처리합니다. 프로그램의 내부에서 멀티태스킹이 이루어질 때 사용. - 멀티태스킹 ≠ 멀티프로세스? 1) 하나의 프로긂이 동시에 두 작업을 합니다. 2) 단일 프로세스만 할당이 되고, 두 작업을 동시에 진행 가능하게 해주는 개념은? "멀티 스레드" 프로세스 vs 스레드 프로세스 스레드 여러 개가 독립적으로 존재합니다. 프로세스 내에 포함되어 있습니다. 하나가 문제되어도 다른 프로그램에 영향을 주지 않습니다...

[Java] 상수의 할당

☑️하나만 할당 상수는 선언시 모든 상수가 동일한 타입을 가져야 합니다. 지정된 상수 값의 타입이 있다면, 변수를 생성할 때 아래처럼 생성할 수 있습니다. private static final + 정해진 타입 + 변수명; 기본 생성자를 하나 추가해서, 위에서 만든 변수에 호출된 상수의 값을 대입합니다. 변수가 private로 선언되므로, 접근하려면 getter 와 setter를 사용해야합니다. 값의 할당은 상수명(모두 동일한 타입을 갖는 상수값) 의 형식으로 수행됩니다. 상수명1(상수값), 상수명2(상수값), ... ☑️ 여러개 할당 여러개 상수값 중 첫째 상수와 나머지 상수는 각각의 상수값 수가 동일해야 합니다. 상수값이 선언된 위치별로 타입을 다르게 하지만, 같은 위치의 상수는 모두 같은 타입을 가져..

[Java] enum 열거형 정리

Enum 열거형? 1) 이넘(enum)은 열거형을 의미합니다. 상수를 모아서 클래스같이 만들어주는 멋진 기능입니다. 상수가 가지는 특징이 값이 한번 정해지면 변하지 않는 것입니다. 따라서, 열거형에 있는 상수도 값의 변경이 불가능합니다. 2) 인터페이스와 클래스의 중간 단계 형태를 가집니다. 인터페이스 : 추상자료형으로 구현할 동작을 지정합니다. 클래스 : 객체들을 모은 설계도이고, 실제 구현이 이루어집니다. 3) 객체처럼 선언하고 사용가능합니다. 4) 열거형을 사용하지 않는다면? - 관련된 상수를 하나씩 모두 정의해야하고, 사용하더라도 Value로서 역할만 합니다. - 가령 1년에 속한 월 이름에 대해 상수로 값을 넣어준다고 하면, 아래와 같이 코드를 작성합니다. - 번거롭고 불편합니다. public ..

[Java] Collections

많은 양의 데이터 혹은 데이터 그룹에 대해서 표준화된 프로그래밍 방식을 제공해주는 클래스의 집합 다양한 종류의 데이터들을 다룰 수 있게 클래스를 제공해줍니다. (List, Map, Set 등) 핵심 인터페이스 1. List : 순서가 있는 데이터의 집합입니다. 데이터의 중복을 허용합니다. ArrayList, LinkedList, Vector(구버전 원형), Stack 등이 있습니다. 2. Map : Key와 Value의 쌍으로 구성된 데이터의 집합입니다. Key의 중복이 허용되지 않습니다. Value는 중복이 가능합니다. HashMap, HashTable, TreeMap 등이 있습니다. 3. Set : 순서도 없지만 Value의 중복을 허용하지 않는 데이터의 집합입니다. HashSet, TreeSet 등..

[Java] 인스턴스화

"인스턴스화란 무엇인가?" 설계도에 대한 부품을 만들어주는 작업입니다. new + 생성자 형태로 만들 수 있습니다. 생성자도 메소드 중 하나이며, 메소드 오버로딩을 통해 다양한 생성자를 정의할 수 있습니다. 생성자의 명칭은 클래스명과 동일해야 하고, 이를 제외한 메소드는 클래스명과 달라야 합니다. 같으면 에러가 발생합니다. 또한, 생성자는 기본생성자와 매개변수가 있는 생성자로 나누어집니다. 1. 기본생성자 Bird bird = new Bird(); 매개변수가 없는 생성자가 기본생성자이고, 따로 정의하지 않아도 바로 사용할 수 있습니다. 2. 매개변수가 있는 생성자 public 클래스명(타입 매개변수1, 타입 매개변수2, ...) { //매개변수로 멤버변수를 초기화 } 생성자는 객체를 만들고 멤버변수를 초..

[Java] 클래스와 상속

클래스 (class) 클래스는 설계도입니다. 자바는 객체지향언어로, 설계도를 잘 만들고, 그대로 부품을 만들고 조립해서 프로그램을 만듭니다. 그러나 이걸 실질적으로 사용하는 데에는 약간의 어려움이 있습니다. 이해를 위해서는 직접 만들어보는게 좋았습니다. 1. Animal 클래스 만들기 이 클래스에는 멤버변수로 age, size, legCnt, hasWing을 만들었습니다. 부모클래스로 생성하고, 하위 클래스(자식클래스)도 만듭니다. public class Animal { public int age; public int size; public int legCnt; public boolean hasWing; public Animal() { } public Animal(int age, int size, int..

[Java] Unhandled exception type IOException

Java 컴파일 에러1. IOException 주로 System.in.read(); 메서드를 사용하면 나타나는 에러이다. Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unhandled exception type IOException at javaclass.main(javaclass.java:9) 이를 수정하는 방법은 다음과 같다. 1. 예외허용 라이브러리 추가 java.io.IOException 라이브러리를 추가 throws IOException import java.io.IOException; public class javaclass { public static void main(String[] args) thr..

[Java] 기초

자바(Java) - Java는 썬 마이크로 시스템즈에서 개발한 언어로, 객체지향 언어라고 할 수 있다. - 클래스를 만들고, 클래스에서 요구하는 객체를 만들어 프로그램을 조립해서 완성하는 방식을 가진다. 자바와 관련된 용어 JDK(Java Development Kit): 자바로 개발할 수 있는 환경을 제공해주는 키트 Java Compiler, JRE 포함 JRE(Java Runtime Environment): 자바 프로그램을 실행할 수 있는 환경 자바 클래스 라이브러리 : 자바에서 제공해주는 클래스들의 집합, 자바에서 기본으로 제공하는 설계도 모음 자바 클래스 로더(Java Class Loader) : 자바 프로그램을 구동할 때 필요한 클래스를 JVM에 올린다. JVM (Java Virtual Machi..