Java 기본 이해하기

productuidev·2022년 6월 19일
1

BE Study

목록 보기
2/9
post-thumbnail

Java란?

Java의 역사

  • 1995년 자바의 아버지라고 불리는 제임스 고슬링과 그의 동료들에 의해서 시작된 프로젝트다. Java는 원래 가전제품을 제어하기 위한 언어로 고안되었지만 웹의 등장으로 엄청난 성공을 거두면서 주류 언어가 되었다. 역사에 대한 더 자세한 내용은 직접 찾아보자.

  • 한국에서는 정부나 기업의 시스템 통합 프로젝트가 대부분 자바로 구현되기 때문에 자바는 기업용 시장에서 두각을 나타내고 있다. 모바일 플랫폼인 안드로이드가 대성공을 거두면서 자바의 수요가 급증했다.

  • 자바의 역사와 철학

Java의 특징

Java : A simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, and dynamic language

주요 특징들
간단하다 (Simple)
객체 지향적이다 (Object-oriented)
인터프리터 언어이다 (Interpreted)
강력하다 (robust)
안전하다 (Secured)
플랫폼 독립적이다 (Platform independent)
멀티 쓰레딩을 지원한다 (Multithreaded)
동적이다 (Dynamic)

Java 프로그램의 동작

  • 코드 작성
  • 컴퓨터가 실행할 수 있는 형태로 코드를 컴파일
  • 컴파일된 프로그램을 실행

JAVA 프로그래밍의 실행 과정

출처 - TCP스쿨

용어, 분류

  • Java SE (Standard Edition)
    자바의 핵심으로 일반적으로 자바라고 하면 Java SE를 의미한다.
  • JDK (Java Development Kit)
    Java SE의 표준안에 따라서 만들어진 구체적인 소프트웨어. 여기에는 Java 프로그램을 실행하면 Java 코드를 컴파일하는 컴파일러와 개발에 필요한 각종 도구 그리고 JRE가 포함되어 있다. 즉 개발자를 위한 자바 버전
  • JRE(Java Runtime Environment)
    자바가 실제로 동작하는 데 필요한 JVM, 라이브러리, 각종 파일
  • Java EE (Enterprise Edition)
    기업용 시장에서 사용하는 자바 개발환경
    들이 포함되어 있다. 자바로 만들어진 프로그램을 구동하려고 한다면 이것을 설치. 일반인을 위한 자바 버전
  • Jave Me (Micro Edition)
    모바일 개발을 위해서 사용하는 자바 버전
  • JVM(Java Virtual Machine)
    자바가 실제로 구동하는 환경으로 자바로 만들어진 SW는 JVM이라는 가상화된 환경에서 구동되고 하드웨어나 운영체제에 따라서 달라질 수 있는 호환성의 문제는 운영체제 버전에 따라서 만들어진 JVM이 알아서 해결한다. 즉 하나의 자바 프로그램을 만들면 어떤 환경에서도 실행할 수 있는 것이 바로 JVM의 역할이라고 할 수 있다.

출처 - 생활코딩

JAVA의 버전 : Java version history

자바 소스코드의 구조

자바 프로그램은 한 개 이상의 클래스(class)로 구성됩니다.
이러한 클래스는 한 개 이상의 필드(field)나 메소드(method)로 구성됩니다.

class 클래스이름 {
    필드의 선언
    필드의 선언

    ...
    
    메소드의 선언
    메소드의 선언

    ...

}

class Test {

    int field1;
    String field2;

    public void method1() {
        System.out.println("자바 프로그래밍!!");
    }

}
  • 자바 표준 입출력 클래스
System.out.println(출력할데이터);

System.out.print(7);         // print() 메소드는 줄 바꿈을 하지 않음.
System.out.println(3);       // 정수 출력
System.out.println(3.14);    // 실수 출력
System.out.println("자바!"); // 문자열 출력
System.out.println("문자열끼리의 " + "연결도 가능합니다.");
System.out.println("숫자" + 3 + "과 문자열의 연결도 가능합니다.");
  • 클래스명.java
/* 클래스 블록 */
public class 클래스명 {

    /* 메소드 블록 */
    [public|private|protected] [static] (리턴자료형|void) 메소드명1(입력자료형 매개변수, ...) {
        명령문(statement);
        ...
    }

    /* 메소드 블록 */
    [public|private|protected] [static] (리턴자료형|void) 메소드명2(입력자료형 매개변수, ...) {
        명령문(statement);
        ...
    }

    ...
}

보통 이렇게 하나의 자바파일에 여러개의 클래스를 작성하는 경우에는 하나의 대표 클래스를 지정하고 파일명과 동일하게 하는 것이 코드의 가독성에 도움이 된다

  • public 클래스
  • 접근 제어자
    변수나 메소드의 사용 권한은 다음과 같은 접근 제어자를 사용하여 설정할수 있다.
    private -> default -> protected -> public 순으로 보다 많은 접근을 허용한다.
  • 정적 메소드와 변수
    ㄴ 싱글톤 패턴 (singleton pattern) : 싱글톤은 단 하나의 객체만을 생성하게 강제하는 패턴이다. 즉 클래스를 통해 생성할 수 있는 객체는 Only One, 즉, 한 개만 되도록 만드는 것이 싱글톤이다.

JAVA 산책하기

구구단 만들기

  1. 클래스 생성
  2. main 메소드
  3. 변수
  4. 메소드
  5. 객체
  6. for 문
  7. 구구단 완성
package java01;

// 1. 클래스 생성
public class GuGu {
	
    public void dan(int n) {
//        System.out.println(n*1);
//        System.out.println(n*2);
//        System.out.println(n*3);
//        System.out.println(n*4);
//        System.out.println(n*5);
//        System.out.println(n*6);
//        System.out.println(n*7);
//        System.out.println(n*8);
//        System.out.println(n*9);
    	
    	for (int i = 1; i < 10; i++) {   // i에 1~9 까지의 값이 반복하여 대입된다.
            System.out.println(n * i);
        }
    }
	
	// 2. main 메소드
    public static void main(String[] args) {
    	
    	// 3. 변수
//    	int n = 3;
    	
    	GuGu gugu = new GuGu(); // GuGu 클래스의 객체 생성
    	
//        gugu.dan(n); // 객체를 통해 dan 메소드를 호출
//    	  gugu.dan(2);
//        gugu.dan(3);
//        gugu.dan(4);
//        gugu.dan(5);
//        gugu.dan(6);
//        gugu.dan(7);
//        gugu.dan(8);
//        gugu.dan(9);
    	
        for (int i = 2; i < 10; i++) { 
            gugu.dan(i);
        }
    }
}

Eclipse에서 Repository에 Commit & Push

참고자료

객체 (Object)

자바 객체지향 프로그래밍


여기서 자동차는 하나의 객체(object)라고 할 수 있으며, 색상, 크기, 모델, 속도 등과 같이 객체가 지니고 있는 특성 또는 속성은 상태(state)를 의미하고, 속도를 올린다, 속도를 줄인다, 경적을 울린다 등은 객체가 할 수 있는 행동(behavior)을 말합니다. 정리하자면, 객체는 상태와 행동으로 이루어져 있다고 할 수 있습니다. 아래와 같이 또다른 예들을 생각해볼 수 있습니다.
우리가 이처럼 객체의 수많은 특성 중에서 덜 중요한 부분은 뒤로 빼고 핵심이 되는 특성을 간추려 내는 작업을 추상화(abstraction)라고 말합니다. 이 추상화는 객체 지향 프로그래밍의 4대 특성 중 하나로서 객체 모델링이라고 부르기도 합니다. 추상화로 얻게 되는 장점에 대해서는 직접 추상화를 여러 번 해보면서 차차 알아나가도록 하겠습니다.
여기서 설명한 객체라는 개념은 컴퓨터 프로그래밍에도 적용이 되는데, 객체의 상태는 프로그래밍에선 필드(field) 또는 속성(property)이라고 부르고 행동메서드(method)라고 부릅니다. 우리는 메서드를 '어떤 작업을 수행하는 문장들을 묶어놓은 것'이라고 배웠지만 큰 틀에서 살펴보면 메서드는 객체의 행동이라고 할 수 있습니다.

클래스 (Class)

클래스를 인스턴스화한다 = 객체를 생성한다

클래스란 바로 어떤 객체를 만들기 위해서 필드나 메서드를 정의하는 일종의 틀 또는 설계도라고 할 수 있습니다. 클래스는 실체가 있는 게 아니라 추상적인 개념에 불과하므로 처음에 받아들이기가 다소 힘들 수 있습니다. 객체와 클래스의 이해를 돕기 위해서 단골로 등장하는 비유가 하나 있는데 한번 살펴보도록 하겠습니다.
위 그림처럼 붕어빵틀을 설계도인 클래스에 빗대고, 붕어빵틀로 만들어진 결과물붕어빵객체에 빗댈 수 있습니다. 붕어빵틀은 저마다 다른 크기, 모양의 붕어빵을 만들며, 하나의 붕어빵틀을 가지고 들어가는 재료(속성) 등에 따라서 각기 다른 고유한 붕어빵이 만들어집니다. 그리고 우리는 붕어빵틀로 붕어빵을 찍어내기 전까지는 붕어빵을 먹을 수 없습니다. 클래스도 이와 비슷하게 클래스 내부에 선언 또는 정의되어 있는 필드나 메서드를 이용하려면 먼저 클래스를 통해 객체를 만들어야 합니다.

객체와 인스턴스

대부분의 자바 개발자들은 일상적인 대화에서 객체(object)와 인스턴스(instance)를 혼용해서 사용합니다. 그렇게 해도 의사소통에 문제가 없으며 서로 무엇을 가리키는지 알기 때문입니다. 혼란을 피하기 위해서 앞으로 두 용어를 혼용하지 않고 객체로 통일할 것입니다. 하지만 자바같은 클래스 기반 언어에서 객체와 인스턴스의 사이에는 미세한 차이가 있습니다.
이해를 돕기 위해서 예를 들어봅시다. 우리가 을 만든다고 가정할 때, 집을 만드려면 각 실의 위치나 넓이 등을 결정하기 위해서 먼저 설계도가 필요합니다. 설계도가 완성된 후, 해당 설계도를 기반으로 만들어진 똑같은 집들은 모두 객체라고 부를 수 있습니다. 하지만 이렇게 같은 설계도로부터 만들어진 집은 모두 똑같기에 어떤 집 하나를 가리키려 할 때 어려움이 생깁니다. 따라서, 번호와 같은 고유한 표시를 부여하여 각 집을 구분했습니다. 이때 각각의 집을 인스턴스라 부를 수 있습니다. 동일하게, 철수와 영희는 모두 사람 객체이지만 철수와 영희를 따로 봤을 때는 고유한 인스턴스라 할 수 있습니다. 느낌이 좀 오시나요?

출처 - 객체와 클래스


💬 간단하게 개요 살피기

profile
필요한 내용을 공부하고 저장합니다.

0개의 댓글