패스트캠퍼스 국비지원 강의 2주차!
다른 자바 입문 강의를 들었던 터라 앞부분은 빠르게 듣고, 스프링까지 배워 프로젝트를 진행하고 싶다🤗

컴퓨터의 자료 표현

2진수 표현

  • 0과 1로만 데이터 저장
  • bit(1비트) : 1️⃣ 0️⃣ 1️⃣ 0️⃣처럼 0이나 1의 값을 가질 수 있는 데이터의 최소 단위
  • byte(바이트) : 8개의 비트를 묶어 바이트라고 부른다.
    ➡️ 컴퓨터가 저장하는 최소 단위

8진수와 16진수의 표현은 이 블로그를 통해 더 자세히 이해한 후, 비슷하게 정리했다.

8진수 표현

16진수 표현

비트로 나타낼 수 있는 수의 범위

  • 1 개의 비트로 나타낼 수 있는 수 : 0, 1 (2^1 = 2개)
  • 2 개의 비트로 나타낼 수 있는 수 : 00, 01, 10, 11 (2^2 = 4개)
  • 3 개의 비트로 나타낼 수 있는 수 : 000, 001, 010, 011, 100, 101, 110, 111 (2^3 = 8개)

2진수, 8진수, 16진수로 숫자 10 표현하기

package ch04;

public class BinaryTest {

	public static void main(String[] args) {
		
		int num = 10;
		int bNum = 0B1010; // 2진수로 표현
		int oNum = 012; // 8진수로 표현
		int xNum = 0XA; // 16진수로 표현
		System.out.println(num);
		System.out.println(bNum);
		System.out.println(oNum);
		System.out.println(xNum);
	}

}

변수

Variable, 변하는 수

  • 변수 선언은 자료형과 변수 명으로 선언하며, 선언과 동시에 초기화(initialize) 할 수 있다.
package ch05;

public class VariableTest {

	public static void main(String[] args) {
		int age, count;
		age = 10;
		
		int level = 10000;
		System.out.println(age);
		System.out.println(level);
	}
}

위에서 =같다가 아닌, 왼쪽 값에 오른쪽 값을 대입하는 대입 연산자

변수 명명 규칙

  • 영문자(대문자, 소문자)나 숫자 사용 가능
  • 특수문자 중에는 $_만 사용 가능
  • 숫자로 시작할 수 없다. (ex. 214day, 1ab ❌)
  • 자바에서 사용하고 있는 예약어(while, break 등)은 사용할 수 없다. 더보기
  • 가독성이 좋게 이름 짓는 게 중요하다. 길이는 무관.
    int ns;int numberOfStudent;를 비교해보자!

자료형

정수 자료형

  • byte : 1바이트 단위의 자료형으로, 동영상, 음악 파일, 실행 파일의 자료를 처리할 때 사용
    📍수의 범위 : 27-2^7 ~ 272^7-1

  • short : 2바이트 단위의 자료형으로,C/C++ 언어와 호환 시 사용
    📍수의 범위 : 215-2^{15} ~ 2152^{15}-1

  • int : 4바이트 단위의 자료형이며, 프로그램에서 사용하는 모든 숫자(리터럴)은 int 로 저장된다. 32비트(4바이트)를 초과하는 숫자는 long 자료형으로 처리

  • long : 8바이트 자료형
    ⚠️ long 변수에 값을 대입할 때는 대입하는 숫자 값이 int 자료형의 최대값인 2147483647 보다 큰 경우 8764827384923849L과 같이 숫자의 뒤에 알파벳 L 또는 l 을 써서 long 형임을 표시한다.

만약 큰 숫자에 L 접미사를 누락하면 에러가 발생한다.

int num = 12345678900; // 오류 
long lnum = 12345678900; //오류
long lnumber = 12345678900L; // 🙆

실수 자료형

  • 부동 소수점 방식

    정규화 : 가수가 밑수보다 작은 한 자리까지 가수로 표현 되는 것
    📍컴퓨터에서는 밑수가 2 이므로 정규화를 하게 되면 가수부분의 첫 번째 자리 숫자는 항상 1임

    1.m X 2n2^{-n}

ex) 0.2 표현 : 0.4 X 2-1 ➡️ 정규화 하면 1.6 X 2-3

  • float형과 double형

    자바에서는 실수의 기본 타입은 double을 사용한다.
package ch07;

public class DoubleTest {

	public static void main(String[] args) {
		
		double dnum = 3.14;
		float fnum = 3.14f;
		
		System.out.println(dnum);
		System.out.println(fnum);
		
	}

}

⚠️ float 타입에 값을 저장하려면 실수 리터럴 뒤에 f 또는 F 를 붙여야 한다.

문자 자료형

문자도 정수로 표현

  • 어떤 문자를 컴퓨터 내부에서 표현하기 위해 특정 정수 값을 정의
  • 문자세트 : 각 문자를 얼마로 표현할 것인지 코드 값을 모아둔 것을 문자세트(charater set)라 함
    (ex. ASKII, euc-kr, utf-8, utf-16)

자바에서의 문자 표현

  • 문자를 나타내기 위해 전세계 표준인 UNICODE를 사용
  • utf-16 인코딩을 사용하여 모든 문자를 2바이트로 표시 (인터넷이나 네트워크 통신에서는 utf-8 사용)

문자형 변수 선언과 사용하기

  • 문자를 위한 데이터 타입 char ch = 'A';
    ⚠️ 'A' : 2byte 문자를 나타냄
    ⚠️ ""A"" : 문자열
  • 내부적으로 숫자로 표현되므로 숫자를 넣어도 문자가 출력될 수 있음
  • 양수만 사용 가능

    🔗 한글 유니코드 표
package ch08;

public class CharacterTest {

	public static void main(String[] args) {
		
		char ch1 = 'A'; // 변수 뒤에 숫자 안 쓰는 게 좋음
		System.out.println(ch1); // A 출력
		System.out.println((int)ch1); // 자료형 강제 변환 65출력
		
		char ch2 = 66;
		System.out.println(ch2); // B 출력
		System.out.println((char)ch2); // B 출력
		
		int ch3 = 67;
		System.out.println(ch3); /// 67 출력
		System.out.println((char)ch3); // type casting C 출력
		
		// char ch = -66; 음수는 대입 불가능
		
		char han = '한';
		char ch = '\uD55C'; // 16진수는 숫자 하나가 4비트로 표현
		
		System.out.println(han); // 한 출력
		System.out.println(ch); // 한 출력
	}

}

논리형

  • true, false
  • 1바이트 사용
package ch09;

public class BooleanTest {

	public static void main(String[] args) {
		
		boolean isVisited = true;
		System.out.println(isVisited);
	}
}

지역 변수 자료형 없이 사용 (자바 10부터 지원)

(함수 속에 선언되어 해당 함수 속에서만 사용이 가능한 변수)

  • Local variable type inference
  • 대입되는 값을 보고 자료형을 알 수 있는 경우에는 변수에 대해 자료형 선언하지 않음
  • 한번 선언하여 추론 된 변수는 다른 type의 값을 대입할 수 없음
  • 지역 변수만 사용 가능
    📍 변수는 선언위치에 따라 전역변수와 지역변수로 나뉜다.
    지역변수(Local variable) : 특정구역({ }) 내에서 생성되어 그 구역에서만 사용
package ch09;

public class LocalVariableInter {

	public static void main(String[] args) {
		
		var i = 10;
		var j = 10.0;
		var str = "test";
		
		System.out.println(i);
		System.out.println(j);
		System.out.println(str);
		
		var str2 = str;
		System.out.println(str2);
		
		str = "hello";
		// str = 3;
	}

}
profile
기회를 잡는 사람이 되도록!

0개의 댓글