반응형

 

정수 타입

 

- byte 타입

: 1byte (127 ~ -128)

   8bit (2^8)

 

bit와 byte의 관계

 

package kr.or.ddit.study02.sec02;

public class IntergerExample {
	public static void main(String[] args) {
		IntergerExample obj = new IntergerExample();
		obj.intExample();
	}
    
	public void byteExample() {
		/*
		 * byte : 1byte (127 ~ -128)
		 * 		(8bit 2^8)
		 */
		
		byte b1 = 127;
		System.out.println("b1 = " + b1);
		
//		byte b2 = 128; // 컴파일 에러
//		b1 = b1 + 1; // 자바는 기본적으로 int type으로 
					 // byte < int 크기가 차이 나기 때문에 담을 수 없다.
	}
}

 

 

- short 타입

: 2byte (32767 ~ -32768)

  16bit (2^16)

 

package kr.or.ddit.study02.sec02;

public class IntergerExample {
	public static void main(String[] args) {
		IntergerExample obj = new IntergerExample();
		obj.shortExample();
	}
	public void shortExample() {
		/* 
		 * short : 2byte(32767 ~ -32768)
		 * 		(16bit 2^16)
		 */
		short s1 = 100;
		System.out.println("s1 = " + s1);
		
		short s2 = (short)(s1 + 100); // short를 사용하기 위해서 앞에 (short)를 기입하여 코딩해야함.
		System.out.println("s2 = " + s2);
	}
}

 

 

- int 타입

: 기본 정수형

  4byte

  32bit (2^32)

 

package kr.or.ddit.study02.sec02;

public class IntergerExample {
	public static void main(String[] args) {
		IntergerExample obj = new IntergerExample();
		obj.intExample();
	}
	public void intExample() {
		/*
		 * int : 4byte(32bit 2^32)
		 * 	기본 정수형
		 */
		int i1 = 100;
		System.out.println("i1 = " + i1);
		
		int i2 = i1 + 100;
		System.out.println("i2 = " + i2);
	}
}

 

 

- long 타입

: 8byte

  64bit (2^64)

int 범위를 넘어가지 않는 값일때는 데이터 끝에 L(l)을 추가한다. 

 

package kr.or.ddit.study02.sec02;

public class IntergerExample {
	public static void main(String[] args) {
		IntergerExample obj = new IntergerExample();
		obj.longExample();
	}
	
	public void longExample() {
		/*
		 * long : 8byte(64bit 2^64)
		 * 		    테이터 끝에 L(l) 을 추가
		 */
//		long l1 = 1000000000000L;
		long l1 = 1000000000000l;
		System.out.println("l1 = " + l1);
		
		long l2 = 10000; // int 범위를 넘어가지 않으면 뒤에 L(l)을 추가하지 않아도 됨.
//		System.out.println("l1 = " + l1);
	}
}

 

 

- 리터럴(literal)

소스 코드에서는 2진수, 8진수, 10진수, 16진수로 나타낼 수 있다.

 

1. 2진수의 경우 앞에 0b 또는 0B로 시작한다.

 

int num1 = 0b1011; // 10진수로 11

int num2 = 0B10100; // 10진수로 20

 

 

2. 8진수의 경우 앞에 0을 기입한다.

 

int num = 013; // 10진수로 11

 

 

3. 16진수의 경우 0x 또는 0X로 시작하며 숫자와 A, B, C, D, E, F 또는 a, b, c, d, e, f로 구성된다.

 

int num1 = 0xB3; // 10진수로 179

int num2 = 0X2A0F; // 10진수로 10767

 

 

 

문자 타입

 

- char 타입

: 하나의 문자를 저장할 수 있는 타입

부호 없는 2byte 정수 (0 ~ 65535)

문자의 경우 작은 따옴표(' ')로 감싸야 하며 숫자의 경우 유니코드로 변환되어 저장된다.

 

package kr.or.ddit.study02.sec02;

public class CharExzmple {
	public static void main(String[] args) {
		// char : 부호 없는 2byte 정수 (0 ~ 65535)
		// '' 작은 따옴표로 감싸며 한문자 표현 가능.
		
		char c1 = 'A';
		System.out.println("c1 = " + c1);
		
		char c2 = 97; // a의 아스키 코드
		System.out.println("c2 = " + c2);
		
		char c3 = (char)(c2 - 32); // char + int 형을 더하기 때문에 바꿔줘야 함. char의 바이트가 int보다 작기 때문.
		System.out.println("c3 = " + c3);
		
		int i4 = 44032;
		char c4 = (char)i4;
		System.out.println("c4 = " + c4);
	}
}

 

결과 화면

 

 

 

문자열 타입

 

- String 타입

: 복수 개의 글자로 구성된 타입으로 데이터 타입이 아니다.

큰 따옴표(" ")로 묶어 선언한다.

 

package kr.or.ddit.study02.sec02;

public class StringExample {
	public static void main(String[] args) {
		/*
		 * 문자와 문자열
		 * 
		 * 문자(char)     : 한글자 데이터로 ' '로 묶어 선언
		 * 문자열(string)  : 복수개의 글자로 구성된 자료(데이터 타입은 아님)
		 * 				   " "로 묶어 선언
		 */
		
		String name1 = "강감찬";
		String name2 = "홍길동";
		System.out.println(name1 + "\t" + name2);
		
		String result3 = 10 + 3 + ""; // 더한 후 문자열 추가 13
		String result4 = "" + 10 + 3; // 처음부터 문자열로 취급 103
		System.out.println(result3);
		System.out.println(result4);
	}
}

 

결과 화면

 

 

 

실수 타입

 

- float 타입

: 4byte (1.4e-45 ~ 3.4e+38)

부호 1bit, 지수 8bit, 가수  23bit

변수 선언 후 변수 초기화 시 값의 마지막에 f(F)를 기입해야 한다.

 

 

- double 타입

: 8byte (4.94e-324 ~ 1.8e+308)

부호 1bit, 지수 11bit, 가수 52bit

자바에서는 double 타입이 기본형이다.

 

package kr.or.ddit.study02.sec02;

public class FloatExample {
	public static void main(String[] args) {
		FloatExample obj = new FloatExample();
		/*
		 * 1. float : 4byte ( 부호 1bit 지수 8bit, 가수 23bit
		 * 					  1.4e-45 ~ 3.4e+38)
		 * 2. double : 8byte ( 부호 1bit 지수 11bit, 가수 52bit
		 * 					  4.94e-324 ~ 1.8e+308) 
		 * 
		 * 둘 다 정확한 값이 나오지 않아 하단의 코드 작성 시 다른 값으로 결과가 나온다.
		 * double의 경우 더 정확한 값을 나온다.
		 */
		
		float f1 = 3.141592f;
		double d1 = 3.141592;
		
		if(f1 == d1) {
			System.out.println("같은 값.");
		} else {
			System.out.println("다른 값.");
		}
	}
}

 

결과 화면

 

 

 

논리 타입

 

: 참과 거짓을 저장하는 타입.

 

- boolean 타입

 

package kr.or.ddit.study02.sec02;

public class BooleanExample {
	public static void main(String[] args) {
		// 논리형 true/false
		// 1byte 조건문과 제어문의 실행 흐름을 변경하는데 사용.
		
		boolean flag = false;
		System.out.println("flag = " + flag);
		
		flag = (1<2);
		System.out.println("flag = " + flag);
	}
}

 

결과 화면

 

 

 

막간의 TIP

 

제어문자

: 인쇄 할 수 없거나 키보드로 표현할 수 없는 특별한 문자.

역슬레시(\)와 한 개의 문자와 결합하여 작성한다.

 

- 자주 사용하는 제어 문자

이스케이프 문자 출력 용도
\n 개행 줄바꿈, 스크린 커서 위치를 다음 줄의 처음으로 옮김. (= enter)
\t 수평탭, 스크린 커서를 다음 탭으로 옮김.
\r 캐리지 리턴, 스크린 커서의 위치를 현재줄의 처음으로 옮김.
개행하지 않는다. 이 기호 다음에 오는 문자를 덮어 씌운다.
\\ 역슬래시 문자 출력
\" " 문자 출력 | 일반적인 ""은 감싸기 위해 사용되어서 따로 역슬레시를 넣어야 함.
\' ' 문자 출력
\b 백스페이스

 

반응형