• 변수의 정의
    • 변수란 말 그대로 변하는 수를 의미하고, 프로그래밍에서는 어떠한 값을 담는 상자(비어있거나, 차있거나)로 사용
    • 예시1)
      • String words = "java";
      • System.out.println(”hello”+ words);
      • 이때에 위 출력값은 “hello java”
      • words는 java라는 문자값을 담고 있는 상자이고, words변수값은 변할수 있는 값으로 만약에 “python”을 담게 되면 출력값 전체를 변경할 필요 없이 손쉽게 원하는 출력값 변경
      • 다시 말해, 변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당한 것이고 데이터(data)를 저장할 수 있는 메모리 공간의 이름을 의미
    • 예시2)
      • a = a + 1
      • 만약 위와 같은 a라는 변수가 있다면, a라는 변수에 1만큼을 더한 값을 a에 재할당 하는 것이므로, 실질적으로 a에 1만큼을 더하는 것을 의미하는 코딩
      • 수학적으로는 양변의 a가 소거되어, 0 = 1이 되므로 넌센스가 되지만, 프로그래밍에서는 자주 사용하는 방법임으로 변수의 정의에 대한 정확한 숙지가 필요
  • 변수의 명명규칙
    • 영문자(대소문자가능-일반적으로 소문자사용), 숫자 등으로만 구성
    • 숫자로 시작 할수 없음
    • 이름 사이에는 공백을 포함할 수 없음
    • 자바에서 미리 정의된 키워드(keyword)는 사용할 수 없음
      • int, String 등
    • camelcase가 일반적(대신에 _소문자 를 사용하기도 함)
  • 2진법에 대한 이해
    • 1바이트 : 8비트

      Untitled

    • 일반적으로 왼쪽 첫번째 비트는 패리티비트(오류검출)용으로 사용되거나, 부호비트(음수/양수 구분)용으로 사용

    • 1바이트가 할당된 타입의 숫자 범위는 대략 -2^7 ~ +2^7-1까지의 범위

    • 1024바이트(1KB), 1024KB(1MB), 1024MB(1GB) …

  • 기본형 변수 타입
    • java에서 기본적으로 제공하는 변수 타입
      • 정수형, 실수형, 문자형, 논리형, null
      • 앞서 이미 사용한 String은 기본타입변수가 아닌 참조형변수임에 유의
    • 정수형
      • int, long 등
      • 123, -456과 같이 아라비아 숫자와 부호
      • int
        • 4바이트 메모리
          • 대략적으로 -2의31제곱 ~ +2의31제곱-1의 범위를 가짐
          • 이 범위를 벗어나는 숫자일경우 오버플로우(overflow)또는 언더플로우 발생
        • java에서 정수형 타입 중 가장 많이 사용
      • long
        • long형의 경우 123456789L 이렇게 L을 붙여 해당 타입이 long형임을 명시적으로 표현하기도함
        • 8바이트가 할당되므로 int보다 많은 범위의 숫자표현 가능
    • 실수형(float, double)
      • 3.14, -45.6과 같이 소수 부분을 가지는 아라비아 숫자
      • double
        • 실수형 타입 중 기본이 되는 타입은 double형
        • 8바이트 할당
        • 1.2345D (D는 생략가능)
        • 10진법 기준 소수부분 15자리까지 표현가능
      • float
        • 4바이트 할당
        • 1.234567F
        • 10진법 기준 소수부분 6자리까지 표현가능
      • java에서 실수는 부동 소수점(floating point) 방식이 표준
        • ±(1.가수부)×2^지수부 의 표현식
        • 이진수의 근사치를 저장하다보니, 미세한 오차가 발생하여 10진수를 완벽하게 표현할 수는 없다는 것은 단점(현업에선 중요한 부분)
        • 예를 들어) 1/8은 1을 2^3으로 나눈 것이므로 0.001로 표현이 가능하지만, 1/10에서 10은 2의 제곱값이 아니기에 정확히 표현이 불가능
        • 미세한 오차가 발생하지만 0.1이나 0.1+0.1 등 유의미하지 않은 오차는 절사를 통해 정상값으로 표현이 가능하지만, 0.1을 대상으로 한 반복된 연산은 오차가 누적되어 유의미한 오차가 발생
      • java에서 부동소수점의 대안
        • 정수로 변환하여 재연산
          • 예를 들어 1.03에 100 곱해 103을 만들어 계산 후 다시 100으로 나누는 것
        • 위 재연산 과정이 미리 구현돼 있는 클래스가 Bigdecimal
          • BigDecimal은 Java에서 숫자를 정밀하게 저장하고 표현할 수 있는 방법
          • 실무에서 돈과 소수점을 다룬다면 BigDecimal은 선택이 아니라 필수
          • BigDecimal의 유일한 단점은 느린 속도, 사용의 번거로움
    • 문자형
      • char

        • 2바이트 할당
      • 'a', 'Z'와 같이 작은따옴표('')로 감싸진 하나의 문자

      • 컴퓨터는 2진수밖에 인식하지 못하므로 문자도 숫자로 저장

      • 과거 아스키코드(ASCII) 표준을 사용하여 문자를 표현

        • 아스키코드(ASCII)는 영문 대소문자를 사용하는 (1바이트)7비트 or 8비트의 문자 인코딩 방식

        • 총 128개의 문자 or 256개의 문자

          Untitled

      • 현재는 utf-8(유니코드)가 대부분 웹서비스의 표준

        • 2바이트이상
      • 비교)문자열은 "hello", "world"과 같이 큰따옴표("")

        • 문자열은 기본타입처럼 취급되나, 기본타입이 아닌 클래스 기반의 참조형타입
        • 문자, 문자열 둘다 초기값은 null
    • 논리형타입
      • boolean
      • 참 또는 거짓을 의미하는 자료형
      • true, false 둘 중 한가지의 값을 가지고 있고, 추후 제어문에서 중요하게 사용됨
      • 초기값 false
    • null 타입
      • 아무런 값도 가지고 있지 않은 빈 값
  • 타입변환
    • 하나의 타입을 다른 타입으로 바꾸는 것
    • 묵시적(자동)타입변환
    • 명시적 타입변환
  • 상수