새소식

JAVA

자바 기초 : 변수의 기본타입

  • -

핵심개념

  • 변수의 기본타입 : 자바에서는 모든 변수에 타입을 정의하고 있다. 변수가 가지는 타입에 따라 변수에 저장할 수 있는 값의 종류와 허용 범위가 달라진다.

  • 정수 타입 : 소수점이 없는 정수를 저장할 수 있는 타입. (1bit : 0 또는 1을 표현할 수 있는 단위)
타입 메모리 사용크기 저장되는 값의 허용범위
byte 1byte 8bit -128~127
short 2byte 16bit -32,768~32,767
char 2byte 16bit 0~65535(유니코드) -> 음수값을 가질 수 없음
int 4byte 32bit -2,147,483,648~2,147,483,647
long 8byte 64bit -9,223,372,036,854,775,808~9,223,372,036,854,775,807
->값이 int형 범위를 넘어서면 반드시 뒤에 L이나 l을 붙여 long타입임을 알려주어야 한다.

 

  • 리터럴(literal): 소스코드에서 프로그래머에 의해 직접 입력된 값
    ex) int a1 = 10;   -> 여기서 10이 리터럴
진수 표현방법 10진수 변환 값
2진수 0b 또는 0B로 시작, 0과 1로 구성 0b1011 (2^3)*1 + (2^2)*0 + (2^1)*1 + (2^0)*1 = 8+2+1 = 11
8진수 0으로 시작, 0~7로 구성 0206 (8^2)*2 + (8^1)*0 + (8^0)*6 = 128 + 0 + 6 = 134
10진수 소수점 없는 0~9로 구성 365 365
16진수 0x 또는 0X로 시작, 0~9 또는 ABCDEF 또는 abcdef로 구성
(알파벳도 하나의 수로 인식. a:10,b:11,c:12,d:13,e:14,f:15)
0xB3 (16^1)*11 + (16^0)*3 = 176 + 3 = 179

 

public static void main(String[] args) {
   int var1 = 0b1011;
   int var2 = 0206;
   int var3 = 365;
   int var4 = 0xB3;

   System.out.println(var1);
   System.out.println(var2);
   System.out.println(var3);
   System.out.println(var4);
}
실행결과 :
11
134
365
179

 

  • char타입 : 하나의 문자를 저장할 수 있는 타입. 문자리터럴은 '로 감싼 것으로 유니코드로 변환되어 저장된다. 또한 char는 정수 타입이므로 10진수 또는 16진수 형태의 유니코드를 저장 가능하다.
    ex) 'a','가'
    ex) char var1 = 'A'    //유니코드 : 65
    ex) char b = 0x0041     /    char c = 65;
public static void main(String[] args) {
   char c1 = 'A';   //문자를 직접 저장
   char c2 = 65;   //10진수로 저장, char 타입에 음수는 안됨.
   System.out.println(c1);
   System.out.println(c2);

   char c4 = '가';   //문자를 직접 저장
   char c5 = 44032;   //십진수로 저장
   System.out.println(c4);
   System.out.println(c5);
}
실행결과 :
A
A

 

  • 문자열 : "로 감싼 문자들. 문자열은 char타입에는 저장할 수 없음. String 타입은 기본타입이 아니고 클래스 타입이다.
public static void main(String[] args) {
   //char var1 = "A"; "A"가 문자열로 인식되어 에러발생
   String var2 = "A";
   String name = "김땡땡";
   String job = "간호사";

   System.out.println(var2);
   System.out.println(name);
   System.out.println(job);
}
실행결과 : 
A
김땡땡
간호사

 

  • 이스케이프문자 : 문자열 내부에 \는 이스케이프 문자를 뜻하며 이스케이프 문자를 사용하면 특정 문자를 포함시키거나, 문자열의 출력을 제어할 수 있다.
이스케이프 문자 출력 용도
\t 탭만큼 띄움
\n 줄바꿈(유닉스, 윈도우)
\r 줄바꿈(맥, 윈도우)
\" "출력
\' '출력
\\ \출력
\u16진수 16진수 유니코드에 해당하는 문자 출력
 public static void main(String[] args) {
   System.out.println("번호\t이름\t직업");
   System.out.print("행 단위 출력1");
   System.out.print("행 단위 출력2\n");
   System.out.print("행 단위 출력3\r");
   System.out.println("우리는\"개발자\"입니다.");
   System.out.println("봄\\여름\\가을\\겨울");
}
실행결과 :
번호 이름 직업
행 단위 출력1행 단위 출력2
행 단위 출력3
우리는"개발자"입니다.
봄\여름\가을\겨울

 

  • 실수타입 : 소수점이 있는 실수 리터럴을 저장할 수 있는 타입. 
타입 메모리 사용크기 정밀도(소수점 이하 자리)
float 4byte 32bit 7자리
double 8byte 64bit 15자리 (자바는 실수리터럴을 기본적으로 double 타입으로 해석하기 때문에 double 타입변수에 저장을 해야한다. float 타입에 저장하고 싶다면 리터럴 뒤에 f 또는F를 붙여야 컴파일 에러가 발생하지 않는다.

-> 알파벳 소문자e 또는대문자 E가 포함되어 있는 숫자 리터럴은 지수와 가수로 표현된 소수점이 있는 10진수 실수로 인식한다.

ex) 5e2  :  5.0 * 10^2 = 500.0

      0.12E-2 : 0.12 * 10^-2 = 0.0012

public static void main(String[] args) {
   //float var1 = 3.14; 기본적으로 실수는 double타입으로 인식
   float var2 = 3.14f;
   double var3 = 3.14;
   System.out.println(var2);
   System.out.println(var3);

   //int var4 = 3e6; 실수로 취급됨으로 에러발생
   double var5 = 3e6;
   float var6 = 3e6F;
   double var7 = 2e-3;
   System.out.println("var5:"+var5);
   System.out.println("var6:"+var6);
   System.out.println("var7:"+var7);
}
실행결과 : 
3.14
3.14
var5:3000000.0
var6:3000000.0
var7:0.002

 

  • 논리타입 : 참과 거짓을 의미하는 논리 리터럴로 true와 false를 저장할 수 있다. 조건의 결과가 참이냐 거짓이냐에 따라 실행을 다르게 한다. 논리리터럴의 자료형은 1byte 크기의 boolean을 사용한다.
public static void main(String[] args) {
   boolean stop = true;
   if(stop) {
   System.out.println("중지합니다.");
   }else {
   System.out.println("시작합니다.");
 }
}
실행결과 : 중지합니다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.