ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 변수와 자료형
    JAVA 2023. 3. 2. 19:30

    변수(Variable)

    • 변수 : 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름

    • 자바에서 변수는 관례적으로 캐멀 표기법을 따른다.
      ex) int mathScore;
    • 변수는 선언될 때가 아니라 값이 대입될 때 메모리에 할당된다.
      - 초기화되지 않은 변수를 사용할 경우 컴파일 에러 발생
    • 지역변수(local variable)는 되도록 초기화해주는 것이 좋다.

     

    데이터 타입 별 데이터 저장

    1. 기본 자료형 변수: Stack 메모리에 값을 저장 (call by value)
    2. 참조 자료형 변수: Stack 메모리에 객체의 주소만 저장
      - 객체는 Heap 메모리에 저장

    변수 이름 작성 시 주의 사항

    1. 숫자로 시작 불가
    2. 특수 문자는 $와 _만 사용 가능
    3. 키워드 사용 불가

    자료형(Data Type)

    자료형(데이터 타입) : 데이터를 저장(표현)하는 기준


    기본 자료형(Primitive Data Type)

    1. 논리형 : boolean = true, false
      - 1 byte 단위로 저장 (자바의 메모리는 최소 단위가 byte이기 때문에 true, false(1 bit)만 표현하더라도 최소 단위인 byte(8 bite)로 메모리를 할당한다.)

    2. 문자형 : char(2바이트 유니코드 기반 : 0 ~ 65535)
      - 작은따옴표('')로 단일 문자를 대입하거나 유니코드를 직접 입력하여 작성한다.
       예) char c1 = 'A'; 또는 char c1 = 65;
      - 빈 문자로 초기화할 때는 ''로 입력하면 컴파일 에러가 발생하므로 공백 한 칸(' ')으로 입력한다.
      - 유니코드를 기반으로 하여 영어 이외의 언어도 표현이 가능하다.
      - 실제로 저장되는 값은 문자에 대응하는 유니코드 값(정수)이므로 정수형으로 분류하기도 한다.

    3. 정수형
      byte(1 바이트 : -128 ~ 127)
      short(2 바이트 : -32,768 ~ 32767)
      int(4 바이트 : -2,147,483,648 ~ 2,147,483,647; 약 20억)
      long(8 바이트 : 대략 ±900경)

    4. 실수형
      - 자바는 부동소수점 방식으로 float 타입과 double 타입의 값을 메모리에 저장한다.
      float(4 바이트)
       - dobule에 비해 소숫점 이하의 값의 정확도가 떨어진다.
      double(8 바이트)

    참조 자료형(Reference Data Type) 

    • 클래스, 인터페이스, 배열
    • 프로그래머가 정의한 데이터 타입(대문자로 시작)

    리터럴(Literal)

    리터럴 : 코드에서 프로그래머가 직접 입력한 값

     

    • 정수형은 byte, short의 표현 범위를 넘어가면 int로 인식한다. long 타입으로 값을 부여하려면 값 뒤에 "l" 또는 "L"을 붙여줘야 한다.
    • 실수형은 기본적으로 double로 인식한다. float 타입으로 값을 부여하려면 값 뒤에 "f"를 붙여줘야 한다.

    진수 별 리터럴 작성 방법

    1. 2진수 : 0b 또는 0B로 시작
      int x = 0b1011l; (10진수 : 11)

    2. 8진수 : 0으로 시작
      int x = 013; (10진수 : 11)

    3. 16진수 : 0x 또는 0X로 시작 0 ~ 9까지는 숫자, 이후부터는 알파벳으로 작성(A ~ F, a ~ f)
      int x = 0xB3 (10진수 : 179)

    실수 리터럴

    •  알파벳 e 또는 E를 사용하여 10의 거듭제곱을 다음과 같은 리터럴로 대입할 수 있다.
      double d1 = 7e3; //7.0 x 10³ = 7000
      double d2 = 0.35E-3; //0.00035

    이스케이프 문자(escape sequence)

    이스케이프 : 특수문자로 키보드에서 제어기능을 담당하는 키들을 표현해주는 것

     

    자주 사용하는 이스케이프 문자

    이스케이프 문자 설명
    \" " 문자 출력
    \' ' 문자 출력
    \\ \ 문자 출력
    \u16진수 16진수 유니코드에 해당하는 문자 출력
    \t 탭만큼 띄어쓰기
    \n 줄바꿈
    \r 캐리지 리턴

    텍스트 블록

     - 큰따옴표를 3개로 감싸진 문자열을 작성하면 이스케이프하지 않아도 작성한 문자열 그대로 저장된다.

     - Java 13부터 지원

     - 텍스트 블록에서 Enter 키를 입력하지 않고 "\n"을 입력해도 줄바꿈이 되고, 줄바꿈을 하지 않으려면 "\"를 붙이면 된다.


    형변환

    • 자바는 데이터 타입에 민감한 언어이다.

    자동 형변환

    • 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생한다.
    • 정수 타입이 실수 타입으로 대입될 때 정수는 실수로 변환된다.
    • 값의 허용 범위는 char 타입이 byte 타입보다 크지만 char 타입은 음수를 포함하지 않으므로 byte 타입이 char 타입으로 자동 형변환이 발생하지 않는다.

    • 기본 타입의 허용 범위 비교
      byte < short, char < int < long < float < double

    연산 시 자동 형변환

    1. int 타입 이하 변수의 정수 연산

    피연산자를 int 타입으로 형변환 후 연산 수행
    결과는 int 타입이 되므로 int 타입 변수로 저장 가능

    2. int 타입보다 큰 변수가 포함된 정수 연산
    피연산자를 long 타입으로 형변환 후 연산 수행
    결과는 long 타입이 되므로 long 타입 변수로 저장 가능

    3. 동일한 실수 타입 변수끼리의 실수 연산
    결과는 연산 전 타입을 유지

    4. double 타입의 변수가 포함된 실수 연산
    피연산자를 double 타입으로 형변환 후 연산 수행
    결과는 double 타입이 되므로 double 타입 변수로만 저장 가능
    정수 타입 변수도 모두 double 타입의 실수로 형변환이 된다.

    ※ 연산 결과는 피연산자의 타입에 의해 결정되므로 자동 형변환되는 경우를 고려하여 연산 수행 전에 피연산자를 얻고자하는 자료형으로 강제 형변환해야 한다.

    <실수가 포함된 연산 결과를 정수로 저장>

    int i = 10;
    double d = 3.7;
    int result = i + (int)d;    //10 + 3 = 13
    cs


    <정수가 포함된 연산 결과를 실수로 저장>

    int i = 3;
    double d = 4;
    //double result = i / d;    //0
    double result = (double)i / d; //0.75
    cs

     

    5. 문자열을 포함한 숫자의 연산
    괄호 안의 수식을 먼저 계산한 후 왼쪽부터 차례대로 숫자를 계산하고, 문자열과 만나면 숫자를 문자열로 형변환한다.   예) 1 + 2 + "3" + (4 + 5) → 3 + "3" + 9 → "33" + 9 → 339
    결과는 문자열로 저장된다.


    강제 형변환(Casting)

    •  값의 허용 범위가 큰 타입에서 허용 범위가 작은 타입으로 변경할 때와 같이 데이터가 소실될 위험이 있는 경우에는 컴파일러가 자동 형변환하지 않는다.
    • 데이터가 소실되더라도 형변환을 하려면 형변환 연산자를 사용하여 강제 형변환을 하면 된다.
      예) int i = (int) 3.141592;

    pintf() 메소드의 형식 문자열 포맷

    printf("형식 문자열", 값1, 값2, ...)

     

    <형식 문자열의 포맷>

    포맷:
    % [argument_index$] [flags] [width] [.precision] conversion
    내용:   값의 순번 자릿수 맞춤 문자열 전체 자릿수 소수 자릿수 변환 문자
    예시: % 1$ 0 10 .2 f
    •  %, converson(변환 문자)는 필수로 작성하고, 이외는 생략 가능하다.
    •  대입할 값이 여러 개인 경우에는 [argument_index$] 자리에 순번을 입력해줘야 한다.
      예) %1$010..2f
    • 실수를 소수점 포함하여 총 10자리, 소수점 이하 2자리, 왼쪽 빈 자리는 "0"으로 채워서 출력
      0000123.45

     

    'JAVA' 카테고리의 다른 글

    제어문  (0) 2023.03.02
    연산자(Operator)  (0) 2023.03.02
    이클립스 다운로드  (0) 2023.03.02
    Java 설치  (0) 2023.03.02
    Java의 특징  (0) 2023.03.02
Designed by Tistory.