[Section 1] Java 기초 (변수, 타입, 문자열)

dohyoungK·2023년 4월 17일
0

Java는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체지향 프로그래밍(Object Oriented Programming, OOP) 언어다.

  • Java의 특징

    • 운영체제에 독립적이다.

      : 특정 CPU나 OS에 따라 다르게 작동하는 언어들과 달리 JRE(Java Runtime Environment: JVM(자바 가상머신) + 표준 클래스 라이브러리)가 존재하는 모든 환경에서 실행이 가능하다.

    • 객체 지향 언어

      : 모든 기능을 객체로 만들어 사용하는 언어로 유지보수가 쉽고, 확장성이 높다.

    • 함수형 프로그래밍

      : 람다식과 스트림으로 인해 컬렉션의 요소를 필터링, 매핑, 집계 처리하기 쉽고, 코드가 간결해진다.

    • 자동 메모리 관리(Garbage Collection)

      : 메모리 생성과 소멸을 직접하지 않아도 가비지 컬렉터를 통해 사용하지 않는 메모리를 수거가능하다.

  • JVM(Java Virtual Machine)

    : JVM은 자바 프로그램을 실행시키는 도구로, 소스 코드인 .java파일을 javac 컴파일러가 바이트코드인 .class파일로 변환시키면 JVM이 바이트코드를 운영체제에 맞는 기계어로 변환시키는 역할을 한다. (자바가 운영체제에 독립적인 이유)

  • JRE(Java Runtime Environment)

    : JVM + 표준 클래스 라이브러리 (Runtime, 자바 프로그램 실행을 위해)

  • JDK(Java Development Kit)

    : JRE + 개발에 필요한 도구 (Development, 자바 프로그램 개발을 위해)

  • 변수(Variable)

    : 값이 변할 수 있는 데이터를 임시로 저장하기 위해서 값을 저장할 수 있는 메모리 공간를 확보하고, 식별 가능한 이름을 붙인 것

    • 변수 선언

      : 값을 저장한 메모리 공간 확보하고, 해당 공간을 식별 가능한 이름을 붙이는 것
    • 값 할당

      : 변수에 값을 넣는 과정
    • 변수 명명 규칙

      • 일반적으로 카멜 케이스(camelCase) 사용
      • 영어 대소문자, 숫자, _, $ 사용가능
      • 숫자로 시작 불가
      • 이미 사용 중인 예약어 사용불가
  • 상수(Constant)

    : 변하지 않는 값의 데이터를 임시로 저장하기 위해서 값을 저장할 수 있는 메모리 공간를 확보하고, 식별 가능한 이름을 붙인 것

    • final을 자료형 앞에 붙여 사용
    • 값이 변하면 안 되는 경우에 사용
    • 코드 가독성을 높이기 위해 사용
    • 코드 유지관리를 쉽게하기 위해 사용

  • 타입

    : 변수가 저장될 때 값이 차지하는 메모리 공간의 크기와, 값의 저장 방식을 결정한다.

    • 값의 저장 방식

      • 기본 타입(primitive): 실제 값이 저장된다. (Ex. byte, short, int, long, float, double, char, boolean)
      • 참조 타입(reference): 값이 저장된 곳의 주소값이 저장된다. (기본 타입을 제외한 타입)
    • 리터럴

      : 문자 그대로의 값 그 자체

      • float 타입 변수에 실수형 리터럴을 할당할 때, 리터럴 뒤에 f 붙여야 한다.
      • long 타입 변수에 정수형 리터럴을 할당할 때, 리터럴 뒤에 L 붙여야 한다.

    • 정수 타입

      타입메모리 공간리터럴 표현 범위
      byte1byte-128 ~ 127
      short2byte-32768 ~ 32767
      int4byte-2,147,483,648 ~ 2,147,483,647
      long8byte-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

      • 오버플로우(Overflow): 자료형의 리터럴 표현 범위의 최대값을 넘어갈 경우 해당 타입의 최소값으로 값이 순환된다.
      • 언더플로우(Underflow): 자료형의 리터럴 표현 범위의 최소값을 넘어갈 경우 해당 타입의 최대값으로 값이 순환된다.

    • 실수 타입

      : 컴퓨터는 실수를 부동소수점 방식으로 저장하기 때문에 오차를 갖는다.

      타입메모리 공간정밀도
      float4byte7자리
      double8byte15자리

      • 오버플로우(Overflow): 자료형의 리터럴 표현 범위의 음의 최소값이나 양의 최대값을 넘어갈 경우 값은 무한대가 된다.
      • 언더플로우(Underflow): 자료형의 리터럴 표현 범위의 음의 최대값이나 양의 최소값을 넘어갈 경우 값은 0이 된다.

    • 논리 타입

      : 참(true) 또는 거짓(false)을 저장할 수 있는 데이터 타입

      타입메모리 공간
      boolean1byte

    • 문자 타입

      : 오직 하나의 문자 리터럴을 저장할 수 있는 데이터 타입

      타입메모리 공간
      char2byte

    • 타입 변환

      : 논리 타입 boolean을 제외한 7개 기본 타입은 서로 변환이 가능하다.

      • 자동 타입 변환
      1. 메모리 공간이 작은 타입에서 큰 타입으로 변환할 때
      2. 정밀도가 낮은 타입에서 큰 타입으로 변환할 때(정수 -> 실수)
      • 수동 타입 변환
        : 캐스팅(casting), 수동으로 () 안에 변환하고자 하는 타입을 적는다.

  • 문자열(String)

    : "" 큰따옴표로 감싸진 문자열

    • String 클래스의 메서드

      메서드설명
      charAt()()내의 인덱스에 해당하는 문자를 반환
      compareTo()해당 문자열과 ()내의 문자열을 대소문자 구분해 비교(같으면 0, 해당 문자열이 작으면 음수, 크면 양수 반환)
      compareToIgnoreCase()compareTo()와 같지만 대소문자 구분하지 않음
      concat()해당 문자열에 ()내 문자열을 붙여 반환
      indexOf()해당 문자열에서 ()내 문자에 해당하는 첫 인덱스를 반환
      trim()해당 문자열의 맨 앞, 뒤의 공백 제거
      toLowerCase(), toUpperCase()해당 문자열 전체를 소문자, 대문자로 변경

    • StringTokenizer

      : 문자열을 구분자로 쪼개주는 클래스(토큰: 쪼개진 문자열), import java.util.StringTokenizer로 사용

      메서드설명
      countTokens()남아있는 토큰의 개수 반환
      hasMoreElements(), hasMoreTokens()현재 위치 뒷 문자열에서 하나 이상 토큰을 사용할 수 있는 경우 true, 아니면 false 반환
      nextElement(), nextToken()다음 토큰 반환(nextElement()는 Object 반환, nextToken()은 String 반환)

    • StringBuilder

      : 여러 문자열을 더할 때 새로운 인스턴스들을 생성하지 않도록 하는 클래스

      메서드설명
      append()해당 문자열에 ()내 문자열을 연결
      toString()문자열로 반환

    • StringBuffer

      : 독립적인 버퍼 공간을 사용해 문자열의 값을 변경하거나 추가 가능한 클래스

      메서드설명
      append()해당 문자열에 ()내 문자열을 연결(concat()보다 빠름)
      capacity()현재 버퍼 크기 반환
      delete(시작 인덱스, 끝 인덱스), deleteCharAt()문자열 특정 부분 삭제
      insert(인덱스, 문자열)해당 문자열의 지정 인덱스 위치에 문자열 추가

0개의 댓글