본문 바로가기

Data Science/Database Programming

Ⅲ Java

 

 

JAVA 기본 문법 2024.03.14.THU

Java JDK & Eclipse 설치 2024.03.19.TUE

JSP 실행을 위해 Eclipse Java EE IDE (웹프로그래밍까지 가능한 버전)

 

사용할 버전: Java 8.0(2020.08), Eclipse 2020.06

지난 시간 설치: MySQL, SQLGate for MySQL Developer

 

별도_폴더에 넣어야 하는 파일: 

 

mysql-connector-java-8.0.29_JDBC.jar
2.40MB
ojdbc8_Oracle.jar
4.19MB

 

 

 

 

1. 자바 기초 문법

더보기


1. 자바의 기초 문법

  ㅇ 문자 코드
     - 유니코드(UTF-16) 사용

  ㅇ 명명규칙 (변수 이름, 클래스 이름, 메소드 이름 등 식별자/Identifier)   ☞ 작명 관례 참조
     - 대소문자 구분
     - 길이 제한 없음
     - 키워드(예약어) 사용 안됨
     - 시작 문자로 영문자 만 가능 (숫자로 시작하면 안됨)
     - 특수 문자로는 `_`와 `$` 만 허용
     * (즉, 문자,숫자,_,$의 나열로써 숫자로 시작하지 않는 문자열)

  ㅇ 문장
     - 항상 세미콜론(;)으로 끝남
     - 같은 줄에 여러 명령문도 가능

  ㅇ 주석
     - 한 줄 주석 : //
     - 블록 주석  : /*  */


2. 자바의 키워드 (예약어)

  ㅇ 데이터타입 : byte, short, int, long, char, boolean, float, double, true, false, null
  ㅇ 제어문 : if, else, for, while, do, switch, case, default
  ㅇ 분기문 : break, continue, goto, return, throw
  ㅇ 클래스/객체 : class, interface, new, instanceof, this, super, extends, implements,
                         package, import
  ㅇ 수식자 : final, abstract, static, synchronized, transient, volatile, native, strictfp, 접근제한자
  ㅇ 접근 제한자 : private, protected, public
  ㅇ 예외 : try, catch 등
  ㅇ 기타
     - assert, 
     - const, 
     - enum, finally
     - thorws, void, ...


3. 자바의 연산자

  ㅇ 연산자 종류
     - 산술 연산자 : +, -, *, /, %, <<, >>
     - 비교 연산자 : >, <. >=, <=, ==, !=
     - 논리 연산자 : &&, ||, !, &, |, ^, ~
     - 대입 연산자 : =
     - 삼항 연산자 : ? :
     - 형변환 연산자 : (type)
     - 기타 : instanceof 

  ㅇ 연산자 우선순위
     - 산술 연산자 : *, /, % 이  +, - 보다 우선 적용
     - 논리 연산자 : ! 이 가장 높고, &&, || 이 그 다음에 적용


4.  출력 표시
     - System.out.println()

 

 

 

2. 자바 자료형

더보기

1. [자바]  변수,자료형 특징

  ㅇ 자바 언어는, (Strongly Typed Language)
     - 안정성,강건성을 위해 변수 및 자료형에 대한 강한 규제가 존재함 
     - 예로써,
        . 다른 데이터형 변수에 다른 데이터형의 데이터를 넣을 수 없음
        . 전역 변수를 지원하지 않는 등                                    ☞ 변수 종류 참조

  ㅇ 또한, 정적 타입 언어로써,
     - 변수 선언시에 타입을 반드시 명기하고, 
        . 컴파일시에 타입의 정합성을 검증 함
     - 한편, 동적 타입 언어는, (例, 자바스크립트,Ruby 등)
        . 변수 선언시에 타입이 명확하지 않고, 실행시에 비로소 타입이 정해짐


2. [자바]  자료형 구분 

  ㅇ 기본 자료형 (Primitive Data Type) : 변수 값 저장
     - 문자형 : char (2 바이트)
        . 컴퓨터 내 문자의 유니코드(UTF-16)에 의해 정수값으로 표현됨 
        . 때론, 산술 연산이 가능한 정수형으로도 분류되나, 음수값 표현은 불가능
     - 정수형 :  byte (1), short (2), int (4), long (8 바이트)
        . 산술 연산 가능
        . 여기서, short (2)은, 위 문자형 char (2)와 바이트 크기는 같으나,
           .. 부호가 있어서, 수 표현 범위가 다름 (short (2) : -32768 ~ 32767)
     - 실수형(부동소수점형) : float (4), double (8 바이트)
        . 산술 연산 가능
     - 논리형 : boolean (1 바이트)
        . 논리 연산 가능

     * 한편, 
        . 자바 언어는, 자료형 크기(바이트) 자체를 언어에서 직접 고정시킴
        . 다른 언어는, 자료형 크기(바이트) 결정을 컴파일러에 맡겨짐
 
  ㅇ 참조 자료형 (Reference Data Type)/추상 자료형 (Abstract Data Type) : 객체 위치 저장
     - 클래스형 (Class Type)
        . 이미 JDK에서 제공하는 것으로는, String, Date 등이 있음
     - 인터페이스형 (Interface Type)
     - 배열형 (Array Type)
        . 동일 타입 변수들이 나열된 집합
        . 배열형 선언 및 초기화  :  자료형 배열명 = {값1,값2,...};
           .. 例) 1차원 배열 선언 및 초기화  :  int arr[] = new int[3];
           .. 例) 다차원 배열 선언  :  int[][] arr; 또는 int arr[][];


3. [자바]  자료형별 디폴트 값

  ㅇ 숫자 타입 => 0
  ㅇ Boolean 타입 => false
  ㅇ 참조 자료형 => null


4. [자바]  변수의 종류 (변수가 선언되는 위치에 따라서 구분)

  ㅇ 인스턴스 변수 (멤버 필드, 멤버 변수)
     - 메소드의 정의문 밖에서 선언되고 정의됨
        . 객체의 속성을 나타내거나 이를 정의하는데 쓰임
        . 통상, 클래스 정의문 바로 아래(처음 줄)에서 정의됨 
     - 즉, 어떤 클래스에 소속되어 있는 것

  ㅇ 지역 변수 (로컬 변수)
     - 메소드 정의 내에서만 의미를 갖게 됨
        . 메소드 정의문 안에서 쓰이거나, 메소드 내 블록 구문 안에서도 쓰임
     - 즉, 어떤 메소드에 소속되어 있는 것

  ㅇ 클래스 변수
     - 클래스 구현 객체 각각에서 다르게 적용되는 것이 아니고,
       클래스 전체에 걸쳐 동일하게 적용이 되는 변수
     - 문법 구문으로 볼 때, 클래스 내부에 static 이라는 키워드와 함께 선언되는 변수

 

 

3. 자바 클래스

더보기

1. 자바 클래스

  ㅇ 자바 언어는, 완전한 객체지향 언어임
     - 모든 것을 객체로 표현하고, 객체를 조립해가며 프로그램을 완성하게 됨

  ㅇ 사실상, 자바 언어로된 프로그램은, 곧 자바 클래스 모음 임
     - (자바 프로그램 = 클래스 모음)
        . 클래스 내부에, 모든 프로그램 요소들이 있어야 하며,
        . 클래스 외부에는, package 선언,import 문장 외에 아무 것도 쓰지 못함


2. 자바 클래스 정의 문법

     (접근 제어자) class 클래스명 {
     멤버 변수;
     메소드;
}

  ㅇ 접근 제어자 (Access Modifier)    ☞ 수식자(Modifier)참조
     - 다른 클래스로부터의 접근 허용 정도를 제어하는 것
  ㅇ class : 클래스 이름 및 코드 작성이 시작됨을 컴파일러에게 알려주는 키워드
  ㅇ 클래스명 : 자바 명명규칙 참조
  ㅇ { 멤버변수; 메소드; } : 대부분의 프로그램 요소가 이 안에 포함됨


3. 자바 프로그램/애플리케이션

  ㅇ (public 클래스)
     - 하나의 자바 애플리케이션 소스 파일 내에, 여러 클래스가 있을 수 있지만,
        . public 클래스는 단 하나이어야 하고,
        . public 클래스 이름과 자바 소스 파일(xx.java) 이름은 같아야 함
           .. 만일, 자바 소스 파일 내 public 클래스가 없으면, 
           .. 자바 소스 파일 이름은 소스 파일 내 어떤 클래스 이름이라도 괜찮음
           .. 또한, 소스 파일명은, 클래스 명칭 상의 대소문자 구분도 그대로 따라야 함

  ㅇ (실행 시작점)
     - 자바 프로그램은, 항상 main 메소드에서 시작함 
     - 작성된 자바 프로그램을 실행하려면, 
        . java 다음에 main 메소드를 포함하는 클래스의 이름을 적어주면 됨

  ㅇ 例)
      import java.xxx.xxx; //자바 라이브러리 사용 등록

public class test {  // 코드는 반드시 test.java 파일 내 있음 (클래스명 = 파일명)
    public static int otherMethod() {
        xxxx;
        ....
    }

    public static void main() {  // 항상 main 메소드가 실행 시작점임
        xxxx;
        ....
    }
}

 

 

4. Method , Behavoir   메소드, 메서드, 동작 (Behavoir)

더보기

1. 메소드 (Method)

  ㅇ `행동할 동작`을 정의한 지시어 또는 그들의 모음
     - 例) HTTP 메소드, SIP 메소드 등


2. [객체지향]  `메소드(Method)` or `동작/행위(Behavior)` or `멤버 함수`

  ㅇ 객체의 수행 가능한 작업/조작
     - 객체가 처리 메세지를 받고, 수행할 구체적인 연산
        . 객체 상태 및 속성의 확인,변경 등이 이루어짐

  ㅇ 객체  =  프로퍼티  (변수,속성,성질)  +   메소드 (처리방법,행동,동작)
           =  데이터 멤버 (멤버 변수)     +   멤버 함수


3. [객체지향]  메소드 특징

  ㅇ 함수와 비슷
     - 기존의 프로그래밍 언어에서 볼때 함수와 비슷함
        . 즉, 객체 내의 함수 또는 객체 내부에 내장된 함수

     - 만일, 프로퍼티 중 값이 함수가 되면 이를 메소드라고함

     - 한편, 광의로 메소드도 또한 프로퍼티의 일종으로 보기도 함

     - [참고]
        . Java,C++ 언어에서는, 객체 내 프로퍼티,메소드를 별개로 다루나,
        . 자바스크립트에서는, 메소드를 함수 값을 갖는 또하나의 프로퍼티로써 취급함

  ㅇ 다양한 기능 수행
     - 객체가 속하는 클래스를 정의하면, 그 객체에 메소드(멤버함수)를 통해 접근 가능하며,
     - 주어진 클래스 객체의 프로퍼티 접근, 속성,값 변경 등 다양한 기능을 메소드를 통함

  ㅇ 상세 수행이 보이지 않음
     - 외부에서 객체 메서드를 호출할 때, 
     - 그 내용이 내부적으로 어떻게 구성되었는지는 정확하게 알 수 없음


4. [객체지향/자바언어]  메소드 선언 문법

  ㅇ 형식 : < 수식자 > < 반환 타입 > < 메소드명 > ( < 인수 타입 > < 인수명 >, ... ) { // 메소드 본체 }
     - 수식자 ☞ 수식자(Modifier) 참조
        . 例) public, static, final 등
     - 반환 타입
        . 반환 값 없는 경우에는, void 를 지정
     - 메소드명 ☞ 명명규칙 참조
     - 인수는, 
        . 타입과 명칭의 쌍으로 선언하며
        . 메소드 호출시에, 값을 인수로써 건넬 수 있음

  ㅇ 한편, main 메소드 는,
     - 자바 프로그램 실행시, 호출 시작점이 되는 특수한 메소드로써, 
     - 자바 프로그램에는 반드시 존재해야 함
     - 例) public static void main(String... arg) { }


5. [객체지향/자바언어]  정적 메소드, 인스턴스 메소드 비교

  ㅇ 정적 메소드
     - 클래스를 인스턴스화하지 않고서도 호출할 수 있는 특수한 메소드
        . 어떤 단일 인스턴스화된 하나의 객체로는 할 수 없는,
        . 하나의 클래스 그 자체와 관련된 작업을 할 때 유용
     - 흔히, 함수 라고도 하며, C 언어의 C 함수 처럼 동작 

  ㅇ 인스턴스 메소드
     - 클래스로부터 생성된 객체/인스턴스의 메소드
        . 인스턴스에 종속된 메소드

 

 

5. Access Modifier   접근 제한자, 접근 수정자, 접근 제어자

더보기

1. [객체지향언어]  수식자/제한자/한정자/변경자 (Modifier)

  ㅇ `클래스` 또는 `클래스 내 메소드,프로퍼티` 앞에 붙여,
     - 다른 객체에게 노출되는 정도에 대한 보호 수준을 결정하는 수식자/제한자/한정자/변경자

  ㅇ 한편, 이렇게 클래스,객체 등의 단위로 묶어서 변수 및 메소드를 보호하는 것을,
     - 정보은폐(Information Hiding) 또는 캡슐화(Encapsulation) 라고 함


2. [자바언어]  제한자/수식자 (Modifier) 종별

  ㅇ 접근 제한자 : public, protected, private
     - 클래스,메소드,필드 등에 대해 접근 범위(가시성)를 제한 지정
        . public    : 자신을 포함하여 모든 객체에 접근 가능
        . protected : 클래스 멤버 함수 또는 현재 클래스를 상속받은 클래스에서 접근 가능
           .. 같은 패키지(폴더)에 있는 클래스와 상속관계의 객체들 만 가능
        . private   : 같은 클래스 내 멤버 함수 또는 멤버 변수 만이 접근 가능
        . default   : 같은 패키지(폴더)에 있는 클래스들 만 접근 가능

  ㅇ abstract 수식자 : 클래스,인터페이스,메소드가 추상적임을 알림
     - 추상 메소드 : 메소드 선언 만 있고, 본체(내용 정의) 없는 함수 원형과 같은 것
     - 추상 클래스 : 추상 메소드를 갖고 있어, 객체/인스턴스를 직접 생성할 수 없음
     - 추상 인터페이스 : 반드시 추상 메소드를 정의하기 때문에, 굳이 지정 불필요

  ㅇ native 수식자

  ㅇ static 수식자
     - 클래스가 인스턴스화되지 않아도 접근 가능

  ㅇ final 수식자
     - final 클래스 : 기존 클래스로부터 새로운 서브(확장) 클래스를 만들 수 없음
     - final 메소드 : 서브 클래스에서 메소드 변경이 금지됨 (즉, 오버라이드를 금지하는 것)
     - final 필드   : 그 필드의 값이 변경되는 것을 금지

  ㅇ transient 수식자
     - 객체의 직렬화시에 해당 필드를 직렬화 대상에서 제외
     - 직렬화이란, 인스턴스화된 객체를 바이트 열로 변환하는 것을 말함

  ㅇ volatile 수식자

  ㅇ synchronized 수식자

  ※ 수식자 사용 대상 (아래 각각을 정의시에 명시하게 됨)
     - 클래스 : public, default, final, abstract
     - 생성자 : public, protected, default, private
     - 멤버 변수 : public, protected, default, private, static, final, transient
     - 멤버 메소드 : public, protected, default, private, static, abstract, final
     - 지역 변수 : 접근제한자(public,protected,private)는 사용 불허

 

 

 

ktword.co.kr

 

 

6. 데이터베이스 프로그래밍 환경 구축 작업 - Java

① jdk 설치

▪ JDK 다운로드
    • http://java.sun.com/ 에서 여러 가능한 버전 중 다운로드
    • LMS 의 학습 자료실에서 다운로드 또는 배포한 USB에서 복사 가능

    % 주의사항: 수업에서는 라이선스 문제로 인해 JDK1.8 버전 사용함

▪ JDK 설치
   • jdk-8u202-windows-x64.exe 실행
   • JDK 설치 폴더 확인 - C:\Program Files\Java\jre8

     (다른 버전 사용시 여러 문제 발생하므로 수업에서 1.8버전 사용 권장)

 


② Java 개발툴 Eclipse 설치

▪ dbp 폴더 생성
▪ Eclipse 설치 압축파일 다운로드 및 설치
   • http://www.eclipse.org에서 Eclipse IDE for Java EE(enterprise edition)   
     64비트용 다운로드(LMS에서 다운로드 또는 배포한 USB에서 복사 가능)
   • dbp 폴더에 압축 풀어 eclipse 설치하고 바로가기 생성하여 복사 
▪ Eclipse workspace 설정
   • dbp 폴더에 workspace 폴더 생성
   • Eclipse의 workspace를 dbp/workspace로 설정
▪ Eclipse installed JREs 확인 및 jre8 설정
   • Eclipse의 window -> preferences -> Java -> Installed JREs 
   • Installed JREs가 jre8이 아니면 
      (1) add 클릭하여 Add JRE 창의 JRE home에서 JDK 1.8의 JRE 폴더
           C:\Program Files\Java\jre8)를 찾아 Finish 클릭하여 등록
      (2) Installed JREs 중에서 jre8을 체크하여 선택한 후 Ok 클릭
 
Java 개발툴 Eclipse 설치
▪ Eclipse 실행했을 때 node.js 미설치 오류 발생 시 대처
 • “java 기초” 폴더의 “node-v13.14.0-x64.msi” 더블 클릭하여 실행하면 다음 Eclipse 실행부터 이 오류 메시지 없어짐

 


③ JDBC 드라이브 설치 

▪ MySQL용 JDBC 드라이브의 설치 
    Java기초 폴더의 mysql-connector-java- 8.0.15.jar를 
          c:/Program Files/Java/jre8/lib/ext 폴더에 저장

▪ Oracle용 JDBC 드라이브의 설치 
    Java기초 폴더의 ojdbc8.jar를 
         c:/Program Files/Java/jre8/lib/ext 폴더에 저장

 

④ Java 프로그램 실습

▪ Java 기초 강의자료의 프로그램 실행 및 확인  
   (1) 소스 프로그램은 java기초/javaEx 폴더에 있음

   (2) Eclipse에서 ‘java기초/javaEx ‘폴더를 import
       (import existing project into workspace 이용하여 
        import)

   (3) javaEx 프로젝트 내의 각 Java 프로그램 수행

 

 

 

 

 

 

 

 

 

 

 

 

 

'Data Science > Database Programming' 카테고리의 다른 글

Ⅴ FORM-HTML, 2주차 실습  (0) 2024.04.02
Ⅳ JDBC : Java Database Connectivity, Test  (0) 2024.03.21
Ⅱ MySQL  (0) 2024.03.12
Ⅰ 관계 데이터베이스 기초  (0) 2024.03.07
데이터베이스 프로그래밍 개요  (0) 2024.03.05