개발 지식/Java

[Java] 변수(2) - 자료형과 기본형 변수

devGSP 2022. 7. 8. 08:00
반응형
이 게시물은 아래 버전을 기준으로 작성되었습니다.

Java : 11.0.15.1
OS : Windows 10 Pro
IDE : Eclipse IDE for Enterprise Java and Web Developers - 2022-06

 

자료형과 기본형 변수

 

자료형의 개념

 

자료형(data type)이란 값의 종류에 따라 형식과 메모리 공간의 크기와 정의한 것이다. 변수의 자료형은 '기본형(primitive type)'과 '참조형(reference type)'으로 나눌 수 있으며, 기본형 변수는 논리형, 문자형, 정수형, 실수형 네 가지로 나눌 수 있다.

 

 

기본형 변수

 

기본형 변수는 계산을 할 수 있는 실제 값을 저장하는 변수다. 모두 8개로 정리하자면 아래와 같다.

 

 

기본형의 구분

 

구분 타입 설명
논리형 boolean 논리식, 조건식 계산에 사용되는 변수. true와 false 중 하나를 값으로 가짐
문자형 char 문자를 저장하는 데 사용. 하나의 문자만 저장할 수 있음
정수형 byte, short, int, long 정수를 저장하는 데 사용. short는 C언어와의 호환을 위해 사용
실수형 float, double 실수를 저장하는 데 사용.

 

boolean

 

boolean isOld = true;
boolean isRich = false;

 

boolean은 위와 같이 true와 false 중 하나의 값을 가진다. 논리식, 조건식의 계산에 사용된다.

 

 

char

 

char aLowerChar = 'a';
char aUpperChar = 'A';

char blank = ' ';
char noChar = '';	// 에러 발생. 빈 문자로 초기화할 수 없음!

 

char는 하나의 문자만 저장 가능하며 반드시 작은따옴표(', ')로 감싸야 한다. 또한 위의 noChar와 blank 변수를 보면 빈 문자로 초기화할 수는 없으나, 공백 문자로는 초기화가 가능한 것을 볼 수 있다.

 

 

byte, short, int, long

 

byte bit8 = 1;

short shortNum = 20000;

int age = 32;

long noGSP = 2147483647;
//long maxIntPlusOne = 2147483648;	// 에러 발생! int의 저장 가능 범위를 넘으므로 접미사 l 혹은 L을 붙여줘야 한다.
long maxIntPlusOne = 2147483648L;

 

byte는 이진 데이터를 사용할 떄 사용되며, short는 C언어와의 호환을 위해서 사용한다.

정수형 변수의 기본 자료형으로는 int를 사용하며, int의 범위를 넘어서는 큰 수를 연산할 때는 long을 사용한다.

이때 long은 int의 저장 가능 범위를 넘을 경우 접미사 l 혹은 L을 붙여서 값을 저장해야 한다. 소문자 l은 1과 비슷하게 보여 혼동을 일으킬 수 있기에 예시와 같이 암묵적으로 L을 사용한다.

이렇듯 기본형 변수를 사용할 때는 저장 허용 범위를 잘 기억해야 한다. 아래 표를 참조하도록 하자.

 

 

기본형 변수의 크기와 범위

 

자료형 저장할 수 있는 값의 범위 크기
bit byte
boolean false, true 8 1
char 'u0000' ~ '\uffff' 16 2
byte -128~127의 정수(0도 양수로 취급) 8 1
short -32768~32767의 정수 16 2
int -2147483648~2147483647의 정수 32 4
long -9223372036854775808~9223372036854775807의 정수 64 8
float 1.4E-45 ~ 3.4E38 32 4
double 4.9E-324 ~ 1.8E308  64 8

 

 

float, double

 

float fSevenDotOne = 7.1f;
float fSevenDotTwo = 7.2F; 

double dSevenDotOne = 7.1d;
double dSevenDotTwo = 7.2D;
double dSevenDotThree = 7.3;

 

float 타입의 실수에는 접미사 f 혹은 F를 붙여 값을 저장해야 한다. double의 경우 f나 F 대신 d, D를 붙인다. 그러나 double은 실수형 변수의 기본 자료형이기 때문에 접미사를 생략이 가능하다.

 

이제 직접 편집기에서 사용해 보도록 하자.

 

package com.devgsp.study.basic;

public class Variable2 {
	public static void main(String[] args) {
		// <boolean 변수 예시>
		
		// true, false를 직접 작성하여 출력
		System.out.println("GSP의 키는 187이 넘는다.");
		System.out.println(false);
		System.out.println("GSP의 키는 140이 넘는다.");
		System.out.println(true);
		System.out.println("==================");
		
		
		// boolean 변수를 사용하여 출력
		// Tip : 현재는 boolean 변수를 단순히 출력만 하고 있어 사용하는 의미가 없어 보이지만 추후 조건식, 논리식을 사용할 떄 유용하게 사용할 수 있다.
		System.out.println("GSP는 박서준보다 잘생겼다.");
		boolean isHandsome = false;
		System.out.println(isHandsome);
		
		System.out.println("GSP는 강남에 빌딩을 7채 갖…");
		boolean isRich = false;
		System.out.println(isRich);
		System.out.println("고 싶다.");
		boolean isWantRich = true;
		System.out.println(isWantRich);
		System.out.println("==================");
		
		
		// <char 변수 예시>
		
		// char 변수를 사용하여 출력
		char chA = 'a';
		char chB = 'b';
		char chC = 'c';
		char blank = ' ';
		
		System.out.println(chA);
		System.out.println(chB);
		System.out.println(chC);
		System.out.println(blank);
		System.out.println(chA + chB + chC);	// 294? \'ㅁ'/?
		System.out.println("==================");
		// Tip : char + int, int + char, char + char, char - char 이 네 가지 연산의 경우 char는 유니코드로 반환되어 연산된다.
		
		
		// <byte, short, int, long 변수 예시>
		// '기본형 변수의 크기와 범위' 표를 참조하여 저장 가능 범위에 주의하도록 하자.
		byte bit8 = 1;

		short shortNum = 20000;

		int age = 32;

		long noGSP = 2147483647;
		//long maxIntPlusOne = 2147483648; // int의 범위를 넘어서는 수로 에러 발생!
		long maxIntPlusOne = 2147483648L;
		
		System.out.println("bit8 : " + bit8);
		System.out.println("shortNum : " + shortNum);
		System.out.println("age : " + age);
		System.out.println("noGSP : " + noGSP);
		System.out.println("maxIntPlusOne : " + maxIntPlusOne);
		System.out.println("==================");
		
		// <float, double 변수 예시>
		// float 타입의 실수에는 접미사 f 혹은 F를 반드시 붙인다.
		// double의 접미사 d, D를 붙이지만 생략이 가능하다.
		
		//float pie = 3.14;	// 에러.
		float fPieLowerF = 3.14f;
		float fPieUpperF = 3.14F;
		
		double dPieLowerD = 3.14d;
		double dPieUpperD = 3.14D;
		double dPie = 3.14;
		
		System.out.println("fPieLowerF : " + fPieLowerF);
		System.out.println("fPieUpperF : " + fPieUpperF);
		System.out.println("dPieLowerD : " + dPieLowerD);
		System.out.println("dPieUpperD : " + dPieUpperD);
		System.out.println("dPie : " + dPie);
	}
}

 

var2_1
Variable2.java 실행 결과

 

[예제]

1. com.devgsp.study.basic
패키지에 MyVariable2클래스를 생성하자.
2. 정수 1을 저장한 int형 변수1.0을 저장한 double형 변수를 더한 값을 출력해 보자.
3. 이번에는 반대로 서로를 뺀 값을 출력해 보자.
4. 1.2000000000000001을 저장한 double형 변수1.3을 저장한 double형 변수를 더한 값을 출력하는 코드를 작성해 보고, 오른쪽에 예상되는 값을 적어 보자.
5. 실행 결과를 본 뒤 답안을 확인해 보자.

 

더보기
package com.devgsp.study.basic;

public class MyVariable2 {
	public static void main(String[] args) {
		int one = 1;
		double dOne = 1.0;
		double d1 = 1.2000000000000001;
		double d2 = 1.3;
		
		System.out.println(one + dOne);
		System.out.println(one - dOne);
		System.out.println(d1 + d2);	// 예상되는 값 : 2.5000000000000001
		System.out.println("오잉?");
		// [추후 학습 예정] 정확한 실수 연산을 하려면 특정 클래스(BigDecimal)를 사용해야 함
	}
}

 

var2_2
MyVariable2.java 실행 결과

 

 

 

 

반응형