Java

Java 문법(2) - 메모리, 자료형

sangchu 2022. 2. 6. 21:25

메모리란?

  • Register: CPU 내부에서 사용되는 저장공간
  • Storage: 하드 드라이브라고도 불리는 HDD(Hard Disk Drive). 용량당 가격이 아주 저렴하지만 속도가 매우 느림. 최근엔 SSD(Solid State Disk)라는 HDD의 속도를 보완한 제품이 출시되고 있음
  • Memory: RAM이라고도 불리는 하드웨어가 Memory 공간을 담당. Storage보다는 빠르지만 Register보다는 느린 속도 ⇒ Storage와 Register의 사이에 위치하여 다른 속도 및 용량을 갖고 있는 저장장소들을 보완하는 역할 담당

 

프로그램 동작 원리

  • 프로그램들은 Storage에 저장되어 있음
  • Storage에 저장된 프로그램을 실행하면 운영체제가 해당 프로그램을 Memory에 Load → Memory에 Load된 프로그램은 Process라고 부름

 

변수(Variable)

  • int a; : ‘a라는 이름을 가진 Integer형 변수를 선언(Declare)한다.’ or ‘Memory에 변수명이 a인 정수형 공간을 만든다.’
  • 변수를 선언하면 컴퓨터는 비어있는 주소를 가져와 변수명이 기록된 공간을 생성. 즉, a라는 변수명은 어떠한 Memory 주소와 연결됨 ⇒ 동일한 이름 변수명을 지정하면 같은 이름의 공간이 여러 개 생기는 것이므로 에러가 발생
  • 첫 글자에는 영문자, $, _ 만 사용가능
  • a=1; : ‘a라는 이름을 가진 정수형 공간에 1을 넣는다’
  • = : 우측의 값을 왼쪽에 대입한다
  • 초기화: 변수 선언 후 가장 처음으로 값을 대입하는 것
import java.io.*;
class Main {
    public static void main(String[] args) {
        int a;
        a = 1;
    }
}

 

상수(Constants)

  • 상수: 값이 변하지 않는 데이터 공간
  • 변수 앞에 final을 붙여서 사용
  • 내부의 값을 변화시킬 수 없음
import java.io.*;
class Main {
	public static void main(String[] args) {
		final int a = 2;
		System.out.println(a);	
	}
}

 

자료형 - 기본형(Primitive Type)

  1. Integral Type: 정수 형태. integer, short, long
  2. floating point Type: 실수 형태. float, double
  3. Character Type: 문자형태. character
  4. Boolean Type: 참/거짓 형태. boolean

 

Integral Type(정수형)

  • 정수형을 저장할 수 있다는 점에서 동일
  • 선언시 Memory에 할당되는 공간의 크기가 다름

 

Floating point Type(실수형)

  • 일반적으로 실수는 기본적으로 double형
  • float형에 실수를 저장할 시에는 숫자 뒤에 f를 붙임으로써 해당 실수가 float형태라는 것을 명시해주어야 함. (float varFloat = 12.34f; )

 

Boolean Type(참/거짓형)

import java.io.*;
class Main {
	public static void main(String[] args) {
		boolean varTrue = true;
		boolean varFalse = false;
		System.out.println(varTrue);
		System.out.println(varFalse);
	}
}
  • 각 변수에 저장된 boolean 값은 조건문에서 유용하게 사용함

 

Character Type(문자형)

  • 한 개의 문자만 저장 가능
  • 문자는 작은따옴표( ’ )에 감싸서 표현

 

자료형 - 참조형

기본형이 아닌 자료형은 모두 참조형

  1. Class Type
  2. Interface Type
  3. Array Type
  4. Enum Type
  • 참조형: 값이 저장된 주소를 저장하는 자료형, 자바에서는 모두 객체의 주소를 의미

 

명시적 형변환

import java.io.*;
class Main {
    public static void main(String[] args) {
        double varDouble = 98.76;
        int varInteger = (int)varDouble;
        System.out.println(varInteger);	
    }
}
  • double 형태의 값이 int형으로 강제 변환됨 → 실수부 데이터 유실
  • 명시적 형변환: 변수 형태를 명시적으로 지정하여 자료형을 바꾸는 행위

 

묵시적 형변환

  • 묵시적 형변환: 바꾸고자 하는 타입을 명시하지 않아도 자료형이 자동으로 바뀌는 형변환
import java.io.*;
class Main {
    public static void main(String[] args) {
        short varShort = 5;
        double varDouble = varShort;
        System.out.println(varDouble); 
    }
}
  • 가능한 조건: 목표 자료형 크기 > 바꾸려는 데이터의 자료형 크기
  • 명시적, 묵시적 형변환은 boolean형을 제외한 나머지 기본형 자료형 사이에서 모두 사용 가능
  • 참조형 자료형도 형변환 가능하지만 참조형 자료형 간에만 가능 + 여러 조건이 필요

 

 

 

 

 

'바로 실행해보면서 배우는 java'를 학습하며 정리한 문서