본문 바로가기

Java

(11)
JDBC가 뭐지? 오늘은 JAVA 애플리케이션을 개발할 때 꼭 쓰게 되는 JDBC에 대해서 알아보겠다. JDBC가 뭐지? 아주 간단히 말하면 JAVA 애플리케이션에서 DATABASE에 접속할 수 있도록 도와주는 API이다. 이 JDBC는 처음 썬마이크로즈에서 JDK 1.1을 출시했을 때 일부로 같이 출시하였다고 한다. 현재 JAVA의 javax.sql 패키지에 포함되어 있다. 다시 설명하면, JDBC는 테이블 형식의 데이터(특히 관계형 테이터베이스) 에 접근하게 해준다. JDBC는 아래 세가지의 역할을 한다. 1. datasource에 연결해준다. 2. 쿼리를 보내고, 명령문을 데이터베이스에 업데이트해준다. 3. 우리가 보낸 쿼리를 데이터 베이스가 처리하고 그에 대한 처리결과를 알려준다. 다음 짦은 예시가 소개한 세가지를..
컬렉션을 쓰는 이유 오늘은 컬렉션에 대해서 알아보겠다. 그러려면 우선 Collection이 뭔지부터 알아보자. 오늘도 equals 포스팅과 같이 내가 궁금했던 점들을 물음표 형식으로 풀어나갈 것이다. Collection이 뭔가? 단순히 말하자면 데이터 묶음이다. 그냥 단순한 데이터 묶음은 아니고, 데이터를 저장하고, 검색하고 처리한다. 그럼 Collection Framework는 뭐지? 효과적으로 데이터를 처리하기 위한 통일된 아키텍쳐라고 볼 수 있다. 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 아래 구성요소로 제공해준다. 모든 collection framework은 다음과 같이 구성되어 있다. Interfaces: 컬렉션을 표현하는 추상적인 데이터 타입이다. 자체적으로 데이터가 처리되는 컬렉션들이 이 안에 ..
equals와 hashcode는 왜쓰는거지? 오늘은 java Object의 메소드 equals와 hashcode에 대해서 알아보겠다. 1. Equals()는 뭐하는 메서드인가? 이름에서부터 눈치챘겠지만 매개변수로 들어오는 객체와 자신의 객체가 같은지 비교하는 기능을 한다. Object의 메서드 구현부를 살펴보자. 오.. 별거 없다. 그냥 같은 참조값인지 비교한다. 참조변수 두개를 '==' 연산자로 비교하면 참조값이 같은지의 여부를 반환한다. 이렇게 우리가 만드는 객체에서 equals를 사용하면 기본으로 참조가 같은지의 결과값을 반환하게 된다. 하지만 난 참조값 같은지보다 객체의 필드가 모두 같으면 같은 객체로 보고 싶은데? 그럼 오버라이딩으로 해당 객체에 맞게 구현하면 된다. class Person { String name; int age; pub..
[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..
[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' ..