자바언어의 특징
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 |