동현 유
척척석사
동현 유
전체 방문자
오늘
어제
  • 분류 전체보기 (181)
    • BlockChain (48)
      • [paper] Consensus (13)
      • [paper] Execution (19)
      • [paper] Storage (5)
      • [paper] ZKP (1)
      • [paper] Oracle (1)
      • Blockchains (9)
    • Java (19)
      • Java의 정석 (13)
      • Java 파헤치기 (5)
    • Python (20)
      • Python 뜯어보기 (6)
      • 데이터 분석 기초 (5)
      • Python 기초 강의 (6)
      • Python 기초 강의 부록 (3)
    • Golang (0)
    • MySQL (3)
      • programmers (2)
      • 기본 문법 (0)
    • 웹 프로젝트 (IBAS) (36)
      • Django 레거시 (14)
      • SpringBoot api 개편 (14)
      • Infra (3)
      • 서버 장애 기록 (4)
      • 신입팀원 교육 자료 (1)
    • CS (30)
      • Operating System (22)
      • Computer Security (3)
      • Network (4)
      • DBMS (1)
    • 책 (10)
      • 도메인 주도 설계 철저 입문 (9)
      • Real MySQL 8.0 (1)
    • BOJ 문제 풀이 (3)
    • 이러쿵저러쿵 (10)
    • 회고 (1)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
동현 유

척척석사

Java/Java의 정석

[Java의 정석] 02. 변수

2022. 3. 2. 20:29
모르는 것만 짧고 빠르게 정리한 노트입니다.

 

 

1.1 변수란?

  : 단 하나의 값을 저장할 수 있는 메모리 공간.

 

1.2 변수의 선언과 초기화

 : 변수를 선언하면, 메모리 빈 공간에 변수타입에 알맞은 크기의 저장공간이 확보되고, 이 공간은 변수이름을 통해 사용할 수 있게 된다. 

 : 추가로 하나의 프로세스는 가상 메모리를 OS 의해 할당받는데, 하나의 java application 또한 가상 메모리를 할당 받는다. 할당받은 가상 메모리를 이용하여, JVM을 띄운다. JVM 은 특별한 설정을 하지 않으면 기본 350MB 정도의 힙 메모리 제한을 갖는다고 한다. 보통 로컬 변수를 생성할 때는 이 힙 메모리에 생성되고 GC 에 의해 관리된다. 

  : 한번 JVM 이 할당한 물리메모리는 GC 가 JVM 내의 힙메모리에서 점유를 하지 않아도, OS에게 반납되지 않는다고 한다. (https://woooongs.tistory.com/86?category=798806) 

 

1.3 변수의 명명규칙
  1. case-sensitive 하며 길이제한이 없다.
  2. 예약어는 사용 불가
  3. 숫자로 시작해서는 안된다.
  4. 특수문자는 '_' 와 '$' 만 허용한다.
  5. 카멜케이스를 권장한다.
  6. 상수의 이름은 모두 대문자로 하되, 여러 단어인 경우 '_' 로 구분한다.
  7. 클래스의 첫 글자는 항상 대문자를 권장한다.

2.1 Primitive type
  • 논리형 : bool (1byte)
  • 문자형 : char (2byte) => 유니코드를 사용하기 때문(내부적으로는 정수로 저장한다.)
  • 정수형 : byte (1byte), short (2byte), int (4byte), double (8byte)
  • 실수형 : float (4byte), double (8byte)
2.2 상수와 리터럴
  • 상수 : 변수 타입 앞에 final 키워드만 붙여주면 된다, 사용하기 전에만 초기화하면 되지만, 선언과 동시에 초기화하는 것이 좋다.
  • 리터럴 : 변수가 아니라 그 자체로 값인 것들. (ex, 20, 'a' 등)

  - 리터럴 접미사
  : 그냥 숫자를 쓰면 기본적으로 정수는 int, 실수형은 double 이다. long 타입 리터럴은 L 접미사를 붙여야하고, float 타입 리터럴은 f 접미사를 붙여야한다. 또 소수점이나 e 또는 E 를 포함하고 있어도 실수형 리터럴로 간주된다.

(잘 쓰지는 않지만, 16진 지수를 나타내는 p가 포함된 리터럴은 실수형이다.)

 

  - 타입의 불일치

  : 리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통, 하지만 넓은 타입 변수에 좁은 타입 리터럴을 저장하는 것은 가능하다. 반대의 경우는 변수가 해당 리터럴을 충분히 표현할 수 없기 때문에, 무조건 오버플로우가 발생한다. 따라서 애초에 컴파일 오류가 난다.

 

  - 문자열 리터럴

  : 문자 리터럴과 문자열 리터럴은 다르다. 전자는 char, 후자는 string. 문자열과 다른 자료형 사이의 덧셈이 일어나면, 다른 모든 자료형을 문자열로 변환 후에 문자열 덧셈을 한다.

 

자동 형변환

  : 값 손실이 적게 나는 쪽으로 진행 => 더 큰 범위의 변수로 맞춰짐.

 

기타

  - 진법 변환

  - 2의 보수

  - 실수형 저장 방식 (S, E, M)

  - 다른 타입 간 형변환

 

'Java > Java의 정석' 카테고리의 다른 글

[Java의 정석] 06. 객체지향 프로그래밍  (0) 2022.03.08
[Java의 정석] 05. 배열  (0) 2022.03.05
[Java의 정석] 04. 조건문  (0) 2022.03.05
[Java의 정석] 03. 연산자  (0) 2022.03.05
[Java의 정석] 01. 자바란  (0) 2022.03.02
    동현 유
    동현 유
    Fault Tolerant System Researcher for more Trustful World and Better Lives. (LinkedIn: https://www.linkedin.com/in/donghyeon-ryu-526b8a276/)

    티스토리툴바