변수(Variable)와 자료형

웃음인·2025년 4월 9일

Java

목록 보기
2/37
post-thumbnail

변수(Variable)

메모리(RAM)에 값을 기록하기 위한 공간
공간에 기록되는 값(Data)이 변할 수 있어서 변수라고 한다
변수에 기록된 값은 지속적으로 사용 가능하고
여러 종류가 존재한다 !! (저장되는 값 형태, 크기 다름)

  • 변수 사용의 장점

    • 가독성 증가
    • 재사용성 증가(한 번 만든 변수를 계속 사용)
    • 코드 길이 감소
    • 유지보수성 증가(코드 수정이 간단해짐)

System.out.println(2 * 3.141592653589793 * 5);
System.out.println(3.141592653589793 * 5 * 5);
System.out.println(3.141592653589793 * 5 * 5 * 20);
System.out.println(4 * 3.141592653589793 * 5 * 5);

// 변수 사용
double pi = 3.141592653589793; // 원주율
int r = 5; // 반지름
int h = 20; // 높이

System.out.println(2 * pi * r); // 원의 둘레
System.out.println(pi * r * r); // 원의 넓이
System.out.println(pi * r * r * h); // 원기둥의 부피
System.out.println(4 * pi * r * r); // 구의 겉넓이

변수의 명명 규칙

  1. 대소문자가 구분되며 길이 제한이 없다.
	int abcdefg123456789;
	int abcdefG123456789; // G 다름
  1. 예약어를 사용하면 안 된다. ex) true, final, String
	double final;
  1. 숫자로 시작하면 안 된다.
	char 1abc; // X
	char a1bc; // O
  1. 특수문자는 _$만을 허용한다.

       -  $는 내부 클래스에서 사용
       -  _ 사용 시 컴파일 에러는 없지만 관례상 사용하지 않는 것이 좋음

	int &intNumber; // 문제는 없지만 이렇게 작성 안 함
	int int_Number; // 자바는 카멜표기법 사용
					// _ 작성 표기법은 DB에서 사용
  1. 여러 단어 이름은 단어의 첫 글자를 대문자로 한다.
    단, 첫 시작 글자는 소문자로 하는 것이 관례이다.
	char userName;
  1. 변수명은 언어를 가리지 않음 (하지만 쓰지 않음)
	int 정수1번;
	double 실수2번 = 3.14;
	System.out.println(실수2번); // 3.14

Data(값) 처리 과정

프로그램 실행 시 사용할 값(Data)이 있다면, 그 값은 먼저 메모리에 기록되어야 함

데이터 저장 단위

저장 공간이 제한적이기 때문에 저장 크기에 대한 기준과
CPU가 데이터를 처리할 때 일정한 기준 필요

  • 비트 (bit)

    • 컴퓨터가 나타내는 데이터의 최소 저장 단위로서
      2진수 값 하나를 저장할 수 있는 메모리 공간을 의미
  • 바이트(byte)

    • 데이터 처리 또는 문자의 최소 단위로서 8개의 비트가 모여 하나의 바이트가 구성됨

변수의 선언

메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것


자료형(Type)

  • 자바 기본 자료형 8가지

    • 논리형: boolean(1byte)
    • 정수형: byte(1byte), short(2byte), int(4byte), long(8byte)
                (short, byte는 옛날 코드 잔재)
    • 실수형: float(4byte), double(8byte)
    • 문자형: char(2byte, 유니코드)

    • 참조형: 문자열 String

값 대입과 리터럴

값 대입

생성한 변수(저장 공간)에 값을 대입하는 것
‣ 변수는 한 개의 데이터만 보관, 마지막에 대입한 값만 보관

boolean booleanData;
// 메모리에 논리값(t/f)을 저장할 공간을 1byte 할당하고
// 할당된 공간을 booleanData 라고 부르겠다.

booleanData = true;
// booleanData 변수에 true 논리값 집어넣기 (대입)

System.out.println("booleanData :" + booleanData);
// booleanData : true


byte byteNumber = 127; // 128 넣는 순간 에러
// 메모리에 정수값을 저장할 공간을 1byte 할당하고
// 할당된 공간을 byteNumber 라고 부르겠다
// 선언된 byteNumber 변수에 처음으로 127을 넣음
// --> 초기화: 처음 변수에 값을 대입

리터럴

변수에 대입되거나 작성되어지는 값 자체
‣ 자료형에 따라 리터럴 표기법이 다름

long longNumber = 10000000000;
// The literal 10000000000 of type int is out of range
// 100억이라는 값은 int의 범위를 벗어났다

long longNumber = 10000000000L;
// 뒤에 L을 붙여줌으로써 long 자료형인 것을 나타냄

float floatNumber = 1.2345f; f 또는 F
// 1.2345 까지만 쓰면 double 자료형으로 인식함

double doubleNumber = 3.141592;
// double이 실수형 중에서 기본형
// 리터럴 표기법 없는 실수는 double로 인식

문자형 리터럴 표기법 : ' '(홑따옴표) → 문자 하나
char ch = 'A';
char ch2 = 66;

System.out.println("ch :" + ch); // ch : A
System.out.println("ch2 :" + ch2); // ch2 : B

char 자료형에 숫자가 대입될 수 있는 이유!

  • 컴퓨터에는 문자표가 존재하고 있음
  • 숫자에 따라 지정된 문자 모양이 매핑되고
    'B' 문자 그대로 대입되면 변수에 숫자 66으로 변환되어 저장
    → 반대로 생각하면 변수에 애초에 66이라는 숫자를 저장하는 것이 가능함

0개의 댓글