Java : 반드시 알아야하는 기본 지식

커비·2024년 10월 15일
0

Java

목록 보기
2/55
post-thumbnail

📌 Java 문법 기초

📌 Java 프로그램의 문 작성에 대한 약속과 예약어(키워드)

  1. 소문자와 대문자를 구별하여 사용
    ex. IF, if, If, iF는 서로 다름 (Java에서는 소문자 if를 사용함)

  2. 특수문자 사용 주의
    ▶️ 프로그램 작성 시 워드프로세서를 사용하지 말고 메모장과 같은 텍스트 편집기를 사용함
    1 ) 전각 스페이스 사용 : 문서 편집기(워드 프로세서)를 사용해 프로그램 작성 시, 일반 스페이스가 아닌 특수문자 (전각) 스페이스가 들어가면 찾기 어려움

    2 ) "(이중 따옴표)의 사용 : 문서 편집기를 사용해서 프로그램 작성시 "(이중 따옴표)와 "(이중 따옴표) 등의 문자는 코드가 다름

  3. 코드 설명을 위한 주석(comment)은 /**/ 이나 // 를 사용

    1 ) /**/ 의 사용

    • 프로그램 코드를 설명하기 위해서 넣는 주석은 사이에 쓸 수 있음
    • 반드시 슬래시와 별표는 붙여서 씀
    • 실행코드(바이트 코드)로 변환되지 않음

    2 ) // 의 사용

    • 한 줄 주석할 때 사용하는 코드

    3 ) /***/ 주석

    • 자바의 고유한 문서(document) 주석이며 사용자 정의 문서(document) API를 만들 때 사용하므로, 일반적인 프로그램을 작성할 때는 사용하지 않는 것이 좋음
  4. 예약어(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한국어
65001UTF-8 유니코드

📌 Hello.java 코드 설명

지난 시간에 입력했던 java 코드에 대한 간단한 설명 = 주석표기

  • println()을 사용하려면 'System.out.'을 반드시 사용해야 함
// Hello.java
// 확장자를 제외한 파일명과 실행 클래스명은 대소문자까지 동일

class Hello // 클래스명 : Hello
{           // 클래스 시작
    public static void main(String[] args)   // main 메소드(방법)
    { 									   	// main 메소드 시작
        System.out.println("Hello Java!"); // 화면 출력
    }                                     // main 메소드 끝
}                                        // 클래스 끝

📌 자바 프로그램의 기본 형태

  • 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)

수치나 문자 등을 담아두는 상자(메모리)와 같은 것

// 정수형변수 a를 선언하고 10을 대입
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;
  • 변수를 나열해서 선언하며 초기화시킬 수 있음

profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글