본문 바로가기
728x90

[JAVA]/JAVA 기본44

[JAVA] 오토박싱 & 언박싱 (Integer[] 타입으로 생성된 리스트에 int 타입의 데이터를 못 넣는 이유 ) 오토박싱(auto boxing) 원시 타입의 데이터를 해당 타입의 래퍼 클래스의 객체로 변환하는 것 JDK 1.5 이후에 자동으로 변환된다. int n = 5; Integer i = n; 오토언박싱(auto unboxing) 래퍼클래스를 원시 타입으로 변환하는 것으로, 래퍼 클래스는 언박싱을 해야 산술 연산이 가능하다. JDK 1.5 이후에 자동으로 변환된다. Integer i = 5; int n = i; Integer[]로 생성된 리스트에 int 타입의 데이터를 넣지 못하는 이유 // 리스트 생성 ArrayList intList = new ArrayList(); ArrayList intArrList = new ArrayList(); // 변수 생성 int a = 1; int[] b = {1, 2, 3}.. 2022. 9. 29.
[JAVA] break 문과 continue 문 break 문 만나는 즉시 해당 반복문 전체를 탈출한다. 이중 for문에서 안의 for문에 break가 있을 경우에는, 안의 포문만 탈출한다. // break for (int i = 0; i 2022. 9. 28.
[JAVA] 재귀 함수 재귀 함수 함수가 자기 자신을 직간접적으로 호출하는 함수를 말한다. 재귀 함수의 장점 반복문을 여러개 사용하지 않고 코드를 간결하게 작성할 수 있다. 수정이 용이하다. 변수를 여러 개 사용하지 않아도 된다. 재귀 함수의 단점 반복문과 달리 코드의 직관성이 떨어진다. 반복문에 비해 메모리를 많이 사용한다.(반복하여 메서드를 호출하여 전부 process stack에 저장하기때문) 메서드 호출 이후 복귀를 할 때 컨텍스트 스위칭 비용이 발생한다. 재귀함수를 사용하기 위한 조건 문제의 크기를 작은 단위로 나눌 수 있다. 재귀 함수의 호출을 종료하는 시점이 존재해야 한다. import java.util.Scanner; public class Main { public static void Gugudan(int nu.. 2022. 9. 20.
[JAVA] static 키워드 static '정적인', '정적의'라는 뜻으로 전역변수나 메서드에 사용할 수 있다. 객체는 생성될 때 각각의 변수를 가지고 있다. 각 객체에 변수를 선언할 때마다 메모리에 할당해야한다. 또한 각 객체에 선언한 변수의 값을 모두 증가시켜야 하는 경우가 발생한다면 일일이 값을 변경해주어야하는 불편함이 있다. 이러한 문제는 static 키워드를 사용을 통해 해결할 수 있다. static 키워드를 사용하면 메모리의 공유를 통해 높은 효율성을 얻을 수 있다. static 변수 정적 변수라고 하며, static 키워드를 사용하여 선언한 변수는 메모리 할당이 한 번만 이루어지며, 해당 클래스의 모든 객체들에 의해 공유된다. 따라서 공통적으로 같은 값을 유지해야 하는 변수에 사용하면 좋다. static 메서드 정적 메.. 2022. 9. 19.
[JAVA] 배열 int[] a = new int[] {1, 2, 3, 4, 5}; // 배열의 생성과 동시에 초기화 // new int[]는 생략할 수 있다. // 길이가 0인 배열을 생성하는 방법 int[] b = new int[0]; int[] c = new int[] {}; int[] d = {}; // new int[] 생략 가능 // 빈 배열 리턴하는 법 return new int[0]; return new int[] {}; 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.
728x90