1. 데이터 타입이란 뭘까?
자바에서 데이터 타입(자료형, Data type)은 어떤 값의 유형을 뜻한다. 데이터 타입에 따라 값이 차지하는 메모리 공간의 크기와, 값이 저장되는 방식이 결정된다. 데이터 타입은 자료형이라고도 한다.
- 변수 상자의 유형이다 라고 생각해 보자.
- 자바 언어에서 제공되는 데이터 타입
2. 데이터 타입 (정수형)과 상자의 크기?
우리가 어떠한 데이터를 저장해 두거나 연산 시켜 결과를 담아 두고 싶다면 메모리 공간을 어딘가에 만들어 두어야 합니다.
package basic.ch01;
public class DataType1 {
/**
* 데이터 타입이란 상자에 들어 갈 수 있는 값의 유형과 크기를 지정하는 것
*/
// 코드의 시작점
public static void main(String[] args) {
// 데이터 타입의 종류
// 1. 기본 자료형 (primitive data type)
// 2. 참조 타입 (Reference type)
// 기본 자료형
// [정수형, 문자형(문자열x), 실수형, 논리형] 4가지로 구분하자.
// 정수형 - 정수는 소주점 이하를 포함하지 않는 숫자를 의미합니다.
// 1, 2, -5, 100 등은 모두 정수 입니다.
byte byteBox; // 1바이트 -> 네모칸 한칸은 1bit --> 8bit --> 1byte;
short shortBox; // 2바이트 -> 16bit --> 2byte
int intBox; // 4바이트 -> 32bit
long longBox; // 8바이트 -> 64bit
// 위 상자들은 정수값을 담을 수 있는 상자인데 크기가 정해져 있다.
byteBox = -128;
byteBox = 127; //
shortBox = -32768;
shortBox = 32767;
// 약 +- 21억까지 사용 가능하다.
intBox = -2147483648;
intBox = 2147483647;
// 약 경까지
longBox = -9223372036854775808L; // 숫자 마지막에 L은 접미사라고 합니다.
longBox = 9223372036854775807L; // int 값이 아니라 long 값이라고 표시 용도이다.
// L value = R value
// 보통 오른쪽에 기술 되는 수의 기본 단위는 4바이트 크기인 int 형으로 먼저 인지한다.
// 정수형에 기본 연산 단위는 int형 이다.
} // end of main
} // end of class
3. 데이터 타입(문자형)
byte 와 bit 란 뭘까?
Bit (비트):
- 컴퓨터의 최소 데이터 단위입니다.
- 이진수(0 또는 1)로 표현되는 정보의 단위입니다.
- 1비트는 2가지의 상태를 나타낼 수 있습니다. 예를 들어, 스위치가 켜져있는지(1) 꺼져있는지(0)를 나타낼 수 있습니다.
- 컴퓨터의 모든 데이터와 명령은 이진수로 표현되며, 이진수의 각 자리는 비트에 해당합니다.
Byte (바이트):
- 8개의 비트로 이루어진 데이터 단위입니다.
- 1바이트는 일반적으로 컴퓨터에서 문자, 숫자, 기호 등의 하나의 문자를 나타내는 데 사용됩니다.
- 예를 들어, 영문 알파벳 한 글자는 보통 1바이트로 표현됩니다.
bit는 정보의 최소 단위이고, byte는 데이터를 저장하고 표현하는 데 사용되는 더 큰 단위입니다
핵심 정리 - 8비트는 1바이트, bit 는 물리적인 단위, byte는 논리적인 단위이다 라고 기억합시다.
- 이진수(0, 1) 이라는 개념은 이해 했을까요?
+---+---+---+---+---+---+---+---+
| | | | | | | | |
+---+---+---+---+---+---+---+---+
위 상자에 크기는 몇 바이트 일까요? -> 8bit -> 1byte
+---+---+---+---+---+---+---+---+
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
+---+---+---+---+---+---+---+---+
위 상자에 데이터를 10진수로 표기한다면 얼마가 될까요? 8bit 안에 값은 -> 양수 3
+---+---+---+---+---+---+---+---+
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
+---+---+---+---+---+---+---+---+
위 상자에 데이터를 10진수로 표기한다면 얼마가 될까요? 8bit 안에 값은 -> 양수 2
+---+---+---+---+---+---+---+---+
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
+---+---+---+---+---+---+---+---+
위 상자에 데이터를 10진수로 표기한다면 얼마가 될까요? 8bit 안에 값은 -> 음수 2
상자의 맨 앞은 1은 음수값을 나타내고 0이면 양수값을 나타냅니다.
컴퓨터에서 음수값을 표현하기 위해서는 보수라는 개념을 활용 합니다.
char 자료형 이해
**잠깐! 고민해보기🤚
문자 자료형도 데이터인데 위에서 컴퓨터의 모든 데이터와 명령은 이진수로 표현된다고 배웠는데 문자는 컴퓨터에 어떻게 저장되고 표현이 될까?**
컴퓨터에서 문자를 표현하고 처리하기 위해 문자표가 사용됩니다. (미리 만들어 놓음)
문자표는 ASCII (American Standard Code for Information Interchange), Unicode, UTF-8, UTF-16 등의 형식으로 구성될 수 있습니다.
- ASCII는 초기에 사용되었던 문자 인코딩 방식 중 하나로, 주로 미국에서 사용되었습니다.
- Unicode는 전 세계의 모든 문자를 나타내기 위해 설계된 표준 문자 인코딩 시스템입니다.
- UTF-8은 Unicode의 문자를 효율적으로 인코딩하는 방식 중 하나입니다. 1바이트에서 4바이트까지 다양하게 문자를 표현할 수 있음
- UTF-16 은 2바이트로 문자를 표현
package basic.ch01;
public class DataType2 {
/**
* 문자 데이터 타입
* char 자료형의 크기는 2byte입니다.
*/
// 코드시작
public static void main(String[] args) {
// 기본 자료형 중 - 문자 타입(사실은 정수형)
// 문자를 저장하기 위한 변수를 선언할 때 사용.
// char 타입은 단, 하나의 문자만을 저장할 수 있다.
char charBox;
charBox = 'A'; // char는 홑따옴표를 사용한다.
System.out.println(charBox);
// charBox = '가나'; // 대입 불가
// 참고 ! 두개 이상에 문자가 연속된 형태를(String) 문자열 --> "안녕 반가워"
System.out.println("------------------------------------------------");
System.out.println((int)charBox);
// 도전 문제
// 소문자 a, b, c는 정수값으로 얼마일까?
char a;
a = 'a';
System.out.println("a 값 : " + (int)a);
char b;
b = 'b';
System.out.println("b 값 : " + (int)b);
char c;
c = 'c';
System.out.println("c 값 : " + (int)c);
} // end of main
} // end of class
- 인코딩과 디코딩이란 뭘까?
변수에 char 타입에 데이터를 저장하고 출력하는 과정을 간단하게 이해해 봅시다.
인코딩이란?
이진수를 문자형으로 바꾸는 과정을 일반적으로 "인코딩(Encoding)"이라고 합니다. 인코딩은 정보를 특정 형식으로 변환하는 과정을 의미하며, 주로 컴퓨터에서 데이터를 다룰 때 사용됩니다.
디코딩이란?
문자를 이진수로 변환하는 과정은 일반적으로 "디코딩(Decoding)"이라고 합니다. 디코딩은 인코딩의 반대 과정으로, 정보를 특정 형식에서 원래의 형식으로 변환하는 과정을 의미합니다.
4. 데이터 타입(실수형)
- 실수란 뭐야?
수학적으로 정수가 아닌 숫자를 의미합니. 실수는 소수점 이하 값을 가질 수 있는 숫자이며, 유리수와 무리수를 포함합니다. 예를 들어, 3.14나 1.732는 실수입니다. 프로그래밍에서는 이러한 실수를 다루기 위해 실수형 데이터 타입을 사용합니다
- 실수 데이터 알아 보기
실수형은 프로그래밍에서 사용되는 데이터 타입 중 하나로, 소수점 이하 값을 포함하는 숫자를 나타냅니다.
package basic.ch01;
public class DataType3 {
// 메인 함수 - 코드의 시작점
public static void main(String[] args) {
//기본 데이터 타입
//참조 타입
// 기본 데이터 타입 - 실수형
// float, double
float floatBox1 = 0.5f; // 4바이트, f 는 접미사
float floatBox2 = 0.5F; // 접미사 대소문자 둘다 사용가능
double doubleBox1 = 0.123;
double doubleBox2 = 1.12345678;
// double 8byte 크기이다. 시룻에 기본 연산 단위 이고 그 이유는
// 소수점을 더 많이 표현할 수 있기 때문에 값에 정확도를 높일 수 있다.
// 콘솔창 결과 출력 - 콘솔창에서는 기본적으로 정확한 데이터 타입을 확인할 수 없다.
System.out.println(floatBox1);
System.out.println(doubleBox1);
System.out.println(0.5f);
System.out.println(0.10d);
} //end of main
} // end of class
- L value 와 R value
사실 L-value와 R-value는 C 및 C++과 같은 언어에서 사용되는 용어이지만 학습하는데 이해도를 높이기 위해서 간단하게 개념을 살펴 봅시다.
L-value는 주로 할당(대입) 연산자의 왼쪽에 나타나는 표현식이이고 R-value는 "값 그 자체"를 나타냅니다. 즉, 실제로 값을 나타내는 것을 의미합니다. 예를 들어, int y = 20;에서 20은 R-value입니다.
그렇다면, 오른쪽에 나타나는 값 또한 사실 메모리 어딘가에 저장하는 것이 맞습니다. R-value는 값을 생성하므로, 해당 값은 메모리에 저장되어야 합니다. 값을 생성하려면 해당 값을 저장할 메모리 공간이 필요합니다.
그래서 오른쪽에 정수를 사용한다면 4바이트 크기인 int 형의 데이터 타입이 사용이 되고 실수를 사용하게 된다면 8바이트 크기인 double 형의 데이터 타입이 사용 됩니다.
*핵심 정리*
정수에 기본 연산 타입은 int 형이고 실수형에 기본 연산 타입은 double입니다. 그 외에 데이터 타입을 사용하려면 접미사를 사용하여 명시를 해주어야 합니다.
5. 데이터 타입(논리형)
- 논리 자료형에 대한 개념 살펴 보기
논리 자료형은 프로그래밍에서 사용되는 데이터 타입 중 하나로, 논리적인 참(true)과 거짓(false)을 표현합니다. 대부분의 프로그래밍 언어에서는 불리언(Boolean)이라고도 불립니다. 이러한 논리 자료형은 주로 조건문, 반복문 및 논리 연산과 같은 논리적인 연산에 사용됩니다.
- 논리 자료형 사용해 보기
package basic.ch01;
public class DataType4 {
// 코드시작 지점
public static void main(String[] args) {
// 기본 자료형
// 논리 자료형 (사실을 관찰하고 결과값이 참, 거짓 판별)
// 크기는 1byte 크기 상자이다. [][][][][][][][1]
boolean isMarried = false; // 변수에 선언과 동시에 초기화
System.out.println(isMarried);
isMarried = true;
System.out.println(isMarried);
boolean isOK; //변수의 선언
isOK = true;
System.out.println("같이 점심 먹으실? " + isOK );
System.out.println("-------------------------");
System.out.println(true);
System.out.println(false);
} // end of main
} // end of class
연습
package basic.exercise;
public class Exercise2 {
// 코드의 시작점(main 함수)
public static void main(String[] args) {
//1. 정수 550 을 tecoBox1 이름으로 변수에 담아 보세요.
int tecoBox1 = 550; // 변수에 선언과 동시에 초기화
//2. 정수 22억을 tecoBox2 이름으로 변수에 담아 보세요.
long tecoBox2 = 220000000l;
//3. 문자 A를 tecoBox3 이름으로 변수에 담아 보세요.
char tecoBox3 = 'A';
//4. 실수 float 타입으로 0.12345678을 tecoBox4 이름으로 변수에 담아 보세요.
float tecoBox4 = 0.12345678f;
//5. 실수 double 타입으로 200.0035을 tecoBox5 이름으로 변수에 담아 보세요.
double tecoBox5 = 200.0035;
//6. 논리 자료형 isOk 이름의 변수를 선언해 보세요.
boolean isOK;
//7. isOk 변수에 값을 false로 초기화 해보세요.
isOK = false;
//8. isOk 변수에 값을 true로 변경해 보세요.
isOK = true; // 변수의 효용
// 9. 변수란 무엇인지 서술해 보세요.
// 변수란 변할 수 있는 수
//10. 기본 데이터 타입에 종류 8가지를 서술해 보세요.
// 표기방법 (byte, short , ...)
// 정수형 : byte, short, int, long
// 실수형 : float, double
// 문자형 : char
// 논리형 : boolean
} //end of main
} // end of class
'Java > JAVA 1 - 기초문법' 카테고리의 다른 글
JAVA - 연산자(항, 대입, 부호) (0) | 2024.04.09 |
---|---|
명령어를 통한 컴파일, 실행 (0) | 2024.04.09 |
JAVA - 형 변환(type casting) (0) | 2024.04.09 |
Java - 상수 (0) | 2024.04.09 |
JAVA 설명, 변수선언 (0) | 2024.04.08 |