이것저것

변수와 타입 본문

Java/Java 공부

변수와 타입

곰태태 2023. 8. 29. 18:15
반응형
SMALL

* 컴퓨터 메모리

 - 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

 - 변수의 생로병사 ⇒ 변수를 사용할(=변수에 접근할) 수 있는 범위

 - 변수가 선언된 코드 블록이 변수의 사용 범위

 - 변수가 코드 블록 내에서 선언될 때 변수가 생성

 - 프로그램의 흐름이 변수가 선언된 코드 블록을 벗어나면 변수가 소멸

 → 로컬 변수(지역 변수)

 

* 참조 타입: 배열, 열거형, 클래스, 인터페이스

 - 데이터 타입

 - 열거형, 클래스, 인터페이스 ⇒ 사용자 정의 데이터 타입

 

반응형
LIST

'Java > Java 공부' 카테고리의 다른 글

클래스  (0) 2023.09.02
연산자  (0) 2023.08.30
Java 언어 기초  (0) 2023.08.28
객체지향 프로그래밍이란  (0) 2022.02.25
자바란  (0) 2021.03.31
Comments