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
별도_폴더에 넣어야 하는 파일:
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 |