일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Flex Box 기본
- SQL 연산자
- Flexbox Froggy
- 노마드코더
- java설치
- 오산대맛집
- 자바 스프링
- ubuntu
- 객체지향프로그래밍
- Hooks
- SQL 문제
- Eclipse
- spring
- spring 환경설정
- REACT
- 리액트
- 관계형데이터베이스
- 자바스프링
- SQL
- HTML5
- 람다식
- 환경설정
- SQL 명령어
- numpy
- 이클립스
- 타입
- 플랙스박스기본
- java spring
- node.js
- 스프링
- Today
- Total
이것저것
변수와 타입 본문
* 컴퓨터 메모리
- CPU 인스트럭션 아니면 데이터
- 주소(address)
- byte 단위
* 변수
- 메모리에 데이터를 쓰거나 읽으려면 그 메모리에 대한 주소가 필요
- 주소는 2진수(16진수)이므로 우리가 사용하기에 불편
- 메모리 주소에 이름 붙인 것 ⇒ 변수
* 이름을 붙인다는 것의 의미
1. 식별(identification)
2. 재사용성(reusability)
* 데이터
- 종류
- 크기(byte 단위)
⇒ 데이터 타입 = 종류 + 크기
* 데이터(값)은 변수에 저장
- 변수는 타입이 중요 (타입에 따라 크기가 결정)
* 변수에 저장되는 값
1. 실제 값이 저장되는 타입 ⇒ 기본 타입, 원시 타입
- 타입에 따라서 변수의 크기가 달라짐 (1, 2, 4, 8 바이트)
2. 주소 값이 저장되는 타입 ⇒ 참조 타입(배열, 열거, 클래스, 인터페이스)
- 0번지든, 100번지든, 1억번지드 ⇒ 64비트 아키텍처라면 8 바이트면 충분
* 강타입(Strong-type) 언어 vs. 약타입(Weak-type) 언어
- 강타입: 연산이나 값 대입할 때 타입이 일치해야 함
- 자바는 강타입
* 정적 타입 언어 vs. 동적 타입 언어
- 동적 타입 언어: 프로그램이 실행하면서 타입이 결정되는 언어
- 정적 타입 언어: 프로그램 실행 전에 타입이 결정되는 언어
- 자바는 정적 타입 언어
* 변수 선언, 초기화, 사용
- 변수 선언: 변수 준비, 메모리에 공간 확보
- 변수 초기화: 변수에 최초로 값을 대입(할당)
- 변수 사용: 변수에 저장된 값을 이용
* 자바: 변수는 사용되기 전에 반드시 초기화되어야 함
* camelCase(낙타체) vs. PascalCase(파스칼체) vs. snake_case(뱀체)
- thisIsJava vs. ThisIsJava vs. this_is_java
- 자바: 클래스, 인터페이스, 열거형 이름 ⇒ PascalCase
변수명, 메서드명 ⇒ camelCase
* l-value(lvalue), r-value(rvalue)
- l-value: 변수 또는 값을 저장할 수 있는 요소
- r-value: 값으로 평가(evaluate)될 수 있는 것(값이 될 수 있는 것)
* Little-Endian, Big-Endian
- cpu가 메모리에 저장된 일련의 바이트를 저장하거나 읽는 순서
00000000 00000000 00000000 01011010 ⇒ 90을 4바이트로 표현
100번지 101번지 102 103
0101 1010 0000 0000 0000 0000 0000 0000
5 6 0 0 0 0 0 0 ⇒ 56 00 00 00
- 4비트: nibble
- MSB(Most Significant Bit/Byte), LSB(Least Significant Bit/Byte)
* Java Data Type
- Primitive Type
- Reference Type
* Primitive Type (8종)
- 정수형(4종): byte(1), short(2), int(4), long(8) : 양수/음수 -> 부호 있는 정수
- 실수형(2종): float(4), double(8) (cf. 부동소수점수: floating-point number)
- 논리형(1종): boolean(1) - true, false
- 문자형(1종, 유니코드): char(2) - 문자 또는 양의 정수(부호 없는 정수)
* N진법 -> Ns complement(N의 보수), (N-1) complement
- (N-1)의 보수는 (N-1)에서 해당 자릿수의 값을 뺀 것
- N의 보수는 (N-1)의 보수에 1을 더한 것
* 10진법 -> 10의 보수, 9의 보수
ex) 1234의 9의 보수: 8765
9999 - 1234 = 8765
ex) 1234의 10의 보수: 8766
ex) 5555 - 1234 = 4321
5555 + (1234의 10의 보수) = 5555 + 8766 = 4321
* 2진수의 뺄셈
- 빼는 수의 2의 보수를 더한다
ex) 7 - 4 => 0111 - 0100 = 0011 => 3
0111 + (1011 + 0001) = 0111 + 1100 = 1 0011
1의 2의 보수는?
00000001의 2의 보수 = 11111111이 1의 2의 보수이므로 -1이 됨
10000001이 -1인 줄 알았는데 2의 보수 개념을 도입하니 11111111이 -1이었음
-128 = 10000000의 2의 보수 ⇒ 01111111 + 1 => 010000000 128
* 타입 변환
- promotion: 자동 변환
- (type) casting: 강제 변환, 수동 변환
- 타입 캐스팅 연산자: ()
* 연산식에서 자동 타입 변환 (교재 2.9, p.58)
* 자바에서 ‘+’ 연산
1. 산술 연산
2. 결합 연산
* 문자열을 기본 타입으로 변환 (교재 2.10, p.64)
* 기본 타입의 값을 문자열로 변경
* 변수 사용 범위: Scope
- 변수의 생로병사 ⇒ 변수를 사용할(=변수에 접근할) 수 있는 범위
- 변수가 선언된 코드 블록이 변수의 사용 범위
- 변수가 코드 블록 내에서 선언될 때 변수가 생성
- 프로그램의 흐름이 변수가 선언된 코드 블록을 벗어나면 변수가 소멸
→ 로컬 변수(지역 변수)
* 참조 타입: 배열, 열거형, 클래스, 인터페이스
- 데이터 타입
- 열거형, 클래스, 인터페이스 ⇒ 사용자 정의 데이터 타입
'Java > Java 공부' 카테고리의 다른 글
클래스 (0) | 2023.09.02 |
---|---|
연산자 (0) | 2023.08.30 |
Java 언어 기초 (0) | 2023.08.28 |
객체지향 프로그래밍이란 (0) | 2022.02.25 |
자바란 (0) | 2021.03.31 |