본문 바로가기

Language/JAVA

자바언어의 구조와 기본문법

 

자바언어의 특징

1. 자바는 단순하다.

  • C언어와 C++언어의 복잡한 기능을 제외하여 코드를 단순하게 작성할 수 있음

EX) C++의 전위처리, 포인터사용, 다중상속, 구조체, GOTO문, 연산자 중복가능...

  • 가비지 컬렉터(Garbage Collector)에 의한 자동 메모리 관리로 할당된 메모리 해제를 신경쓰지 않아도 됨
  • C와 C++언어에 비해 작고 간편하다

2. 자바는 객체지향적이다.

  • 자바는 객체지향 개념이 적용된 C++을 기초로 하여 만들어진 언어

(객체지향 언어 : 언어라는 객체를 사용해서 프로그램을 작성하도록 하는 언어)

  • 객체지향을 사용하게 되면 재사용성을 높일 수 있음
    • 단순히 코드의 재사용을 넘어선 객체의 재사용을 뜻함
    • 프로그램 개발에 필요한 수많은 클래스 라이브러리들을 API로 제공함

3. 자바는 분산처리(Distributed)에 용이하다.

  • 분산 환경에서 TCP/IP 등의 프로토콜을 통해 효율적으로 실행할 수 있도록 설계된 언어
  • 서로 다른 컴퓨터 상의 객체들도 원격으로 호출하여 실행할 수 있는 원격 메서드 호출과 관련된 RMI(Remote Method Invocation) 기능의 라이브러리 제공

4. 자바는 인터프리터에 의해 실행된다.

  • 자바 프로그램의 실행 과정

소스코드 .java -> 컴파일 Compiling:javac -> 중간코드 .class (바이트코드 = 클래스 파일) -> 기계어로 해석 Interpriting:java -> 실행

  • 컴파일 언어임과 동시에 인터프리터 언어인 자바!

5. 자바는 견고하다.

  • 다양한 플랫폼(컴퓨터) 상에서 실행되기 위해 에러의 원인이 되는 요소들을 제거하거나 자동으로 해결
    • 포인터를 사용하지 않음
    • 자동으로 가비지 컬렉션 기능을 수행함
    • 엄격한 데이터 타입의 검사를 통해 에러를 조기에 발견함
    • 실행 시간에 발생하는 에러를 처리함

6. 자바는 높은 성능을 제공한다.

  • 가바지 컬렉션 기능이 추가되어 있어 자동으로 메모리 관리가 가능
    • 메모리가 할당된 객체의 상태를 추적 관리
    • 더 이상 참조되지 않으면 자동으로 할당된 메모리 해제

7. 자바는 멀티스레드를 지원한다.

  • 스레드 : 독자적으로 수행하는 하나의 작은 프로그램
  • 멀티스레드 : 한번에 여러개의 스레드가 동시에 수행되는 과정
    • 하나의 CPU가 여러개의 프로그램을 동시에 수행하도록 함 = 수행속도를 빠르게 함

 

자바 플랫폼

자바 플랫폼의 구조

  • 자바 프로그램  -  자바 가상머신(자바 API)  -  다양한 하드웨어 플랫폼(Intel ...)

자바 가상 머신

  • 자바로 쓰여진 애플리케이션과 특정 운영체제 중간에 존재하여 서로를 분리함으로써 애플리케이션이 운영체제에 영향을 받지 않고 동작할 수 있는 환경을 제공

자바 API

  • 프로그래머가 필요로 하는 기본적인 클래스들을 거대한 라이브러리로 미리 만들어서 제공하는 것
  • 미리 제공되는 클래스를 표준 클래스라고 함
  • 자바 언어 자체는 작고 단순한 구조를 갖지만, 많은 기능들을 API에서 제공하고 있음
  • 자바의 패키지
    • java.applet : 애플릿 작성에 필요한 기능
    • java.awt : GUI 작성시 사용
    • xjava.io : 입출력 기능
    • java.lang : 객체 클래스, 문자열, 시스템, 멀티스레드 관련 기능
    • java.net : 소켓 기능
    • java.swing : GUI 기능, 더 다양하고 융통성
    • java.util : 날짜 표현, 여러 자료형을 하나로 취급하는 컬렉션 기능

 

배열

일차원 배열의 선언과 사용

  • 데이터타입 변수명[] = new 데이터타입[배열길이];
int scoreList[] = new int[100];
int [] scoreList = new int[100];

scoreList라는 배열을 선언하고. 100개의 정수형 데이터를 저장할 수 있는 배열 객체 생성

  • 데이터타입[] 변수명 = new 데이터타입[배열길이];
String nameList[] = new String[5];
String[] nameList = new String[5];

nameList라는 배열을 선언하고, 5개의 문자열을 저장할 수 있는 배열 객체 생성

  • 배열 선언 및 생성, 초기화를 한 문장으로 표현하는 경우
int[] scoreList = { 45, 80, 100, 59, 80 };
scoreList = new int[] { 45, 80, 100, 59, 80 };

 

자바 예약어

  • length
    • 배열변수명.length
  • index
    • 크기 100인 배열의 인덱스는 0~99

 

이차원 배열의 선언과 사용

  • 변수명 = new 데이터타입[배열길이][배열길이];
scoreList = new int[3][4];

 

  • 변수명 = new 데이터타입[배열길이][];  변수명[인덱스] = new 데이터타입[배열길이];
scoreList = new int[3][];
scoreList[0] = new int[4];
scoreList[1] = new int[4];
scoreList[2] = new int[4];

 

  • 서로 다른 길이로 생성된 일차원 배열을 참조하는 형태
int[][] scoreList = new int[3][];
scoreList[0] = new int[2]; //길이2
scoreList[1] = new int[3]; //길이3
scoreList[2] = new int[4]; //길이4

'Language > JAVA' 카테고리의 다른 글

[JAVA] 상속  (0) 2020.06.20
[JAVA] 클래스의 기능  (0) 2020.06.15
[JAVA] 객체지향 개념  (0) 2020.06.15