본문 바로가기
국비지원/JAVA

[JAVA] 2-2. 데이터타입

by cosmog 2022. 9. 22.
반응형
데이터타입
  • 큰범주로 4가지가 있고 각각 총 9가지가 있다.
우선적으로 "bit"에 대하여 이해하자.
|0|0|0|1|
1칸이 1bit -> 8bit가 되면 1byte가 된다.
1byte가 1024bypte되면 1kb가된다.
1024kb->mb
🔹 8bit->1byte->kb->mb->gb
= 일단 byte까지만 알아두면 된다.

🔹 byte - 1byte
🔹 short - 2byte
🔹 int - 4byte (대략 21억까지 저장가능)(default 사용)
🔹 long - 8byte

 

1byte의 최대값에 대하여

|1|1|1|1|1|1|1|1|
8칸을 최대로 다 쓰면 -값을 저장하지 못함.
따라서, 제일 앞칸은 양과음을 나타내는 칸으로 사용.


|양/음|1|1|1|1|1|1|1|
=> 제일 큰 값은 127이다.
=> 음수는 -128까지가능
=> 즉, -128 ~ 127까지 가능.
-128 = 10000000 = 128가능

 

❓칸이 다찼을때는 -128로 사용, 칸이 널널할때는 128로 사용한다는데 이해하지 못했다.

1. 정수형 - byte / int / short / long

//정수형 실습
		//byte, short, int, long 각각의 저장가능한 숫자
		//byte a = 128; 127까지 저장가능하다.
		byte b = -128; // byte -128~127까지 저장가능
		
		short c = 32767;//32768은 안되고 32767까지 가능하다
		short d = -32768;
		
		int e = 2147483647;
		int f = -2147483648;
		
		long g = 123123123123123123L;
		//long은 숫자뒤에 L을 붙여서 long타입임을 명시해주어야 에러가 안뜸.
		System.out.println(g);

 

2. 실수형 - float / double

  • float - 4byte
  • double - 8byte (default 사용)

 

  • 실수가 실제 값을 어떻게 저장하는지 형태를 알아둬야한다.
    • float 32bit 대략적으로 실수와 정수의 양을 구분하여 반절 나눠서 사용한다.
  • 실수 부분을 표현할때 문제 발생. (한계치가 있다)
    • float 소수부 7자리까지 신뢰성이 있다고 본다.
    • double은 15자리까지 신뢰성이 있다고 본다.
    • 연산이 일어났을 때, 오차가 있다. (어쩔수 없는 한계이다.)
      • 반올림/올림같은 것으로 맞춰줘야 한다.
// 실수형 실습
		float f1 = 3.14F; // float을 표기할 때에는 f를 붙여준다.(기본형이 double이므로)
		double d1 = 3.14;
		
		float f2 = 3.1415923333F; // 7자리까지 유효
		double d2 = 3.1415923333; // 15자리까지 유효
		
		System.out.println(f2);
		System.out.println(d2);
결과값
3.1415923
3.1415923333

3. 논리형 - boolean

  • boolean 타입에는 true(1)/false(0)만 저장할 수 있다.
  • boolean은 1bit임
//논리형 실습
		boolean bool1 = true;
		boolean bool2 = false;
		
		System.out.println(bool1);
		System.out.println(bool2);
결과값
true
false

4. 문자형 - char / string

  • char

2byte, 부호가 없는 bit 16칸을 풀로 사용함 UNSIGNED 
' '로 묶어서 한글자(문자)만 저장가능

  • string 

가변형 사이즈
 " "로 묶어서 문자열 저장가능

//문자열
		String s1 = "hello";
		String s2 = " world"; // 공백도 문자로 인식됨.
		
		//문자열은 +로 연결하면 붙인 결과를 가져옵니다.
		System.out.println(s1 + s2);
		
		//문자열의 길이를 알려주는 length()
		System.out.println(s1.length());
		System.out.println(s2.length());
		
		//문자열과 다른 타입의 + 연산
		System.out.println(100 + 200); //300
		System.out.println("100" + 200); // 문자는 가장 강력한 타입 (문자열 우선) , 문자열에 다른타입 붙으면 결과는 문자열이 된다.
		System.out.println(100 + 200 + "world"); // 300world
		System.out.println("world" + 100 + 200); // world100200 문자열이 먼저나오면 뒤에는 다 문자됨.
결과값
hello world
5
6
300
100200
300world
world100200

💡자바는 데이터 타입이 굉장히 중요하여 뒤로 갈수록 중요하다.

5. 2진수 / 8진수 / 16진수 표기

		/*
		 * 2진수로 저장할때에는 0b를 붙임
		 * 8진수로 저장할때에는 0을 붙임
		 * 16진수로 저장할때에는 0x를 붙임
		 */
		
		int bin = 0b1010; // 2진수
		int octa = 064; // 8진수
		int hexa = 0xAC00; //16진수

		//java는 문자열과 변수를 같이 출력하고 싶을 때 그냥 +를 사용하면된다.
		System.out.println("2진수 1010은:" + bin + "입니다");
		System.out.println("8진수 64은:" + octa + "입니다");
		System.out.println("16진수 AC00은:" + hexa + "입니다");

6. e표기법 (참고용)

		//e표기법(구경만)
		//자리가 부족한 경우 실수부와 정수부의 크기를 조절해 줄수 있는 표기법
		float f3 = 314.15e-2F; // 10 -2승
		double d3 = 0.031415e2; //10의 2승
		
		System.out.println(f3);
		System.out.println(d3);
결과값
3.1415
3.1415
반응형