저장공간에 저장하는 값은 0과 1을 통한 숫자값을 저장한다.
문자를 숫자로 저장하는 방법에는 여러가지가 있다.
그 중 Java에서는 기본적으로 아스키코드라는 규칙으로 문자를 저장한다.
숫자 -> 문자
// 숫자 -> 문자
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int asciiNumber = sc.nextInt();
char ch = (char)asciiNumber; // 문자로 형변환을 해주면 숫자에 맞는 문자로 표현됩니다.
System.out.println(ch);
}
}
문자 -> 숫자
// 문자 -> 숫자
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char letter = sc.nextLine().charAt(0); // 첫번째 글자만 받아오기위해 charAt(0) 메서드를 사용합니다.
int asciiNumber = (int)letter; // 숫자로 형변환을 해주면 저장되어있던 아스키 숫자값으로 표현됩니다.
System.out.println(asciiNumber);
}
}
문자와 문자열
선언 관점에서 차이점
- 문자(char) : 문자 한개만 저장하며 따옴표를 사용하여 값을 지정한다.
- 문자열(String) : 문자 여러개를 문장형태로 저장하며 쌍따옴표를 사용하여 범위를 지정한다.
char alphabet = 'A'; // 문자 하나를 저장합니다.
String message = "Hello World"; // 문자열을 저장합니다.
저장 관점에서 차이점
- 문자(char) : 문자 뒤에 \0(널문자)가 없다. (1 byte만 쓰기 때문에 끝을 알아서 데이터만 저장하면 됨)
- 문자열(String) : 문장의 끝에 \0(널문자)가 함께 저장된다. (몇개의 byte를 쓸지 모르기 때문에 끝을 표시해야 함)
참조형
참조형 변수 = 주소형 변수
다른 기본형 변수가 실제 값을 저장하는 저장공간 이라면 참조형 변수는 실제 값이 아닌 원본값의 주소값을 저장한다.
- 기본형 변수 : 원본값이 Stack 영역에 있습니다.
- 참조형 변수 : 원본값이 Heap 영역에 있습니다.
* Stack 영역에는 따로 저장 해둔 원본값의 Heap 영역주소를 저장합니다.
Stack 영역 vs Heap 영역
- Stack은 정적으로 할당된 메모리 영역
- 그래서, 크기가 몇 byte 인지 정해져있는 기본형 변수를 저장한다.
- 추가로, 크기가 정해져있는 참조형 변수의 주소값도 저장한다.
- Heap은 동적으로 할당된 메모리 영역
- 그래서, 크기가 계속 늘어날 수 있는 참조형 변수의 원본을 저장한다.
입력과 출력
- 입력 : Scanner.in 객체의 next() 명령을 사용해 입력을 받는다.
- 출력 : System.out 객체의 println() 명령을 사용해 출력을 한다.
Scanner sc = new Scanner(System.in); // Scanner 객체를 new 명령어로 생성합니다.
String input = sc.next(); // sc(Scanner)의 .next(); 를 실행하면 input 변수에 입력한 글자를 받을 수 있습니다.
System.out.println("입력값 : " + input); // 입력한 글자를 출력합니다.
// 실행 결과
{입력}
입력값 : {입력}
비트와 바이트
Bit(비트)
0, 1 형태의 2진수 데이터. 컴퓨터가 저장(표현)할 수 있는 최소 단위
정수형 값은 10진수 숫자(0~10범위의 숫자)이며 2진수(0~1범위) Bit로 저장(표현) 한다.
4개의 Bit로 16진수 숫자(0~F(16)범위의 숫자)를 2진수(0~1범위) Bit로 저장(표현) 한다.
Byte(바이트) = 8 Bit
1바이트는 8개의 비트로 구성됨
1바이트 내에서 숫자 변수는 Bit 2진수를 10진수로 저장(표현) 함
10진수로는 0~255(2의 8승)까지 저장(표현) 함
1바이트 내에서 문자 변수의 경우만 Bit 2진수를 16진수로 저장(표현) 함