안녕하세요 데브당에입니다.
오늘은 프로그래밍 언어 중 하나인 JAVA에 대해 알아보려합니다.
개념부터 특징, 변수까지 기초적인 내용을 알아보도록 하겠습니다.
JAVA
자바는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어입니다.
1991년 그린 프로젝트(가전기기 어플리케이션 제작)을 위해 자바의 초안이 제안되었습니다. 하지만 널리 이용되지 못하다가 인터넷이 활성화되면서 컴퓨터의 다양한 플랫폼에서 똑같이 동작하는 언어가 필요하게 되면서 각광받게 되었습니다. 1995년, JAVA라는 이름으로 공식버전을 발표합니다.
JAVA의 특징
- 객체지향
- "실세계의 모든 것은 객체 간의 상호작용에 의해 이루어진다."는 개념을 전제로하여 모든 것을 객체로 정의함
- 플랫폼 독립적
- JVM만 설치되면 Java로 작성된 응용프로그램은 실행이 가능한 플롯폼에 독립적인 구조를 갖음
- Java로 작성된 프로그램은 JVM 위에서 작동되어지기떄문에 Java의 컴파일 코드는 플랫폼이 JVM이 해석 가능하도록 번역됨
- 간단
- 기존 언어(C, C++)의 복잡성과 메모리 관리의 어려움 해결하여 쉽게 접할 수 있도록 설계
- 분산 프로그래밍 지원
- 네트워크를 이용한 프로그래밍 지원, 원격접속을 위한 다양한 기술셋을 가짐
- 멀티 스레드
- Thread API를 제공함으로써 OS에 종속적이지 않은 독립적인 설계와 JVM에 의해 스케쥴링이 되도록 구현
변수
변수(變數, variable) 또는 스칼라(scalar)는 아직 알려지지 않거나 어느 정도까지만 알려져 있는 양이나 정보에 대한 상징적인 이름
메모리 공간에 값(value)를 할당한 후 사용하며 메모리 공간 크기는 변수의 타입별로 달라진다.
변수의 종류
- Primitive Type(기본형)
- 미리 정해진 크기의 Memory Size로 표현
- 변수 자체에 값 저장
- 일반적인 값을 저장하는 변수 타입
구분 | Type | bit | 값 |
논리형 | boolean | true, false | |
문자형 | char | 16 | 0~65,535(ASCII코드) |
정수형 | byte | 8 | -128~127(-2^7~2^7-1) |
short | 16 | -32,768~32,767(-2^15 ~ 2^15) | |
int | 32 | -2,147,483,648~2,147,483,647 | |
long | 64 | -9,223,372,036,854,775,808~9,223,372,036,854,775,807 | |
실수형 | float | 32 | |
double | 64 |
- Reference Type(참조형)
- 미리 정해질 수 없는 데이터의 표현
- 변수에는 실제 값을 참조할 수 없는 주소만 저장
- dot(.) 연산 사용가능
- Class, Interface, 배열, String 등
형 변환
형 변환은 변수의 타입을 다른 타입으로 변환하는 것입니다. Primitive 타입 변수는 Primitive 끼리, Reference 타입 변수는 Reference끼리 형변환이 가능합니다. Primitive 타입 변수는 아래 두 가지 방식으로 형 변환이 가능합니다.
Primitive Type Casting
- Automatic promotions(Implicit Type Casting / 묵시적 형 변환)
- 작은 크기의 타입은 큰 크기의 타입으로 자동으로 형 변환
- 자료의 손실이 없기 때문에 JVM이 서비스함
- 예시 : Int -> float 변환
- Explicit Type Casting(명시적 형 변환)
- 큰 크기의 타입이 작은 크기의 타입으로 변경할 경우
- 값의 손실이 발생할 수 있기 때문에 프로그래머가 직접 진행
- 예시 : float -> int 변환
마치며
JAVA의 탄생부터, 특징, 변수에 대해 알아보았습니다. 모든 지식에는 기초 개념이 가장 중요하다고 생각합니다. 특히, 가볍게 생각할 수 있는 특징(객체지향 등)을 모른다면 나중에 알아볼 Class, Interface 등에 대한 정확한 개념 이해가 어려울 거라 생각합니다. 또한, 변수의 bit와 값에 대한 이해가 있다면 메모리를 보다 효율적으로 사용할 수 있다고 생각합니다.
'Programming > JAVA' 카테고리의 다른 글
[Web] Spring Data JPA 개념 및 메소드 사용법 알아보기 (0) | 2022.01.23 |
---|---|
[Spring] JPA , ORM 개념과 연관관계 매핑 알아보기 (0) | 2022.01.13 |
[JAVA] 추상클래스, 추상메소드, 인터페이스의 개념과 연관성 알아보기! (0) | 2022.01.12 |