교육 (Today I Learned)/Hanaro

[Hanaro] 36일차 / Java (출력문, 변수와 자료형, 형변환, String)

Bay Im 2024. 3. 8. 00:42

01 Java Platform 이해

  • 프로그래밍 언어의 역할
    • 컴퓨터에서 동작하는 Application을 만들기 위한 과정
    • Compile 언어와 Script 언어로 구분
  • 자바의 특징
    • 플랫폼 독립적
      • JVM(Java Virtual Machine)으로 .class 자바 파일 실행
    • 객체 지향 언어
    • 함수형 코딩 지원
    • 분산처리 지원
    • 멀티 스레드 지원
      • 동시에 여러 가지 작업을 할 경우
      • 대용량 작업
    • 동적 로딩 지원 (import)
      • 미리 만들어진 객체를 필요한 시점에 동적 로딩하여 객체 생성
  • JDK와 JRE
    • JDK (Java Development Kit)
      • 자바 개발 도구
      • Compiler, Debugger
    • JRE (Java Runtime Environment)
      • 자바 실행 환경
      • Class Loader, Java API Runtime Library
    • JDK→ JRE→ JVM
  • OOP (Object Oriented Programming)
    • 객체 지향 언어
    • 부품 객체를 먼저 만들고 조합하여 전체 프로그래밍을 완성하는 기법
    • 캡슐화, 상속, 다형성 기능 지원
  • compile 언어와 script 언어의 차이점
    • script 언어
      • Javascript, Python 등
      • 명령어를 한 줄씩 읽으면서 실행하므로 번역 속도가 빠르다.
    • compile 언어
      • Java, C++ 등
      • 번역 단위가 코드 전체이므로 번역 속도가 빠르다.

 

02 Java 개발 환경 세팅

  • public static void main(String[] args)
    • public
      • 예약어(키워드) 접근 지정자
      • 모든 클래스에서 접근 가능
    • static
      • 정적 변수/함수를 지정할 때 (인스턴스 생성 없이 호출 가능)
      • 프로그램 시작시 고정된 메모리 주소에 할당됨
    • void
      • return 값이 없는 반환 타입
    • String[] args
      • String 배열 타입의 매개변수를 가지며, 여러 개의 문자열을 입력받아서 기능 수행
  • 주석
    • 한 줄 주석문
      • // 주석 내용
    • 여러 줄 주석문
      • /* 주석 내용 */
  • 출력문
    • System.out.println() 사용
    • string과 num 혼합 예시
      • System.*out*.println("화면" + 10 + 20); 처럼 문자열이 먼저 나온다면 num 문자 형태로 출력
      • System.*out*.println(10 + 20 + "화면"); 처럼 num이 먼저 나온다면 num끼리 계산 후 출력
      • 연산자 우선순위가 헷갈린다면 소괄호로 묶어주기!
    • 출력문 메서드
      • println()
        • 문자열 한 줄 출력 + 줄바꿈
      • print()
        • 줄바꿈 없음
      • printf()
        • 형식화된 출력문
        • %d (10진수), %o (8진수), %x (16진수), %e (지수형)
        • 예시
          • System.*out*.printf("%d\\n", 30); ⇒ 30 출력
          • System.*out*.printf("%.3f", 123.45f); ⇒ 123.450 출력
      • \n
        • 줄 바꿈 특수문자

 

03 Java의 기본 문법 이해 - 자료형과 연산자

  • 변수와 자료형의 개요
    • 자료형
      • 저장할 수 있는 값의 형태를 지정
      • Java 프로그램의 모든 변수, 상수는 자료형 선언 후 사용 가능
    • 자료형 사용 방법
      • 기본 형태
        • 자료형 변수이름 = 값;
      • 예시
        • 동시에 변수 선언과 값 저장
          • int a = 3;
        • 변수 선언 이후 값 저장
          • int b;
          • b = 3;
    • 변수/상수/메서드 이름 선정 규칙
      • 필수 사항
        • 영문대소문자 및 한글 사용 가능
        • 특수문자는 _와 $만 사용 가능
        • 숫자는 사용 가능하지만 첫 번째에는 올 수 없음
        • 자바에서 사용 중인 키워드 사용 불가
      • 권고 사항
        • 변수 이름은 소문자로 시작
        • 두 개의 단어가 결합된 경우 두 번째 단어는 대문자로 시작 (camel case)
        • 상수 이름은 모든 문자를 대문자로 작성, 두 단어 결합 시 언더바(_)로 연결
    • 변수의 생존 기간
      • 변수는 자신이 선언된 중괄호 안에서만 사용 가능
  • 자료형의 종류
    • 기본 자료형 (primitive types)
      • 논리
        • boolean (1byte)
      • 정수
        • byte, short (2byte), int (4byte), long (8byte)
          • long은 값(숫자) 뒤에 L 붙이기
      • 실수
        • float (4byte), double (8byte)
          • float는 값(숫자) 뒤에 f 붙이기
      • 문자
        • char (2byte)
    • 참조 자료형 (reference types)
      • Array, Class, Interface, Enum
  • 메모리의 구조
    • class, static, final, method 영역
    • Stack 영역
      • 기본 자료형은 값을 stack 메모리에 저장
      • stack은 위치를 저장
    • Heap 영역
      • 참조 자료형은 값을 heap 메모리에 저장
      • heap 메모리는 직접 접근 불가
  • 기본 자료형 간의 형 변환
    • literal 타입
      • 자료 형 없이 값으로 입력하는 경우 값의 형태에 따라 대표 자료형으로 자동 변환
      • 정수값→ int로 저장, 실수값→ double로 저장
    • Type Casting
      • 숫자를 저장하는 7개(boolean 제외)의 기본 자료형 사이에 타입 변환 가능
      • 자동 형변환
        • 값의 표현 범위가 넓은 쪽으로 저장되는 경우 (작은 정수형→ 큰 정수형, 정수형→ 실수형)
        • 대입(산술) 연산자를 통해 자동으로 형 변환
      • 수동 형변환
        • 값의 표현 범위가 좁은 쪽으로 저장되는 경우 (큰 정수형→ 작은 정수형, 실수형→ 정수형)
        • 값의 손실이 발생할 수 있음
        • 직접 표기하지 않으면 오류 발생
  • 수동 형변환 방법
    • 타입 변환 대상 앞에 (자료형) 표기
      • int a = (int)3.2;
    • long형은 숫자 뒤에 L 표기
      • long a = (long)10;
      • long b = 10L;
    • float 형은 숫자 뒤에 f 표기
      • float c = (float)5.8;
      • float d = 5.8f;
  • 참조 자료형 (reference types)
    • Class와 Object
      • Class
        • 타입의 구조를 나타내며 붕어빵 틀과 같은 느낌
      • Object (객체)
        • 해당 타입으로 생성된 실체이며 틀에서 찍어낸 붕어빵 느낌
    • String 클래스
      • 문자열 저장 클래스 타입
      • 문자열은 쌍따옴표 안에 표기
      • 객체 내의 값 변경 불가, 변경시 새로운 객체를 생성하여 작성
      • 리터럴을 바로 입력한 데이터는 문자열이 같을 때 하나의 객체를 공유
      • 객체 생성 방법
        • new 키워드 사용
          • String 변수명 = new String(”문자열”);
        • 변수에 바로 문자열 리터럴 입력
          • String 변수명 = “문자열”;
      • String 객체의 + 연산
        • 연산자로(+=) 문자열 연결 가능
    • String의 주요 메서드
      • 문자열 길이
        • length()
      • 문자열 검색
        • charAt(index)
          • int 형인 index 값을 넣으면 해당 인덱스 위치의 문자 출력
        • indexOf(int or String)
          • int나 String 값을 넣으면 문자열의 위치나 문자열에 포함된 문자를 앞에서 부터 검색하여 일치하는 인덱스 값 출력
          • 문자열 검색 시 다 소문자로 바꾼 후에 검색하는 것이 좋다.
            • ex) toLowerCase().indexOf("검색할문자열")
        • lastIndexOf(int or String)
          • 위랑 비슷하지만 뒤에서부터 검색
      • 문자열 변환 및 연결
        • String.valueOf()
          • boolean, char, int, long, float, double 값을 문자열로 변환하기 위한 정적 메서드
        • concat(string)
          • String 값을 넣으면 문자열을 연결
        • Integer.parseInt(string)
          • 문자열을 넣으면 정수형으로 변환
          • ex) Integer.parseInt(”10”)
      • 문자열 배열 변환
        • toCharArray()
          • 문자열을 char[]으로 변환
        • Arrays.toString()
          • 배열을 문자열로 변환해주는 함수
      • 문자열 수정
        • toLowerCase()
          • 영문자를 모두 소문자로 변환
        • toUpperCase()
          • 영문자를 모두 대문자로 변환
        • replace(oldChar, newChar)
          • oldChar 문자열을 newChar 문자열로 대체한 문자열 생성
        • substring(beginIndex, endIndex)
          • beginIndex부터 끝까지나, endIndex-1 위치까지의 문자열 생성
        • split(regex)
          • string 형인 regex를 기준으로 문자열을 분할하여 분할한 문자열 배열 생성
          • regex는 | 기호로 여러 개 사용 가능
            • ex) split(”/|-| “) ⇒ / 또는 - 또는 “ “을 기준으로 분리
          • split(regex, limit) 형태에서 limit은 분할의 최대 개수 지정 가능
        • trim()
          • 문자열의 앞뒤 공백 제거 (가운데 공백은 미제거)
          • 모든 공백을 제거하고 싶을 때는 replaceAll(" ", "") 이용
      • 문자열 내용 비교
        • equals()
          • 문자열의 실제 내용 비교 (값 비교)
          • == 은 주소 값 비교이다.
        • equalsIgnoreCase(anotherString)
          • 대소문자 구분없이 문자열의 실제 내용 비교
        • constains(string)
          • 입력한 string 문자열을 포함하는지 true/false로 반환