PROGRAMMING/Java

[Java]About Java

먹지 2023. 4. 13. 04:22

자바 실행환경

  1. 하이브리드 언어
    • compile과정 + interpreter 방식: 컴퓨터에게 요청(coding) + 통역(compiling) + 결과실행(interpreting)
    • 언어 해석방식: 컴파일
      • 코딩본을 "한번에 번역"(cmd → javac): Java compiler → JVM(Java Virtual Machine)의 바이트 코드 해석(반기계어 .class 파일)
    • 실행방식: 인터프리터
      • 자바 바이트코드: JVM(cmd → java)에서 "한 줄씩 실행

자바의 코드 실행 과정

자바 개요 및 특징

  1. 기원: c++기반 가전제품 이용 목적 언어 개발
  2. 장점
    • c의 포인터 개념 → 객체의 동적 메모리 할당 방식 대체 & 순수 객체지향 개념 사용 ∴ 보안강화
    • 특정 시스템의 연관 관계 무배정: Class 형태 파일(현재 시스템의 기본정보 미포함) 사용 ∴ 플랫폼 독립적(OS, 운영체제)
    • 코드 재사용성: 방대한 양의 API보유 ∴ 편의성 제공
  3. 특성
    • 이식성
      • 한 번 코딩된 컴파일 상태의 클래스 파일을 "수정과정 없이" JVM가 설치된 시스템에서 실행 가능
    • 외부 포인터 X, 내부 포인터 사용
      • 포인터 변수(ex. c - int*, char*)제거 → 내부적 객체 메모리 할당시 "무조건 동적 메모리 할당"방식을 취함 ∴보안 상 안전성 고려
    • 완벽한 객체지향적 언어
      • 클래스 기반: package, impoer 타 클래스를 제외한 클래스 없는 코딩된 파일은 컴파일 시 에러 발생
      • ex. Wrapper 클래스 사용, 강력한 입, 출력(IO), 멀티스레드, RMI 등
  4. JVM
    • 메모리상에만 존재하는 가상 컴퓨터
    • 소스코드 컴파일 → 바이트 코드 변환
    • 바이트 코드 해석 → 각 메모리에 배치
      1. 스택영역(Runtime Stack)
        • 바이트 코드를 읽어 자바의 로컬 변수 할당
        • 선언된 블록 영역 이탈 시 메모리 소멸
        • 초기화 작업 필수
      2. 동적 할당 메모리 영역(Garbage Collection Heap)
        • 배열로 만들어진 연속된 공간, 클래스 포함 멤버 할당
        • Gargbage Collector에 의해 관리
        • 초기화 디폴트값
      3. 상수, 메서드
        • 고정 데이터인 상수:final 키워드 초기화, 추상화 형식인 메서드
        • 실행 시 위치값 有: 내용 기억 필수
        • 해킹에 안정적: 위치가 조건에 따라 결정되지 않음
      4. Register 영역
        • JVM 실행시 필요한 부분의 주소 기억
        • 각 영역을 연결해 프로세서 작동 시 기초 실행
  5. Eclipse
    • 파일 경로 설정
    • File > New > Java Project
    • File name == Class name(public 예약어 사용)
    • File > New > Class
    • Run > Run As > Java Application 결과 출력
  6. main메서드
    • 코딩 규칙(컴파일러의 프로그램 인식 순서): package > import > class
    • import: 현재 파일에서 사용하고자 하는 클래스 → JVM전달(≒#include)
    • package: 클래스 기반 → 비슷한 유형 그룹화 (Sun)
    • class: public 예약어 사용 클래스는 한 파일 당 한 클래스에만 기입
    • main(): public static void main (String[] args())
  7. 약속
    • 사용자 정의 명칭 규칙
      • class, method, field: 첫 글자 '$', '_', 영문자 대, 소문자
      • 글자수 제한 x
      • 공백문자 미 포함
      • 특수문자 x
      • 숫자 첫 글자 x
      • 예약어 x (ex. this, if, for, abstract ,,,,) 
    • 코딩 규칙
      • Class: 첫 글자  '$', '_', 영문자 대문자
      • Method: 첫 글자 '$', '_', 영문자 소문자
      • Field: static, final 필드만 대문자, 나머지 소문자
      • 합성어 첫 글자 대문자

문법과 자료형

  1. 주석처리: 프로그램 실행 중 영향 x, 설명문(/* */, //, /** ~*/)
  2. 멤버: 집합(Class field, constract, method)멤버  구성요소
    • 참조 연산자('.'): 모든 멤버 연결
    • static: 클래스명으로 접근 가능한 멤버 == 전부 static
      • ex. System(클래스명).out(static선언).println
  3. 상수(유지), 변수(변화), 자료형(유동적 데이터를 저장할 수 있는 크기를 규정한 형태)
    • 논리형 자료형: boolean
    • 정수형 자료형: byte, char, short, int, long
    • 실수형 자료형: float, double
    • 클래스형 자료형: String 프로그램이 필요로 하는 매개변수 전달
      • cf) 자료형 종류: 기본형(논리, 정수, 실수형)+ 레퍼런스형(배열, 클래스, 인터페이스) 
      • cf)오버플로와 언더플로우: 정해진 자료형 값을 넘어선 값 저장 → 값 회귀현상
        • ex. 1 byte == 8 bits(8칸, 0000~1111)→ -128~127을 넘어선 수 정의
  4. 자료형 변환
    • 특정 자료형의 값을 다른 자료형에 대입(boolean, String 형변환 x)
    • 종류
      • 자동형변환: 작은 자료형 → 큰 자료형 (메모리 낭비, 형변환 필요 x)
      • 강제형변환: 큰 자료형 → 작은 자료형 (ex. byte b = (byte) n ) → 명시 필요
    • 은닉화
      • OOP 中 은닉화(private 접근제한자): prototype 자료형 메모리 바이트 조사시 
      • Boolean, Character, Short, Integer, Long, Float, Double: 자료형 대체(항상 4byte 레퍼런스 자료형)
      • ☆boolean 제외 MAX_VALUE, MIN_VALUE 멤버 有
    • 초기화
      • 필드 선언
        • Runtime Stack: 지역변수 메모리 할당
        • Garbage Collection Heap: 멤버 변수 메모리 할당

입, 출력

  1. System 클래스: 입력(System.in == inputStream / System.out == outputStream)
    • Field
      • in: InputStream과 연결된 객체, 키보드 입력 처리
      • out: PrintStream과 연결된 객체, 콘솔 출력 처리
      • err: PrintStream과 연결된 객체, 콘솔 출력 中 에러 관련 처리
    • Method
      • ex. int nextInt():  다음 토큰 int 타입으로 리턴
    • Scanner
      • 키 입력을 용이하게 하는 클래스
      • Scanner scanner = new Scanner(System.in) scanner.close();
      • System.in(바이트 표준 입력 스트림) scanner(정보 입력 받기) (타입변환) program
      • import java.utill Scanner; 클래스 사용
  2. 입력: static > main >finalize

연산자

  1. 우선순위
    • 최우선 연산자
    • 단항 연산자
    • 산술 연산자
    • 시프트 연산자
    • 관계 연산자
    • 비트 연산자
    • 논리 연산자
    • 삼항 연산자
    • 배정 대입 연산자
    • 후위형 증감연산자(★';'을 만나거나 같은 변수가 같은 라인에 두 번 이상 나올 경우 변경된 값 저장)
    • 순차연산자

'PROGRAMMING > Java' 카테고리의 다른 글

[Java]예외처리  (0) 2023.04.05