본문 바로가기

카테고리 없음

변수와 타입 실습2

1. Escape sequenc

package p01.escape_sequence;

// escape sequence : \n(enter key역할), \t(tab key), \\, \', \'
//  => 특수 문자 (special character)로 문자열 안에서 사용됨

// 키보드에서 enter key를 누르면 2개의 escape sequence 문자가 발생(\n\r)
//  - \n : new line
//  - \r: carrage return
// 문자열(string) : "n줄 바꿈n연습"
// 문자(character) : 'n', '한', '글', 'x'
public class EscapeSequencEx {

	public static void main(String[] args) {
		
		System.out.println("n줄 바꿈n연습");
		System.out.println("\n줄 바꿈\n연습");
		System.out.println("t탭키t연습");
		System.out.println("\\ baxkalash 1개 출력");
		System.out.println("\\\\\\ backslash 3개 출력");
		System.out.println("큰 따옴표 \" 출력");
		System.out.println("작은 따옴표 \' 출력");

	}

}
  • 코딩에는 escape sequence라는 리터럴이 있는데 이 escape sequence는 \가 포함된 문자 리터럴이고 특수한 용도로 사용된다. 위에 코드의 결과값은 아래 사진이다.

위에 코드에 결과를 Console창에 나타낸 것이다.



2. Boolean type

package p02.datatypes_basic;

// boolean type :
// 1. literal 값이 true, false만 사용 가능
// 2. if, switch(제어문) 또는 반복문(while, for 등) 에서 사용
// 3. 현실세계에서는 필요없는 데이터 type이지만, 프로그래밍할 때는 핵심 타입

public class Boolean {

	public static void main(String[] args) {
		boolean stop = true;
		boolean start = false;
		
		System.out.println("stop = " + stop);
		System.out.println("start = " + start);
		
		if (stop) {
			System.out.println("중지합니다.");
		} else {
			System.out.println("시작합니다.");
		}

	}

}

 

  • boolean type은 리터럴(literal) 값이 true, false만 사용이 가능한 타입니다.
  • if, switch(제어문) 또는 while, for(반복문) 등에서 사용된다.
  1. 위에 코드는 stop일때 true라는 값을 start일때 false라는 값을 선언했다.
  2. 그리고 if문을 써서 stop이 true이면 중지합니다.라는 결과가 나오도록 false이면 시작합니다.라는 결과값이 나오도록 if문을 작성하였다.
  3. 그래서 아래 사진처럼 console 창에는 System.out.println()을 이용하여 stop, start 결과랑 if가 true이면 결과 값인 중지합니다.라는 결과값이 나왔다.

위에 코드에 결과를 Console창에 나타낸 것이다.

 



3. Byte type

package p02.datatypes_basic;

// byte : 1 byte의 데이터값만 저장 가능 (-128 ~ 127)
//  - byte type은 사용 권장 안함
public class ByteEx {

	public static void main(String[] args) {
		byte var1 = -128;
		byte var2 = -30;
		byte var3 = 0;
		byte var4 = 30;
		byte var5 = 127;
// 		byte var6 = 128;
		
		System.out.println("var1 = " + var1);
		System.out.println("var2 = " + var2);
		System.out.println("var3 = " + var3);
		System.out.println("var4 = " + var4);
		System.out.println("var5 = " + var5);
		

	}

}

 

  • byte type은 1 byte의 데이터값만 저장 가능하다 (-128 ~ 127가지만 저장 가능)
  • 128이라는 값을 넣을 경우 에러가 발생하기 때문에 위에 코드처럼 128은 주석처리를 하였다.

위에 코드에 결과를 Console창에 나타낸 것이다.



4. Char type

 

package p02.datatypes_basic;

// char type : 문자 한글자를 관리하기 위한 타입 ( 2 bytes)
//   - 문자 예 : 'A', '1', '가', ...
//   - 모든 문자를 unicode로 저장

// 1. ASCII(American Standard Code Information Interchange) code table
//   - 키보드의 숫자, 영문자 대문자/소문자, 특수기호 등에 대하여 2진수 코드로 매핑한 것
// 2. Unicode 코드 테이블 : 2bytes
//   - 영어 ASCII 코드 테이블 포함한 한국어, 중국어, 일어, 독일어, 기타 동남아, 아프리카 등 전세계 언어의 문자를 코드화

public class CharEx {

	public static void main(String[] args) {
		char c1 = 'A';
		char c2 = 65;
		char c3 = '\u0041';
		
		char c4 = '가';
		char c5 = 44032;
		char c6 = '\uac00';
		
		System.out.println("c1 = " + c1);
		System.out.println("c2 = " + c2);
		System.out.println("c3 = " + c3);
		System.out.println("c4 = " + c4);
		System.out.println("c5 = " + c5);
		System.out.println("c6 = " + c6);

	}

}

 

  • char type은 문자 한글자를  관리하기 위한 타입이다.
  • 위에 코드처럼 char c1 = 'A';라고 보통 쓰이고, char c2 =65;는 ASCII code에서 65가 A를 나타낸다. char c3 = '\u0041';은 unicode에서 A를 나타내는 unicode이다. 
  • char type은 영어뿐만 아니라 한글도 나타낼 수 있기 때문에 char c4 ='가'; 라고 표기할 수 있으면 '가'를 ASCII코드와 unicode로 나타낸 것이 c5, c6이다. 

위 사진은 Console창에 위에 코드를 실행하면 나타나는 결과값이다.



5. FloatDouble type

 

package p02.datatypes_basic;

// 실수값 literal의 기본 type은 double임
//  - 실수 literal를 float type에 넣을 경우에는 literal값 끝에 'f'를 붙임
///   예 : 3.14f 의미 : 3.14값을 float type인 4 bytes로 생성해 달라는 명령어

public class FloatDoubleEx {

	public static void main(String[] args) {
		double var1 = 3.14;
//		float var2 = 3.14;
		float var3 = 3.14f;   // f(F) : float, 소문자나 대문자나 상관없음
		double var4 = 0.1234567890123456789;
		float var5 = 0.1234567890123456789f;
		
		System.out.println("var1 = " + var1);
		System.out.println("var3 = " + var3);
		System.out.println("var4 = " + var4);
		System.out.println("var5 = " + var5);
		
		double var6 = 3e6;   // 3*10**6, E:Exponential 이것도 소문자나 대문자 상관없음
		float var7 = 3e6F;
		double var8 = 2e-3;  // 3*10***-3
		
		System.out.println("var6 = " + var6);
		System.out.println("var7 = " + var7);
		System.out.println("var8 = " + var8);
		

	}

}

 

  • Double은 실수 literal(리터럴)에 기본 type이다.
  • 실수 literal(리터럴) float type을 넣을 경우 literal(리터럴) 끝에 'f'를 붙이면 된다. (여기서 'f'는 소문자든 대문자든 상관이 없다.)
  • Ex) float = 3.14f; 의 의미는 3.14값을 float type인 4 bytes로 생성해 달라는 의미이다.

위 사진은 Console창에 위에 코드를 실행하면 나타나는 결과값이다.



6. Int type

 

package p02.datatypes_basic;

// int literal
// 1. 10진수, 8진수, 16진수 사용 가능
// 2. 16진수 (하드웨어와 연계된 프로그램, 통신프로그램)에서 많이 사용됨
public class IntEx {

	public static void main(String[] args) {
		int var1 = 10;
		int var2 = 012;   // 8진수 : 첫번째에 0을 넣으면 8진수
		int var3 = 0xA;   // 16진수
		
		System.out.println("var1 = " + var1);
		System.out.println("var2 = " + var2);
		System.out.println("var3 = " + var3);

	}

}

 

  • int type은 10진수, 8진수, 16진수 모두 사용 가능하다.
  • var2는 10이라는 값을 8진수로 넣은것이고, var3는  10이라는 값을 16진수로 넣은 것이다.

위 사진은 10을 10진수, 8진수, 16진수로 넣었을 때 나오는 결과값을 Console 창에 나타낸 것이다.



7. Long type

 

package p02.datatypes_basic;

// 정수 type literal : 기본은 4 byte임
// long type literal로 만들고 싶으면 정수값 끝에 'L'이나 'l'을 붙이면 되고, 이때 8 byte로 메모리에 만듬

public class LongEx {

	public static void main(String[] args) {
    
		// 기계어로 변환
		// 1. 10을 4 byte로 메모리에 생성
		// 2. long type인 var1에 넣기 위해 4 byte로 된 것을 8 byte로 확장하여 var1에 넣음
        
		long var1 = 10;    // 10 : 4 byte에 만듬
		long var2 = 10L;   // 10L : 8 byte에 만듬 
//		long var3 = 1000000000000;
		long var4 = 1000000000000L;
		
		System.out.println("var1 = " + var1);
		System.out.println("var2 = " + var2);
		System.out.println("var4 = " + var4);

	}

}

 

  • 정수 type literal(리터럴)은 기본 4 byte이다.
  • 정수 type literal(리터럴)을 Long type으로 만들고 싶으면 정수값 끝에  'l'을 붙이면 된다. 이때 8 byte의 메모리 방이 만들어진다. (여기서도 'l'은 소문자든 대문자든 상관이 없다.)
  • var1은 10을 4 byte에 만들었고, var2는 10을 8 byte에 만들었고, var3은 1000000000000을 4 byte에 만들었고, var4는 1000000000000을 8 byte 만들었다.
  • 여기서 var3은 4 byte의 크기를 넘어서 error가 떠서 주석처리를 해주었다.


  • 코딩에서 타입 변환은 2가지로 나눌 수 있다.
  • 자동 (묵시적) 타입 변환인 Promotion
  • 강제 (명시적) 타입 변환인 Casting

8. Casting(강제 형변환)

package p04.datatypes_casting;

public class CastingEx {

	public static void main(String[] args) {
		char ch = 'A';
		int number = 88;
		double d = 100.04;
		long l = (long) d;  // double에서 long등 int type으로 강제형변환(casting)하면 소숫점이하 숫자를 삭제
		int i = (int) l;
		
		System.out.println("ch = " + ch);
		
		ch = (char) number;  // int type인 number를 char type으로 강제 형변환(casting)
		System.out.println("ch = " + ch);
		
		System.out.println("l = " + l);
		System.out.println("i = " + i);
		

	}

}

 

  • 강제 타입 변환은 큰 타입을 작은 타입 단위로 쪼개는 것을 말한다.
  • 작은크기 타입 = (작은크기 타입) 큰크기 타입
  • 예)  double d = 100.04 이면  long l = (long) d 이렇게 써주면 된다. 그러면 double에서 long 타입으로 강제 형변환(Casting)을 하게 된다. 단, 소숫점 이하 숫자는 삭제된다.

위에 코드에 결과를 Console창에 나타낸 것이다. (강제 형변환을 했기 때문에 소숫점이하 숫자는 삭제되었다.)



이렇게 오늘은 특수문자와 타입에 대해서 실습을 해보았습니다. 특수문자와 타입들은 평소 코딩에서도 많이 사용하는 것이기 때문에 잘 알아두면 좋은 코딩을 할 수 있다고 배웠습니다.^^

반응형