■ Firm Ware : 일부 제한된 OS(소프트웨어. 윈도우, iOS) 에 대한 중재의 역할을 한다.
■ 운영체제 : 하드웨어와 응용프로그램(App) 사이에 중재를 역할, 다수의 응용프로그램이 있을 때 충돌이 안나게하며 자원을 분배해주는 역할을 한다.
■ Java Virtual Machine :
-운영체제, Firm Ware, 하드웨어에 상관없이 응용프로그램이 돌아갈 수 있게 하기 위해 가상머신을 만들어놨다.
-일부 운영체제의 역할도 함, 하드웨어의 역할도 함(자바용 기계어인 Byte Code를 동작시킬 수 있는 역할).
■ 변수의 개념
-연산에 필요한 정보를 저장한 메모리 공간 (변수는 메모리와 관계가 있다)
-변수는 변경 가능하지만, 상수는 변경 불가능
■ 주소
-주소는 메모리의 바이트 단위의 일련 번호
-CPU가 데이터를 요청하기 위해서는 메모리 안에 주소(바이트 단위의 일련 번호를 주소로 매핑!)가 필요하다.
■ 변수 이름
-일련 번호에 가독성을 부여한 것이 변수 이름
-변수의 이름은 최대한 작업한 내용을 함축시키는게 좋다. 나중에 내가 짠 코드를 이해못하기 때문이다.
■ 하드웨어의 메모리를 매핑한 것이 변수이다.
■ CPU에 어떤 작업을 해라! 바로 연산자이다.
■ 변수 선언
-작명을 말한다. 이름을 붙여주는 것이다.
-2가지 특수문자를 쓸 수 있다. 언더스코어,언더바 ( _ ) 달러표( $ )
-길이 제한이 없다.
-이름의 시작은 영문자, ( _ ) 로만 가능하다. 숫자는 안된다.
-자바언어에서 사용하는 키워드가 있다.(오른쪽 표) 이 키워드들은 연산자이다. 그래서 이 이름들은 사용하면 안된다.
-이클립스를 쓰는 상태에서는 키워드를 입력하면 색이 다르다. 이걸로 키워드인지 아닌지 알 수 있다.
■변수 형의 개념 (아래로 내려가면서 개념설명이 됨)
-컴퓨터는 숫자만을 저장 및 처리 가능
-컴퓨터는 계산기이다.
-컴퓨터는 high(1), low(0)로만 인식한다. 이진수다. 그래서 숫자를 벗어나지 못한다.
-컴퓨터가 처리하는 영상,이미지 들도 모두 숫자로 이루어져있다.
-그래서 다양한 종류의 정보를 처리할 수 있도록 소프트웨어적으로 처리해야 함
-변수 형은 문자, 음의 정수, 실수 등을 저장 및 처리할 수 있도록 함
-각 변수 형은 필요에 맞춘 저장 공간을 확보할 수 있도록 함
■ 디버거를 사용한 실제 메모리 상태보기 (여기서는 C언어로 보여줌)
-위에 7,8,9 하얀 번호를 보면 C언어가 직접적으로 메모리에 어떻게 작용했는지를 보여준다.
-8번이 주소다. 즉 우리가 1번쪽에서 쓴 var 라는 변수(0x12345678)가 있는 장소이다. 메모리상의 주소!
-근데 우리가 배울 Java는 직접적으로 하드웨어에 접근하지 않는다.
■ 왜 변수형을 배우는가? (사건의 발단!)
-컴퓨터는 계산기다. 그래서 모든 데이터는 숫자로 저장된다.
-문제는 우리는 문자도 처리해야하고, 그 외에 무언가도 처리해야 한다.
■ 위 두개 사진 모두 같이 보자!
■ 아스키코드 테이블
-알파벳, 특수기호 등을 표현하고 싶기에 변수를 매핑함.
-즉 문자(문자,기호)에 일련변호를 줌.
-10진수 마지막에 보면 127임. 즉 0~127개다. (0까지 포함해서 총 128개)
-128은 2의 7승이다.
■ 위 표의 (48~57) (0x30~0x39까지) (숫자 0~9까지) 부분에 대해. / 3개의 괄호 전부다 같은 부분!
-숫자도 왜 매핑함? 그냥 숫자는 바로 보여주면 안돼? 0x01이 왜 1이 아니야?
-아니다. 우리가 화면에서 보는 1(0x31)이라는 숫자가 있다면, 이는 매핑(0x31)되서 출력된 값이다. 즉 소프트웨어에서 문자로 출력되는 값으로 보기 위해서는 0x31로 매핑해주기 때문이다.
-예를 들면, 워드 프로세서에서 1이라는 숫자가 보인다? 그건 0x31이다. 우리가 1을 눌렀다고 0x01이 아니다!
■ A 는 0x41이다. 그래서 위에 빨간 숫자41이 보이는 거다.
■ 변수형(Type) 결론! 중요!
-어떻게 해석할거냐를 구분지어준다.
-숫자(int)로 해석할거냐? 문자(char)로 해석할거냐? 를 앞에 붙인다.
-변수를 선언할 떄 이름(위에서 사용했던 var, ch)을 주면서, 앞에 붙이는 키워드(int, char)다.
-이걸 보고 하드웨어에 저장된 데이터를 소프트웨어적으로 어떻게 결정할지 본다.
-이것이 변수형 타입이다.
-한마디로 같은 '1'을 넣더라도 int, char에 따라 해석이 달라진다는 것이다. int일때는 진짜 숫자형태, char일때는 0x31이라는 문자형태로 인식해서 들어간다.
■ 숫자형 변수! 왜 있는가?
-byte는 2의 8승까지만 표현 가능하다. (0~255까지 = 총 256개!)
-표현할 수 있는 숫자 범위가 너무 낮은데?
-소숫점, 음수, 실수 등은 어떻게 표현할거야?
-그래서 여러가지 숫자형 변수도 제공하는 것이다.
■ 양/음의 정수 범위를 늘리고 싶어?
-바이트 수를 1,2,4,8 식으로 늘리면 범위가 커진다.
-정수는 Type에 의해서 몇바이트를 점유할지에 따라서 얼만큼의 값의 표현범위가 결정된다.
-예를들어 자바에서 문자(Char)는 2bite이다. 근데 숫자는 바이트 수에 따라 byte, short, int, long으로 바꿀 수 있다.
-근데 거의 대부분 int를 사용한다.
-왜냐하면 JVM(자바가상머신)은 32bit 머신을 가정하고 만들어져 있기 때문이다.
-즉 int의 (붉은색 글씨 : 4바이트 x 8 = 32bit)의 의미는 JVM에서 가장 최적화된 처리 디자인이라는 뜻이다. (한마디로 JVM이 int를 좋아함!)
■ 음수를 어떻게 표현할까? : 음수표현하는 2가지 방법이 있다. (1의 보수와 2의 보수)
■ 1의 보수 (안쓴다)
-개념은 0이면 1로 바꾸고, 1이면 0으로 바꾼다.
-문제가 생긴다. 0000 0000 일 경우, 1111 1111이 된다.
-근데 +0이나 -0이나 같다. 즉 위처럼 변하면 안된다. 그래서 2의 보수를 쓴다.
■ 2의 보수 (컴퓨터가 쓰는 방법)
-위에서 한 값에 +1을 하면 된다.
- 0000 0000 은 1111 1111 이다.(1의 보수에서)
-여기에 1을 더한다. (더하는 방식은 1의 보수 식으로)
-그러면 1 0000 0000 이 된다. 그리고 여기서 앞의 1은 넘친 숫자니까 버린다.
-즉, 2의 보수체계로가면 0000 0000은 0000 0000이 된다. (위에서 1의 보수에서는 1111 1111이었다!)
■ 결론 : 컴퓨터는 음수를 표현할 때 2의 보수체계를 쓴다.
■ 실수
-float (4바이트) 과 double(8바이트)가 있다.
-실수도 바이트에 따라 표현범위가 달라진다. (정수의 int, long 같이)
-근데 실수에서 바이트가 높다는 소리는, 숫자의 정확도를 말하기도 한다. (왜냐하면 소숫점이 늘어날수록 더 자세하니까!)
-컴퓨터에서 가급적이면 쓰지 않는다. 정수차우너에서 해결할려고 한다.
-왜냐하면, 컴퓨터는 실수 표현을 하는 알고리즘이 완벽하지 않다. 즉 실수 연산에 최적화되어있지 않다.
-그래서 코딩할 떄는 실수는 꼭 필요한 경우가 아니면 안쓰는게 좋다.
■ 저장 공간 확보 : 메모리에 쓸 크기
■ 이름 지정 : Var, ch등 과 같은 변수 이름
■ 형 지정 : int? char? (참고로 char는 2byte다! 왜? 유니코드를 처리해야하니까. 한글과 한문 같은거!)
■ 각 변수형들이 갖는 byte수를 체크해두자!
■ 변수 선언
-내가 쓸 저장 공간을 결정하고 확보했다는 뜻. (이 만큼 메모리를 쓸거야!)
-해석 방법에 대해서도 결정한 것.(문자, 숫자)
■ 초기화 : 값을 넣는다는 뜻.
■ 대입 연산자 ( 여기서 = 를 말함)
-값을 저장하기 위해 대입 연산자를 쓰는 것.
-즉 'A' 라는 값을 copy하여 ch라는 변수에 넣는 것이다.
-오른쪽 네모의 '하드웨어(메모리)'는 컴퓨터가 읽는 모습이다. 즉 A를 0x41이라고 인식하는 것이다.
-그래서 하드웨어가 읽은 0x41이 메모리에 저장되는 것이다.
변수 선언 3단계
공간확보
이름 지정
형 지정
변수 사용 3단
선언
초기화
사용
■ 왼쪽 그림
-메모리에서 0x41를 ch에 대입한 것이다. (우리가 수학할 떄 대입하여 넣듯이)
■정리하자면 아래와 같이 된다.
■헷갈리면 저장공간(좌) = 값(우) 로 기억만 해두
■ 학습정리
1. 변수의 필요성
- 정보 처리의 기본은 정보이며, 정보를 저장하고 관리하기 위해서는 변수가 필요함
- 하드웨어에 저장된 정보를 구분하기 위해서 소프트웨어는 변수를 사용함
2. 변수 형
- 숫자만 저장 및 연산할 수 있는 하드웨어에서 문자 등을 처리하는 방법이 필요함
- 숫자도 양의 정수, 음의 정수, 실수 등 다양함
- 프로그램의 설계 요구에 따라 저장 및 처리할 수 있는 숫자의 범위가 서로 다름
- 변수마다 서로 다른 저장 공간을 사용함
3. 변수 선언의 3단계, 사용의 3단계에 대해 기억해두자!
■ 변수 선언 3단계
-공간확보
-이름 지정
-형 지정
■ 변수 사용 3단
-선언 (위의 공간확보,이름 지정, 형지정)
-초기화 (대입 연산자, ch는 A구나?)
-사용 (진짜 사용)
'컴퓨터공학 > 자바프로그래밍' 카테고리의 다른 글
6. 조건문 심화 (0) | 2024.06.29 |
---|---|
5. 프로그램을 프로그램답게 만드는 조건문 (0) | 2024.06.12 |
4. 변수의 형 변환과 기본 연산자 (0) | 2024.06.05 |
2. Java의 역사와 특징 (0) | 2024.05.25 |
1. 프로그래밍 언어 개론 (0) | 2024.05.22 |