[JAVA] 자바의 기초

ITmakesmeSoft·2022년 9월 17일
0

JAVA BASIC

목록 보기
1/7
post-thumbnail

Java

  • 자바는 컴파일 언어로,
    java 파일을 컴퓨터가 이해할 수 있는 class 파일(byte code)로 컴파일 해야 함
  • 컴파일 시 bin폴더 안에 class 파일이 저장됨(숨김 폴더)
  • javac : java파일을 class파일로 컴파일하는 CLI 명령어
  • java (클래스이름) : 클래스 실행 명령어

JVM(Java Virtual Machine)

  • 자바 가상 머신

JVM 메모리 구조

  • Java 언어는 메모리 관리를 개발자가 하지 않고, GC(Garbage Collection)가 대신 관리
  • Garbage Collection
    • Heap 영역(class 영역 포함)에 생성된 메모리 관리 담당
    • 더 이상 사용되지 않는 객체들을 점검하여 제거
    • CPU가 여유롭거나 메모리가 부족한 경우 JVM에 의해 자동적으로 실행
    • System.gc()를 통해 호출 (시스템 영향을 주기 때문에 되도록 하지 않는 것을 권장)

배열

  • 같은 종류의 데이터를 저장하기 위한 자료구조
  • 크기가 고정되어 있음. (한 번 생성된 배열은 크기를 바꿀 수 없음)
  • 배열을 객체로 취급
  • 배열의 요소를 참조하려면 배열이름과 색인(index)을 사용 ← index는 정수값이어야 함

배열의 선언

  • type[] variable_name

  • type variable_name[]

    타입배열이름선언
    intiArrint[] iArr;
    charcArrchar[] cArr;
    booleanbArrboolean[] bArr;
    StringstrArrString[] strArr;
    DatedateArrDate[] dateArr;

배열의 생성과 초기화

  • 자료형[] 배열이름= {값1, 값2, 값3, 값4}; ← 선언과 동시에 초기화

  • 배열이름 = new 자료형[] {값1, 값2, 값3, 값4}; ← 배열생성 및 값 초기화

  • 배열이름 = new 자료형[길이]; ← 배열 생성(자료형의 기본값으로 초기화)

    자료형기본값비고
    booleanfalse
    char‘\u0000’공백문자
    byte, short, int0
    long0L
    float0.0f
    double0.0
    참조형 변수null아무것도 참조하지 않음
    public class Array01{
    		public static void main(String[] args){
    				int[] score1;
    				int score1[];
    				// score2 = {1,2,3,4,5}; [X]
    				score2 = new int[] {1,2,3,4,5}; // [O]
    				
    				int[] score3 = {1,2,3,4,5};
    				int[] score4 = new int[5];
    				score4[0] = 1;
    				score4[1] = 2;
    				score4[2] = 3;
    				score4[3] = 4;
    				score4[4] = 5;
    
    				for (int i = 0; i<score4.length; i++) {
    						System.out.println(score4[i]);
    				}
    		}
    }

배열의 사용

  • index(0부터 시작)로 각 요소에 접근
  • Arr.length를 통해 배열의 길이 조회 가능
  • 배열의 길이는 임의 변경 불가
  • 길이 변경을 위해서는 새로운 배열 생성 후 내용을 복사해야 함
  • 사용하지 않는 배열은 garbage collection이 알아서 제거

배열의 복사

  • System.arraycopy(*Object src, int srcPos, Object dest, int destPos, int length*)
  • src : 원본 배열
  • srcPos : 원본 배열 복사 시작 위치 (Pos는 Position의 약어)
  • dest : 복사할 배열
  • destPos : 복사 받을 시작 위치
  • length : 복사할 크기
    public class Array_copy {
    		public static void main(String[] args) {
    				int[] arr = {77, 50, 10, 12, 64, 15};
    				int[] tmp = new int[arr.length*2];
    
    				for(int i = 0; i < arr.length; i++) {
    						tmp[i] = arr[i];
    				}
    
    				int[] tmp2 = new int[arr.length*2];
    				System.arraycopy(arr, 0, tmp2, 0, arr.length);
    				System.out.println(Arrays.toString(tmp2));
    		}
    }

객체지향 프로그래밍(OOP, Object Oriented Programming)

  • 객체 : 사물과 같이 유형적인 것과 개념이나 논리와 같은 무형적인 것
  • 지향 : 작정하거나 지정한 방향으로 나아감
  • 객체 모델링 : 현실세계의 객체를 SW 객체로 설계하는 것

객체지향 프로그래밍 특징 (A PIE)

  • Abstraction(추상화)
  • Polymorphism(다형성)
  • Inheritance(상속)
  • Encapsulation(캡슐화)
    ⇒ 코드 재사용성 높임.

접근 제어자(Access Modifier)

  • 제어자 : 클래스와 클래스 멤버의 선언 시 사용하여 부가적인 의미를 부여하는 키워드
  • 제어자의 종류 : 접근 제어자, 기타 제어자
  • 정보 은닉을 위해 접근 제어자를 이용, 클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정하여 정보 은닉을 구체화

접근 제어자 종류

  • private
    • private 접근 제어자를 사용하여 선언된 클래스 멤버는 외부에 공개되지 않으며, 외부에서 직접 접근이 불가
  • public
    • public 접근 제어자를 사용하여 선언된 클래스 멤버는 외부로 공개되며, 해당 객체를 사용하는 프로그램 어디서나 직접 접근 가능
  • default
    • default 접근 제어를 가지는 멤버는 같은 클래스 멤버와 같은 패키지에 속하는 멤버에서만 접근 가능
    • 접근 제어자가 지정되지 않으면 자동적으로 default 접근 제어를 가지게 됨(기본값)
  • protected
    • protected 멤버는 부모 클래스에 대해서는 public 멤버처럼 취급되며, 외부에서는 private 멤버처럼 취급됨.
    • 아래의 경우 protected 멤버에 접근 가능
      • 이 멤버를 선언한 클래스의 멤버
      • 이 멤버를 선언한 클래스가 속한 패키지의 멤버
      • 이 멤버를 선언한 클래스를 상속받은 자식 클래스의 멤버

접근 제어자의 접근 범위

  • public > protected > default > private

    접근 제어자같은 클래스 멤버같은 패키지 멤버자식 클래스 멤버그 외의 영역
    publicOOOO
    protectedOOOX
    defaultOOXX
    privateOXXX
profile
💎 Daniel LEE | SSAFY 8th

0개의 댓글