티스토리 뷰

728x90
반응형

변수란

  • 변수를 선언하는 것은 데이터를 저장하기 위해 메모리에 할당하는 것을 말합니다. 그리고 선언한 변수에 값을 넣는걸 초기화라고 합니다.
int a; 	 // 변수 a 선언
float b; // 변수 b 선언
char c;	 // 변수 c 선언

a = 5;   	// 변수 a를 값 5로 초기화
b = 3.14f;  // 변수 b를 값 3.14로 초기화
c = 'C';	// 변수 c를 값 C로 초기화

명시적 초기화

int a = 5;
float b = 3.14;
char c = 'C';

지역 변수의 초기화

  • 자바에서 멤버 변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화하지 않고 다른 변수에 대입해도 되지만 지역 변수는 사용전에 반드시 초기화를 해야합니다. 그렇지 않으면 에러가 발생합니다.
  • 멤버변수(클래스 변수, 인스턴스 변수)와 배열의 초기화는 선택적이지만 지역변수의 초기화는 필수적입니다.
int a;
int num = a; // 정상

public void method(){
	int b;
    int c = b; // 에러 발생
}

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

  • 변수의 스코프란 변수에 대한 접근돠 존재할 수 있는 영역을 의미합니다.
  • 자바에서 스코프에 따른 변수의 종류에는 클래스변수(static 변수), 인스턴스 변수, 지역변수 3가지로 나눌 수 있습니다.
  • 변수의 종류는 변수가 선언된 위치에 따라서 결정됩니다.
변수의 종류 선언 위치 초기화 시점 변수의 스코프
클래스 변수 클래스 영역 클래스가 처음 로딩될 때 클래스 전역
인스턴스 변수 클래스 영역 인스턴스가 생성될 때 각각의 인스턴스
지역 변수 메소드 영역 변수 선언문이 수행됐을 때 메소드 안(메소드가 모두 수행되면 접근할 수 없는 상태가됨)

 

라이프 타임

  • 인스턴스 변수 - 객체가 생성되고 객체가 메모리에서 살아있는 동안
  • 클래스 변수 - 클래스가 초기화되고 프로그램이 종료될때 까지
  • 지역 변수 - 변수 선언 이후부터 블록을 벗어날 때 까지

타입 변환

타입 변환이란?

  • 어떠한 값이나 변수의 타입을 다른 타입으로 변경하는것을 말합니다.
  • 이때 타입은 두 가지 방향으로 변환될 수 있습니다. 확장(자동 형변환), 축소(명시적 형변환)

Case 01 - 확장(자동 형변환)

  • 확장은 두 데이터 타입이 자동으로 변환되는 경우입니다.
  • 더 작은 데이터 타입의 값을 더 큰 범위의 타입에 할당할 경우에만 동작합니다.
void 자동형변환(){
    int a = 100;
    long b = a;
    float c = b;
}

 

Case 02 - 축소(명시적 형변환)

  • 축소는 더 작은 범위의 타입에 더 큰 범위의 타입의 값을 할당하기 위해서는 반드시 명시적으로 형변환을 해주어야 합니다.
  • 호환되지 않는 데이터 타입에도 사용할 수 있습니다.
void 명시적형변환(){
    int a = 88;
    char b = 'c';
    b = a; 		 // b의 타입이 더 작기 때문에 컴파일 에러 발생
    b = (char)a;         // 정상적인 형변환 가능
    
    a = b;		// a는 b보다 타입의 범위가 크므로 형변환 필요 없음, 자동
}

 

캐스팅

  • 크기가 더 큰 자료형을 더 작은 자료형에 대입할 때, 자료형을 명시해서 강제로 집어넣는 것을 말합니다.
  • 예시로 코끼리를 냉장고에 넣을거야! 라고 한다면 개발자가 명시적으로 코끼리의 크기를 냉장고에 들어갈 수 있는 크기로 해주어야합니다. 하지만 코끼리를 냉장고에 넣기위해서는 등분으로 짤라야하니 손실이 일어나게 됩니다.
  • 아래 예제에서도 큰 데이터를 작은 데이터에 담을려고하니 데이터 손실이 발생하게 됩니다.
void casting {
    float a = 3.14f;
    int b = (int)a;
}

 

프로모션

  • 크기가 더 작은 자료형을 더 큰 자료형에 대입할 때 자동으로 작은 자료형이 큰 자료형으로 변환되는 현상입니다.
  • 예시로 코끼리를 동물원에 넣을거야! 라고 한다면 코끼리는 동물원에서 자유롭게 지낼 수 있으니 따로 형변환을 해주지 않아도 됩니다. 
void promotion {
    int a = 10;
    float b = a;
}

 

1차 및 2차 배열 선언하기

// 1차 배열
int[] score = new int[5];

score[0] = 100;
score[1] = 95;
score[2] = 90;
score[3] = 85;
score[4] = 80;

// 2차 배열
int[][] arr = new int[5][5];
int[][] score = {{100, 200, 300}, {50, 10, 90}, {300, 320, 310}};

 

728x90
반응형