22.03.22 자바 기본

김설영·2022년 3월 23일
0
post-thumbnail
  1. 객체지향언어 = 프로그래밍 언어 + 객체지향 개념

  2. 자동 메모리 관리 : 가비지 컬렉터 (Garbage Collector, GC)가 메모리를 알아서 정리

  3. 멀티 쓰레드 지원 : 하나의 프로그램에서 동시에 여러 작업 가능

  4. 라이브러리가 풍부함

  5. 운영체제에 대해 독립적임 -> 자바 가상 머신(JVM) 덕분에 가능


자바 가상 머신 (JVM)

  • 자바 프로그램이 실행되는 가상 머신 (소프트웨어로 만들어진 머신)
  • 이 프로그램 덕분에 운영체제에 대해 독립적으로, 한번 작성하면 어디서든 실행 가능

자바 API

  • 자바로 프로그램 만드는 데 필요한 주요 기능들을 제공
  • 자바 API 문서 : 자바 API가 제공하는 기능에 대한 상세 정보

변수

  • 하나의 값을 저장할 수 있는 메모리 공간(RAM) -> 변경 가능
  • 특정 메모리 영역에 이름을 붙이고, 주소 대신에 이름을 이용해서 메모리의 값을 저장하고 읽을 수 있게 한 것.
  • 클래스 변수
  • 인스턴스 변수
  • 지역 변수 : 0으로 자동 초기화되지 않기 때문에, 값을 읽기 전에 꼭! 초기화 해줘야 함
  • 기본형: Primitive Type >> 오직 8개
    - 실제 값을 저장
    - 문자: char
    - 숫자: 정수 - byte, short, int, long / 실수 - float, double
    - 논리: boolean
  • 참조형: Reference Type >> 기본형을 제외한 나머지
    - 메모리 주소를 저장 (4byte or 8byte)
    - 32bit JVM : 4 byte (최댓값 : 40억 byte = 4GB) >> 실제로 프로그램에서는 2GB 정도만 사용 가능
    - 64bit JVM : 8 byte (최댓값 : 160경 byte = 1,600만 TB)
    - String, System...

  • 정수형은 int가 default type이고, 실수형은 double이 default type이다.

  • 메모리 크기는 위와 같이 계산할 수 있다.

  • 실수형의 표현 범위는 위와 같다.
  • 실수형 중, float는 int와 같이 4byte인데 왜 더 큰 값을 저장할 수 있을까? => 메모리를 아래와 같이 사용하기 때문이다.

  • float type의 메모리는 부호비트 1개와 지수 비트 8개, 가수 비트 23개로 구성되어 있다. (실제로는 정규화를 통해 가수 부분을 24비트를 사용한다.) 이 때문에, 정수형보다 큰 값을 저장할 수 있으나, 오차가 발생할 확률이 있다.
  • 이 때 중요한 개념이 "정밀도"이다.
    정밀도란, 값을 몇자리까지 오차없이 정확하게 표현가능한지를 의미한다.
    정밀도는 "가수의 자릿수"에 의해 결정이 되는데, float type의 경우, 가수 비트를 실제로 24개를 사용하는데, 이진수로 2^24 개의 숫자 표현이 가능하다. 이는 10^7보다 크고, 10^8보다 작은 수이기 때문에, float type의 정밀도가 7자리로 정의된다.
    (자릿수는 소숫점 아랫자리만 포함하는 것이 아니고, 모든 숫자의 자릿수이다. 123.4567 -> 7자리)
  • 이에 반해, double type의 가수의 자릿수는 52개로, float type보다 약 2배이상 많다. 그러므로, 정밀도 또한 약 2배인 15자리이다.
  • 실수는 값 저장 시, 정밀도 또한 고려되어야 한다.

상수, 리터럴

  • 상수 : 한번만 값을 저장 가능한 변수 (변경 불가)
    > 표기법 : final int MAX = 100; >> 여기서 MAX가 상수임. 100이 리터럴임!
  • 리터럴 : 그 자체로 값을 의미하는 것 (수학에서 알던 그 상수!) 1, 2, 'A', "abc" 같은 것이 리터럴임
  • char < int < long < float < double

문자와 문자열

  • String s = "a"; 문자열임
  • String s = ""; 빈 문자열
  • char ch = ''; 에러
  • 문자열 결합 : 왼쪽에서 오른쪽으로 진행. 순서에 따라 다른 결과발생
  • 빈문자열 + 숫자형 리터럴을 더할 수 있다.
  • "" + 7 + 7 = "77"
  • 7 + 7 + "" = "14"
profile
블로그 이동하였습니당! -> https://kimsy8979.tistory.com/

0개의 댓글