본문 바로가기
728x90

전체 글410

[JAVA] public class VS class ※ 본 게시물은 컴퓨터 및 프로그래밍을 공부중인 비전공자가 개인적인 공부를 위해 적어둔 것으로 내용이 정확하지 않을 수 있으며, 언제든지 추가되거나 수정될 수 있음. 인텔리제이를 사용하면서 항상 들었던 의문. 왜? public class Main{}에서 Main의 이름을 바꾸면 에러가 나면서 실행이 되지 않을까? 이것 때문에 엄청 스트레스였다. 과제를 하기 위해 깃으로 파일을 내려받고 실행하려고 하면 항상 테스트를 해볼 수 없어 답답했다. 아직 정확한 이유를 모르지만 지금까지 알아낸 것은, Main.java라는 이름은 자바 소스 파일의 기본 이름인듯하다. public class는 다른 패키지에서 접근이 가능한 클래스라는 의미이다. 하나의 소스 파일에 여러 클래스가 위치한 경우 public class라고 .. 2022. 9. 17.
[JAVA] 가비지 컬렉션(Garbage Collection) 가비지 컬렉션(Garbage Collection) 메모리를 자동으로 관리하는 프로세스로, 힙 영역에서 더 이상 사용하지 않는 객체를 찾아 삭제하여 메모리를 확보한다. Young 영역은 새롭게 생성된 객체가 할당되는 곳이다. 많은 객체가 생성되고 사라짐을 반복한다. 이 영역에 활동하는 가비지 컬렉션를 Minor GC라고 한다. Old 영역은 Young 영역에서 상태를 유지하고 살아남은 객체들이 복사되는 곳으로 Young 영역보다 크게 할당되며 크기가 크기 때문에 가비지가 적게 발생한다. 이 영역에 활동하는 가비지 컬렉션를 Major GC라고 한다. 실행 단계 1. Stop The World 가비지 컬렉션을 실행시키기 위해 자바 가상 머신이 애플리케이션의 실행을 멈추는 단계이다. 가비지 컬렉션을 실행하는 스.. 2022. 9. 16.
[JAVA] 스레드(Thread) 프로세스(Process) & 스레드(Thread) 프로세스는 실행 중인 애플리케이션(프로그램)을 의미한다. 애플리케이션이 실행되면 운영체제로부터 실행에 필요한 메모리를 할당받아 프로세스가 된다. 프로세스는 데이터, 컴퓨터 자원, 스레드로 구성된다. 스레드는 데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행한다. 스레드는 하나의 코드 실행 흐름이라고 볼 수 있다. 메인 스레드(Main Thread) 자바 애플리케이션을 실행하면 가장 먼저 main 메서드가 실행되는데, 이는 메인 스레드가 실행시키는 것이다. 메인 스레드는 main 메서드의 코드를 처음부터 순차적으로 실행시키며, 코드의 끝에 다다르거나, return문을 만나면 실행을 종료한다. 싱글 스레드 프로세스(Single-Thread Pr.. 2022. 9. 16.
[JAVA] 스트림(Stream) 스트림(Stream) 배열이나 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. 스트림으로 다양한 데이터 소스를 표준화하여 통합된 방식으로 데이터를 다룰 수 있다. 이를 활용하여 다량의 데이터에 복잡한 연산을 수행하면서도, 코드의 가독성이나 재사용성을 높일 수 있다. 스트림의 특징 스트림은 스트림 생성 - 중간 연산 - 최종 연산 세 단계로 구성된다. 선언형 프로그래밍 방식을 사용 선언형 프로그래밍은 '어떻게' 수행하는지보다 '무엇을' 수행하는지를 중요하게 여기는 프로그래밍 패러다임이다. 명령형 방식에서는 코드의 절차를 따라가야 코드를 이해할 수 있지만, 선언형 방식은 코드의 절차를 모르더라도 무엇을 수행하는지 이해할 수 있다. 람다식으로 요소 처리 코드를 제공 Str.. 2022. 9. 16.
[Java] 람다식(Lambda Expression) 람다식(Lambda Expression) 함수형 프로그래밍 기법을 지원하는 자바의 문법 요소로, 메서드를 하나의 식으로 표현하기 때문에 코드를 매우 간결하고 명확하게 표현할 수 있다. 자바에서 함수는 반드시 클래스 안에 정의되어야 하기 때문에 메서드가 독립적으로 있을 수 없고 반드시 클래스 객체를 먼저 생성한 후에 그 객체로 매서드를 호출해야 한다. 따라서 람다식은 객체이며, 이름이 없는 익명 클래스라고 할 수 있다. 1. 익명 객체이다. 2. 객체를 컨트롤하기 위해 함수형 인터페이스를 사용한다. public class Main { public static void main(String[] args) { AddFunction add = (num1, num2) -> num1 + num2; // 람다식 Sy.. 2022. 9. 15.
[JAVA] 애너테이션(Annotation) 주석(Comment) & 애너테이션(Annotation) 주석은 개발자의 입장에서 코드의 가독성을 높이고, 다른 개발자와의 협업에서 코드에 대한 설명을 제공하는 역할을 수행하지만, 애너테이션은 특정 코드를 사용하는 프로그램에게 정보를 전달한다. 쉽게 이야기하면 프로그램을 위한 주석이라고 할 수 있다. 애너테이션의 주요한 역할 컴파일러에게 문법의 에러 여부를 체크하도록 정보를 제공한다. 프로그램을 빌드할 때 코드를 자동으로 생성할 수 있게 정보를 제공한다. 런타임에 특정 기능을 실행하도록 정보를 제공한다. 애너테이션의 종류 표준 애너테이션 : 자바에서 기본으로 제공하는 애너테이션 표준 애너테이션 설명 @Override 컴파일러에게 메서드를 오버라이딩 하는 것이라고 알림 @Deprecated 기존의 필드나 .. 2022. 9. 15.
[JAVA] 컬렉션 프레임워크 컬렉션 프레임워크(Collection Framework) 객체들을 효율적으로 검색, 추가, 삭제할 수 있도록 관련된 인터페이스와 클래스를 포함시킨 일종의 컬렉션(데이터 집합)을 말한다. Collection 인터페이스 메소드 리턴 타입 설명 add(Object 0) / addAll(Collection c) boolean 주어진 객체 및 컬렉션의 객체들을 컬렉션에 추가 contains(Object o) / containsAll(Collection c) boolean 주어진 객체 및 컬렉션이 저장되어있는지 여부를 리턴 iterator() Iterator 컬렉션의 iterator를 리턴 equals(Object o) boolean 컬렉션이 동일한지 여부 확인 isEmpty() boolean 컬렉션이 비어있는지 .. 2022. 9. 14.
[JAVA] 예외 처리 정리 예외처리(Exception Handing) 예외처리는 에러로 인한 프로그램의 종료를 방지하고, 정상적으로 실행시키기 위해 사전에 미리 코드를 작성하여 대응하는 것을 말한다. 에러(Error) 자바에서 에러는 논리적 오류로 인한 논리적 에러(Logicla Error)와 발생 시점에 따른 컴파일 에러(Compile Time Error), 런타임 에러(Run Time Error)로 구분된다. 컴파일 에러 컴파일할 때 발생하는 에러로, 문법적인 문제인 신텍스(syntax) 오류로 인해 발생하기 때문에 신텍스 에러(Syntax Error)라고 부르기도 한다. 일반적으로 IDE에서 런타임 실행 전에 에러를 자동으로 찾아 알려주기 때문에 쉽게 수정할 수 있다. 런타임 에러 런타임 시에 발생하는 에러이다. 프로그램이 .. 2022. 9. 14.
728x90