📌 Java 문법 기초
📌 Java 프로그램의 문 작성에 대한 약속과 예약어(키워드)
-
소문자와 대문자를 구별하여 사용
ex. IF, if, If, iF는 서로 다름 (Java에서는 소문자 if를 사용함)
-
특수문자 사용 주의
▶️ 프로그램 작성 시 워드프로세서를 사용하지 말고 메모장과 같은 텍스트 편집기를 사용함
1 ) 전각 스페이스 사용 : 문서 편집기(워드 프로세서)를 사용해 프로그램 작성 시, 일반 스페이스가 아닌 특수문자 (전각) 스페이스가 들어가면 찾기 어려움
2 ) "(이중 따옴표)의 사용 : 문서 편집기를 사용해서 프로그램 작성시 "(이중 따옴표)와 "(이중 따옴표) 등의 문자는 코드가 다름
-
코드 설명을 위한 주석(comment)은 /**/
이나 //
를 사용
1 ) /**/
의 사용
- 프로그램 코드를 설명하기 위해서 넣는 주석은 사이에 쓸 수 있음
- 반드시 슬래시와 별표는 붙여서 씀
- 실행코드(바이트 코드)로 변환되지 않음
2 ) //
의 사용
3 ) /***/
주석
- 자바의 고유한 문서(document) 주석이며 사용자 정의 문서(document) API를 만들 때 사용하므로, 일반적인 프로그램을 작성할 때는 사용하지 않는 것이 좋음
-
예약어(reserved word, keyword) 사용에 주의
- 예약어는 Java 언어 문법에서 특별한 의미를 갖는 키워드임
- 예약어가 가지고 있는 각각의 역할 외에 다른 목적으로 사용할 수 없음
- 예약어는 ASCII 코드로 이루어진 다음의 문자열임
- 예약어의 종류
- abstract
- assert
- boolean
- break
- byte
- case
- catch
- char
- class
- const
- continue
- default
- do
- double
- else
- enum
- extends
- final
- finally
- float
- for
- if
- goto
- implements
- import
- instanceof
- int
- interface
- long
- native
- new
- package
- private
- protected
- public
- return
- short
- static
- strictfp
- super
- switch
- synchronized
- this
- throw
- throws
- transient
- try
- void
- volatile
- while
- 예약어로 분류할 수도 있는 3가지
- false
- true
- null
📌 콘솔 창에 문자열 출력을 위한 방법(메소드 : method)
- 자바 프로그램에서 문자열을 표시하기 위해서는 print() 또는 println() 메소드를 사용
- 해당 메소드 앞에 System.out.을 붙임
- println() 메소드는 문자열을 출력한 후 다음 줄로 이동함
- print() 메소드는 문자열을 출력한 후 다음 줄로 이동하지 않음
- C언어의 printf 함수와 유사함
- 하나의 명령문이 되도록 문이 끝나는 자리에 ';' 세미콜론을 꼭 넣어야함
- print() 메소드에서 문자열 내에 줄바꿈 제어문자(₩n)의 사용
- 한글 운영체제에서는 back slash()가 원화(₩) 기호로 표시됨
💡 기타 제어문자
특수문자 | 제어문자 | 의미 |
---|
Tab | ₩t | 지정된 탭만큼 이동 |
Backspace | ₩b | 뒤로 한 문자만큼 이동 |
Form Feed | ₩f | 다음 페이지로 이동 |
New Line | ₩n | 새로운 줄로 이동 |
Carriage Return | ₩r | 현재 줄의 맨 앞으로 이동 |
Back slash | ₩₩ | 역슬래시 |
Sing Quotation Mark | ₩' | 단일 따옴표 |
Sing Quotation Mark | ₩" | 이중 따옴표 |
Unicode | ₩u유니코드 | 유니코드에 해당하는 문자(ex. A = 0041) |
- 유니코드를 사용할 때에는 u를 넣고 코드번호를 입력해야함
📌 코드 페이지(Code Page)
- MS-DOS와 같은 운영체제들에서 쓰였으며 박스 형태의 문자를 많이 포함하고 있음
- 윈도우즈 운영체제에서는 명령 프롬프트 창에서 코드 페이지를 사용함
- 코드 페이지를 바꾸려면 명령 프롬프트 창에서 chcp 코드 페이지 번호 명령어를 사용함
- 명령 프롬프트 창에서 코드 페이지와 인코드 종류에 따라 한글/한자를 올바르게 볼 수 없음
코드 페이지 번호 | 언어 |
---|
437 | 영어 |
949 | 한국어 |
65001 | UTF-8 유니코드 |
📌 Hello.java 코드 설명
지난 시간에 입력했던 java 코드에 대한 간단한 설명 = 주석표기
- println()을 사용하려면 'System.out.'을 반드시 사용해야 함
class Hello
{
public static void main(String[] args)
{
System.out.println("Hello Java!");
}
}
📌 자바 프로그램의 기본 형태
- Java 프로그램의 main 메소드(mathod)를 포함하는 클래스명은 파일명(확장자는 제외)과 동일하게 지정
- 클래스명이 Hello인 경우 파일명은 Hello.java
- main 메소드(함수)는 프로그램 실행 시작점을 의미\
- C언어와 유사한 코드로 표현한 main 함수를 파일 이름의 class로 한번 더 포장했다고 이해할 수 있음
- C언어의 프로그램은 반드시 하나의 main 함수를 가짐
- main 함수는 프로그램을 시작하는 지점
📌 객체지향
📌 객체지향(Object oriented)
객체는 효율적으로 정보를 관리하기 위하여 실세계에 존재하는 하나의 단위에 대해 의미를 부여하고 분류하는 논리적인(개념적인) 단위
- 객체를 구현하는 방법으로 java에서는 클래스를 사용하며 객체 속성의 값을 나타내는 데이터(멤버:member)와 데이터를 조작할 수 있는 메소드(mathod, 방법) 으로 구성됨
- 단순하게 말하면 클래스는 데이터와 그 데이터를 동작시키는 메소드를 함께 묶어놓은 것임
- 클래스는 C언어의 구조체에 함수(function)를 포함시킨 것과 유사하다고 단순하게 생각할 수도 있음
📌 C언어의 구조체
여러 자료형을 내포하는 형태를 갖도록 프로그래머가 정의하는 자료형
📌 객체지향의 개념
- 전통적인 패러다임 : 데이터가 있으면 데이터를 조작하기 위한 함수들을 따로 두고 처리
- 객체지향 패러다임 : 데이터를 처리하기 위한 함수, 방법, 메소드를 묶어서 처리
📌 객체지향 프로그래밍 언어의 특징
- 추상화(abstraction) 및 캡슐화(encapsulation)
- 상속(inheritance)
- 다형성(polymorphism)
📌 추상화와 캡슐화
- 자료 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로서 프로그램을 간단하게 함
- 추상 자료형은 자료형의 자료 표현과 자료형의 연산을 캡슐화한 것으로 접근 제어(보안성) 를 통해서 자료형의 정보를 은닉할 수 있음
📌 상속
- 상속은 새로운 클래스가 기존 클래스의 자료와 연산을 이용할 수 있게 하는 기능
- 상속을 받는 새로운 클래스를 부(서브)클래스, 파생 클래스, 하위 클래스, 자식 클래스라고 하며 새로운 클래스가 상속하는 기존의 클래스를 기반 클래스, 상위 클래스, 부모 클래스라고 함
- 상속을 통해서 기존의 클래스를 상속받은 하위 클래스를 이용해 프로그램의 요구에 맞추어 클래스를 수정할 수 있고 클래스 간의 종속 관계를 형성함으로서 객체를 조직화할 수 있음
📌 다형성
- 다형성 개념이란 어떤 한 요소에 여러 개념을 넣어 놓는 것으로 일반적으로 오버라이딩(같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것)이나 오버로딩(같은 이름의 메소드가 인자의 개수나 자료형에 따라서 다른 기능을 하는 것)을 의미함
- 다형 개념을 통해 프로그램 안의 객체 간의 관계를 조직적으로 나타낼 수 있음
📍 오버라이딩 = 재정의
📍 오버로딩 = 중복정의
📌 C++(C-like)언어에서의 객체지향 예
- 데이터와 자료를 처리하는 함수, 메소드, 방법을 CLASS로 묶겠다는 것
📌 클래스와 인스턴스
- 클래스는 자료형(Data Type)에 해당하고 인스턴스(Instance)는 변수에 해당함
📌 자료형(Data Type)
자료의 성질에 따라 형식을 구분한 것
📌 변수(Variable)
수치나 문자 등을 담아두는 상자(메모리)와 같은 것
int a = 10;
📌 상수(constant)
십진수 123, 문자'a', 문자열 'ABC'등과 같이 변하지 않는 값
📌 객체, 클래스, 인스턴스의 예
자전거 = 객체 = 변수
설계 및 기능 = 자료형 = 클래스
📌 변수 선언과 대입
- 변수를 선언할 때에는 자료형 다음에 한 칸 이상 빈칸을 띄고 변수명을 표시
- 문 뒤에는 반드시 세미콜론 ';'을 표시
- 자료형 int는 integer(정수)의 줄임말
- 변수명은 영문자, 한글, 특수문자 '_'와 '$'로 시작
- 변수명은 숫자로 시작할 수 없음
- 변수명은 예약어를 사용할 수 없음
- 변수명 사이에 빈칸이 있으면 안됨
올바른 변수명 : a, B, Num, x1, _hi, $zero, 변수1
잘못된 변수명 : 1a, int, N m, @bye
📌 변수 선언과 대입 예
int a;
- 정수(integer, 인티저)값이 들어가는 a라는 이름의 변수를 준비한다. 이것을 'int형 변수 a를 선언한다'고 한다.
변수명(a) : 첫 글자는 숫자가 올 수 없음
변수 : 값을 넣기 위한 상자와 같은 것
형(int) : 어떤 종류의 변수를 만들 것인지 지정
a = 2;
- int형으로 만들어진 변수 a에 2라는 값을 넣는다. 이것을 '변수 a에 2를 대입한다'고 한다.
📌 변수 표시하기
- C언어와 달리 변수는 초기값이 필요함
- 변수의 초기값을 대입하지 않으면 컴파일 시 에러가 발생함
class Data1 {
public static void main {
int a;
int b;
a = 2;
b = 3;
a = b;
System.out.println(a);
}
}
- 변수를 사용하기 전에 자료형에 따른 변수를 선언함
- 정수형 변수 a와 b를 선언함
- 변수에 숫자(또는 변수의 값)를 대입하기 위해 '='를 사용함
📌 선언의 방법
int a; int b; a = 2; b = 3;
- 문(Statement)은 세미콜론 ';'으로 구분되며 한 줄에 여러 문을 표시할 수 있음
int a, b;
- 동일한 자료형 변수들을 선언할 때는 자료형 뒤에 변수명을 쉼표 ','로 구분해서 나열할 수 있음
int a = 2;
int b = 3;
- 변수를 선언하면서 값을 대입할 수 있으며, "변수를 초기화 시킨다"라고 함
int a = 2, b = 3;