02. 변수와 자료형

DEV_HOYA·2023년 10월 18일

Java

목록 보기
2/12
post-thumbnail

📌 Chapter 02

✅ 변수

  • 데이터의 저장과 참조를 위해 할당된 메모리 공간에 붙인 이름

⭐ 개념

  • 변수 : 메모리 공간 할당, 이름
  • 자료형 : 변수의 용도
  • = : 대입

✅ 초기화

  • 처음 값을 지정하는 일

⭐ 변수명 명명 규칙

  1. 자바는 대소문자를 구분한다.
  2. 변수의 이름은 숫자로 시작할 수 없다.
  3. $과 _이외의 특수문자는 변수의 이름에 사용할 수 없다.
  4. 키워드는 변수의 이름으로 사용할 수 없다.

⭐ 정수의 표현방식

✅ MSB(Most Significant Bit)

  • 부호를 결정짓는 가장 왼쪽에 위치한 비트
  • 비트가 0일때와 1일때의 해석방법이 다르다

1바이트 = 8비트

00011001
부호비트(MSB)00168001

+25

  • 부호 비트가 0이면 양의 정수, 1이면 음의 정수
  • 부호 비트가 0이면, 나머지 비트들은 값의 크기를 결정

✅ 음의 정수 표현

  • 양의 정수의 이진수 표현에 2의 보수를 취한 결과
00000101

+5

11111010

1의 보수(0을 1로, 1을 0으로)

11111011

2의 보수(1의보수에 1을 더한다)

+5 + (-5)

00000101

'+'

11111011

=

100000000

여기서 올림수(carry)인 1은 버린다.

00000000

+5 + (-5) = 0이 나온다.


⭐ 실수의 표현방식

✅ 실수 표현에는 오차가 존재한다

public class test {
	public static void main(String[] args){
		double num1, num2;
		double result;
		num1 = 1.0000001;
		num2 = 2.0000001;
		result = num1 + num2;
		System.out.println(result);
	}
}
// 3.0000001999999997

실수형의 값이 너무 많기때문에, 위 수식을 기준으로 듬성듬성 표현되어있는 실수 중에 double형 값과 제일 가까운 근사치 값의 실수를 반환한다. 그래서 정확하지 않다.


⭐ 기본 자료형의 종류

💡 정수 자료형

자료형데이터크기
byte정수1 바이트
short정수2 바이트
int정수4 바이트
long정수8 바이트
public class test {
	public static void main(String[] args){
		short num1 = 11;
		short num2 = 22;
		short result = num1 + num2; // ERROR
		System.out.println(result);
	}
}
// error : conversion from int to short
  • 자바는 정수형 연산을 int형으로 진행한다.(1바이트, 2바이트도 가능하게 할순 있지만 성능저하가 있기때문에 보편적인 int형으로만 진행)
    => num1과 num2에 저장된 값을 int형으로 변환한다.
    => result는 2바이트 short형이고 연산결과는 4바이트 int형이므로 에러가 발생한다.
  • long형끼리의 연산에서는 int형의로의 변환이 일어나지 않음(데이터의 손실)

💡 실수 자료형

자료형데이터크기
float실수4 바이트
double실수8 바이트
  • float보다 double형이 오차가 더 적다. => double형이 더 정밀하다.
  • 실수의 연산은 기본적으로 오차가 존재한다고 가정해야한다

💡 문자 자료형

자료형데이터크기
char문자2 바이트
  • 자바는 문자를 2바이트 유니코드로 표현한다.
public class CharTypeUnicode {
	public static void main(String[] args){
		char ch1 = '헐';
		char ch2 = '확';
		char ch3 = 54736;  // 유니코드 값(10진수)
		char ch4 = 54869;  // 유니코드 값(10진수)
		char ch5 = 0xD5D0; // 유니코드 값(16진수)
		char ch6 = 0xD655; // 유니코드 값(16진수)
		
		System.out.println(ch1 + " " + ch2);
		System.out.println(ch3 + " " + ch4);
		System.out.println(ch5 + " " + ch6);
	}
}
/*
헐 확
헐 확
헐 확
*/

💡 논리 자료형

자료형데이터크기
boolean참, 거짓1 바이트

0개의 댓글