[Java]자료형과 변수,상수 그리고 동적 타입과 정적 타입

Euiyeon Park·2024년 8월 27일

Java

목록 보기
2/16
post-thumbnail

해당 포스트는 Yalco님의 강의를 바탕으로 작성했습니다.
https://www.youtube.com/watch?v=iN22AgS_Chk

🫧자료형

  • 자료형은 한정된 메모리 공간에서 용량을 초과하지 않고 많은 작업을 실행하기 위해 작업상 다뤄야 할 데이터들의 종류에 따라 적절하게 메모리 공간을 할당하기 위함.

  • 실제 자료형들이 데이터를 메모리에 저장하는 방식은 각 자료형의 범주에 포함되는 모든 데이터를 가장 효율적으로 저장해서 메모리를 절약하도록 설계

  • 자료형은 데이터 저장 뿐만 아니라 주어진 위치에서 데이터를 읽을 때도 중요

    • 해당 위치에서 num이라는 변수가 주어졌을 때 몇 칸을 읽을 것인가?

📍 변수

  • 다양한 형태(자료형) 데이터를 담는 주머니

  • 일반적으로 선언과 초기화를 동시에 한다

    int age = 28;
    boolean isMarried = false;
    double height = 163.0;
    char sex = 'f';
    String name = "멋쟁이 박의연"

    📍 (정)상수

  • 값이 한번 할당되면 변경할 수 없는 변수

  • 값을 변경할 수 없으므로 특정한 값을 영구적으로 유지하고자 할 때 사용

  • final 키워드를 사용한다.

    final int AGE = 20;
    AGE = 28; // error

    영원히 20살이고 싶어 ..

📍자바의 식별자 명명 규칙과 관례

식별자(identifier)는 변수, 상수, 클래스, 메소드, 인터페이스, 패키지 등
다양한 프로그래밍 요소의 이름을 의미한다.

예약어(reserved words)는 자바에서 특정 의미를 가지고 있는 단어들로
식별자로 사용 불가한 키워드이다.
Java Kewords 확인하기

규칙
1. 문자, 숫자, 언더스코어(_), 달러사인($) 포함 가능
2. 문자 또는 _, $으로 시작해야 함 - 숫자로 시작할 수 없음
3. 공백(스페이스)를 포함할 수 없음

관례
4. 클래스는 대문자로 시작
5. 상수는 대문자와 _를 사용
6. 변수와 메서드는 낙타표기법(camel case) 사용

🫧정적/동적 타입

Java는 정적 자료형, 자료형이 다른 데이터는 넣을 수 없다.

일반적으로 컴파일 언어는 정적 타입(Static), 인터프리터 언어는 동적 타입(Dynamic)이다.

📍 정적 타입

변수의 타입(자료형)이 컴파일 타임 또는 코드 작성 시점에 결정된다.
변수를 선언할 때 타입을 명시적으로 지정해야 하며, 그 타입은 이후 변경될 수 없다.

  • 코드 실행, 배포 전 개발 단계에서 컴파일을 거치기 때문에
    문법적 오류가 있을 때 컴파일 과정에서 컴파일 오류(Compile Error)를 발생시켜 수정할 수 있다.

  • 개발자에게 자료형의 일관성을 요구하는 정적 타이핑에 유리하다.

  • 정적 타입 언어 : Java, C, C++

📍동적 타입

변수의 타입(자료형)이 런타임에 결정된다.
변수를 선언할 때 그 타입을 명시적으로 지정하지 않으며, 변수가 할당된 값에 따라
타입이 자동으로 결정된다.

  • 타입 선언이 불필요하고, 타입 변환에 있어 유연성(같은 변수에 다른 타입의 값 할당)을 가져 편리하지만 타입 검사가 런타임에 이루어지므로 잘못된 값이 사용될 경우
    런타임 오류(Runtime Error)의 위험성이 커진다.

  • 동적 타입 언어인 JavaScript의 한계를 보완하기 위해 TypeScript가 등장했다.

    • 정적 타입을 쓰는 TypeScript로 코드 안정성을 높인다.
  • 동적 타입 언어 : JavaScript, Python


[참고1] 컴파일 언어와 인터프리터 언어의 비교는 프로그램의 코드 실행 방식에 대한 개념이고, 정적 타입과 동적 타입은 변수의 데이터 타입을 관리하는 방식에 관한 개념이다.

[참고2] 컴파일 타임(프로그램 실행 전), 런타임(프로그램 실행 중)

profile
"개발자는 해결사이자 발견자이다✨" - Michael C. Feathers

0개의 댓글