이 게시물은 아래 버전을 기준으로 작성되었습니다. 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);
}
}
[예제] 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)를 사용해야 함
}
}

'개발 지식 > Java' 카테고리의 다른 글
[Java] 변수(4) - 상수 (0) | 2022.07.11 |
---|---|
[Java] 변수(3) - 참조형 변수와 String (0) | 2022.07.10 |
[Java] 변수(1) - 변수 선언 & 초기화 (0) | 2022.07.06 |
[Java] 주석 작성하기 (0) | 2022.07.05 |
[Java] 글자를 출력하는 간단한 프로그램 만들기 (0) | 2022.07.04 |