#2. 자바 데이터 타입, 변수 그리고 배열 [자바]

msi753·2021년 4월 9일
0

🦅Swift Syntax

목록 보기
7/10

1. 데이터 크기에 따른 데이터의 표현 범위 이유

  • 정수
    1byte = 8bit
    2^8개만큼 표현가능하다
    그런데 -128 ~ 127만큼 표현하는 이유는
    가장 왼쪽 비트(MSB(Most Significant Bit,최상위비트))가 1은 음수, 0은 양수를 의미해 7칸만 사용할 수 있기 때문이다.
    부호가 없으면 0~255까지 표현가능하다.

  • 실수
    계산기를 만들면 오버플로우가 발생하기 때문에 BigDecimal을 사용한다.
    부동 소수점 방식

    • float:
      부호1 + 지수8 + 가수23 = 32비트
      정규화를 통해 24까지 표현이 가능하다
      10^7 < 2^24 < 10^8 정밀도는 7이다
    • double:
      부호1 + 지수11비트 + 가수52비트 = 64비트
      정밀도는 15이다

2. 프리미티브 타입과 레퍼런스 타입

  • 참조 타입: 힙 메모리에 저장
  • 기본 타입: 스레드 영역 중 스택 메모리에 저장

3. 리터럴이란?

고정된 값을 소스코드로 표현한 형태

  • 정수리터럴
    integer literal: l 0x 0b
    floating point: f d 0.1f
    character and String: \b \t \n \f \r ' " \

4. 변수 선언 및 초기화하는 방법

int a = 1;
을 컴파일해서 opcode를 까보면 한 줄이 아니고 두 줄이다.
int a 초기화 (bipush)
a = 1 값 할당(istore_1)
이게 멀티스레드 환경에서 오류가 발생하는 원인이다.
아래처럼 더블체크드 라킹이 필요하다.

public class App {
	public static App getInstance(){
        if App.app = null {
    		App.app = new App();
    	}	
    	return app;
    }
}

5. 변수의 스코프와 라이프타임

static은 클래스 로딩 시점에 생성되어 참조가 가능하고(클래스 변수)
instance는 생성 후에 참조가 가능해진다.(인스턴스 변수)

int num = 1_000_000;
이렇게 숫자를 표현할 수 있다.
System.out.println(num); 하면 그냥 1000000으로 인식한다.

profile
👶 Back-End Developer -> 👩‍💻 iOS Developer

관심 있을 만한 포스트

0개의 댓글