- 변수와 Data Type
변수는 메모리 공간의 주소를 기억한다. 이때 하나의 값 또는 주소만을 기억 할 수 있으며 여러번의 초기화가 가능하다.
변수의 선언및 초기화는 우선 메모리 공간을 확보 한 뒤에 변수 이름을 붙여주고, 그 메모리공간의 시작점을 변수에 기억시킨다. 이후 확보된 공간에 데이터를 저장하게 된다
만약 초기화 된 변수에 한번 더 초기화 과정이 이루어진다면 다른 메모리 공간을 확보한 뒤 그 주소의 시작점을 변수에 덮어씌워 기억한다. 즉, 원래 가지고 있던 주소는 잊게 됨다.
이후에 확보된 메모리로 데이터가 들어간다. 주소값을 잃게 된 메모리는 자바와 파이썬의 경우 Garbage Collecter에 의해서 지워지게 된다. C의 경우 이 메모리를 지워 메모리 관리를 해주어야 한다.
Data Type은 기본형과 참조형 두가지가 있다. 기본형의 경우 stack영역에 Data형태로 저장이 되게 되며 변수의 주소를 따라가면 데이터가 나오게 된다.
참조형의 경우 hip영역에 저장되며 인스턴스 또는 객체 형태로 저장이 된다. 이때 변수의 주소를 따라가면 또다른 주소가 나오게 된다.
기본형의 종류는 정수형, 실수형, 논리형 세가지가 있다.
정수형의 경우 크기에 따라 나열하면 byte(1byte), short(2byte), char(2byte), int(4byte), long(8byte)가 있다.
1byte로 표현 가능한수의 범위는 총 255개, 양수 127까지, 음수 -128까지 이다. char의경우 문자 데이터타입인데 문자를 나타내는 askii코드를 이용하여 정수형태로 표현한다.
만약 1byte에서 -128에 -1연산을 하게 되면 버퍼 오버플로우가나오게 된다. -128을 2진수로 나타내면 1000 0000이다. 이떄 -1을 하게 되면 0111 1111꼴로 나타난다. 즉, 부호비트가 바뀌어 10진수로 나타내면 127이 되는 것이다.
이것을 오버플로우 현상이라한다.
실수형의 경우 float(4byte), double(8byte)두가지가 있으며, 정수부+실수부의 형태로 이루어진다.
논리형은 boolean타입이 있으며 True/False로 표현된다.boolean의 경우 기본형 데이터타입임에도 참조형처럼 움직인다. 변수의 주소를 따라가게 되면 주소가 나오게 되고 이를 따라가야 데이터가나오게 된다.
따라서 boolean의 데이터 크기는 굳이 말하자면 주소의 데이터크기인 1byte라 할수있다.
참조형은 String이 있다. String의 첫글자가 대문자인것을 보면 알 수 있지만 Class라고 생각하면 된다. String이라는 데이터타입은 존재하지 않으나 String이라는 class로 데이터타입을 정의한다고 보면 된다.
String의 경우 변수의 주소를 따라가면 String Index 배열(파이썬에서는 Linked List)이 나오게 되고 이 Index의 주소를 따라가면 데이터가 나오게 된다.
Linked List는 변수의 주소를 따라가게 되면 주소가 나오고 이 주소를 따라가면 LP(Left Point)가 나오게 된다. 그 옆에 값이 존재하며 다음에 RP(Right Point)가 나오게 된다.
이를 반복하다가 문자열이 끝나면 \n이 나오게 된다. 배열과의 가장 큰 차이는 생성 된 뒤의 요소 개수가 가변적이라는 것이다.
문자열은 iterable과 immutable속성이 있다. 따라서 인덱싱과 슬라이싱이 가능하며 수정이 불가능하다.
리스트는 인덱싱과 슬라이싱을 통해 요소에 접근이 가능하다. 인덱싱은 특정 위치 값에 접근한다. 이는 리스트[인덱스]꼴로 가능하다. 이때 인덱스는 0부터 시작한다.
슬라이싱은 특정 범위의 값에 접근하게 된다. 리스트[시작:끝]형태로 나타나며 시작값은 이상 끝값은 미만인 값에 접근한다.
- 연산자
연산우선순위는 괄호 --> 일항연산자(증강, 부호, 비트, 논리) --> 이항연산자(산술, 비교, 논리) --> 삼항연산자(조건) --> 대입연산자 순이다. 이를 차례대로 살펴보자
증강연산자는 ++,--가 있으며 각각 다음 값, 이전값을 구한다. ++i와 같이 앞에 붙을경우 전위, i++과 같이 뒤에 붙을경우 후위라 한다.
전위의 경우 연산이 이루어진 뒤 값이 구해지는 것이고 후위의 경우 값이 구해진 뒤에 연산이 이루어지게 된다.
비트연산자는 not(~), and(&), or(|), xor(^)이 있다.
논리연산자는 not(!), and(&&), or(||)이 있다.
산술연산자는 +, -, *, /, //, **가 있다.
비교연산자는 >, <, >=, <=, ==이 있다.
'프로그래밍 및 코딩 > Python' 카테고리의 다른 글
| 파이썬 내장함수(1) (0) | 2024.07.16 |
|---|---|
| 함수, include와 import차이 (0) | 2024.07.12 |
| 연산자(2) (0) | 2024.07.11 |
| 실수부 오차 (0) | 2024.07.09 |
| 형변환 (0) | 2024.07.09 |