전체 글 (205) 썸네일형 리스트형 [JAVA] 힙(heap) 메모리 힙 메모리란 프로그램에서 동적으로 할당 된 메모리이다. 개발자의 메모리 영역이다. 특징 new 연산자로 객체를 호출시 힙 영역에 메모리가 할당된다. 장점 동적으로 메모리 할당, 해제가 주도적으로 가능하기에 메모리 누수 방지가 가능하다. [JAVA] 클래스(객체) 클래스란 JAVA의 기본 단위이며 자료형의 일종이다. 특징 JAVA에서 이미 수많은 클래스들을 미리 만들어 놓았지만, 개발자가 새로 정의할 수 있다. ex) Random, Scanner... 클래스명 작성 시 첫 글자는 대문자이다. new 연산자를 써야한다. 힙(heap) 메모리를 사용한다. 객체지향언어 누가 함수를 호출했느냐에 따라 결과가 달라진다. 함수에게 주체가 생기는 언어이다. 일반적인 함수는 주체가 없고 메서드(멤버함수)는 주체가 있다. 같은 메서드인데 다른 결과가 나오는 것을 다형성이라한다. "누가 함수를 호출했느냐에 따라 결과가 달라진다" 같은 Dog라는 클래스이지만 다른 객체 변수(dog1, dog2)에 다른 값을 넣기 때문에 결과가 달라진다. // 강아지 객체1 호출 Dog dog1 = .. [디버깅표] 선택정렬 코드에 대한 디버깅표 작성 코드 // 배열 선언 int[] datas = new int[5]; // 값 넣기 datas[0] = 5; datas[1] = 3; datas[2] = 1; datas[3] = 4; datas[4] = 2; // 마지막 자리는 자동 정렬 되므로 arr.length - 1 for (int i = 0; i < datas.length - 1; i++) { // 현재 인덱스 값을 최소값이라 가정 int minIndex = i; // 기준 값을 마지막 인덱스 값까지 비교한다. for (int j = i + 1; j < datas.length; j++) { // 기준 값이 더 크다면 if (datas[j] < datas[minIndex]) { // 최소값 교체 minIndex = j; } } // 기준 값을 임시저.. [툴] <기타> Sakura 에디터 사이트 주소 일본어https://sakura-editor.github.io/영어https://sakura-editor.github.io/index.en.html [툴] <기타> Typora 사이트 주소 https://typora.io/ [툴] <기타> Obsidian 사이트 주소 https://obsidian.md/ [알고리즘] 선택정렬 선택정렬이란 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해나가는 알고리즘이다. 논리 0번 인덱스를 최소 값이라고 가정한다. 0번 인덱스를 마지막 인덱스까지 비교한다. 0번 인덱스 보다 작은 값이 있다면 자리를 교체한다. next 1번 인덱스를 최소 값이라고 가정한다. 1번 인덱스를 마지막 인덱스까지 비교한다. 1번 인덱스 보다 작은 값이 있다면 자리를 교체한다. next .... 이미지로 보기 특징 알고리즘이 단순하다. 비교 횟수는 많지만, 실제로 교환하는 횟수는 적다. 교환이 많이 일어나는 상황에서 효율적이다. 단점 불안정 정렬이다. 중복 값이 있을 경우 위치 보존이 안된다. 예제 [5,3,1,4,2]가 [1,2,3,4,5]가 되도록 정렬한다. 예제 코드 // 배열 .. [디버깅표] 삽입정렬 코드에 대한 디버깅표 작성 코드 //배열 선언 int[] arr = new int[5]; //배열에 데이터 넣기 arr[0]=100; arr[1]=5; arr[2]=60; arr[3]=1000; arr[4]=30; //비교 기준 값을 넣는 변수 int pivot; //1번 인덱스 부터 반복 //기준 값 꺼내기 for(int i=1;i=0;j--) { //비교 값이 기준 값보다 크다면 if(arr[j] > pivot) { //비교 값을 한 칸 뒤로 넣는다 arr[j + 1] = arr[j]; //원래 비교 값 자리에 기준 값을 넣는다. arr[j] = pivot; } } } 디버깅표 i i=0 arr[j] arr[j]>pivot arr[j+1] = arr[j] arr[j] = pivot 1 T 5 5 0 T 100 T {100,10.. [JAVA] 모듈화 모듈이란 단독 수행할 수 있는 코드의 묶음이다. 독자적인 기능이 존재하는 코드이다. 모듈화의 지칭어 컴포넌트화 캡슐화 리팩토링 패키징 함수화 메서드화 특징 조합 경우의 수가 많을 수록 좋다. 더 세부적인 표현이 가능하다. 결합도(응집도)를 높일 수 있다. 결합도가 낮을 경우, 코드 한줄이라도 문제가 있을 경우 동작이 불가능하다. 결합도가 높을 경우, 함수 1개를 수정 중이더라도 전체 프로그램을 사용은 가능하다. [알고리즘] 버블정렬 버블정렬이란 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘이다. 논리 0번 인덱스와 1번인덱스를 비교한다. 1번 인덱스가 작다면 앞으로 배치한다. 1번 인덱스가 크다면 상태를 유지한다. next 1번 인덱스와 2번인덱스를 비교한다. 2번 인덱스가 작다면 앞으로 배치한다. 1번 인덱스가 크다면 상태를 유지한다. next .... 이미지로 보기 특징 알고리즘이 단순하다. 안정 정렬 이다.(동일한 값을 가진 데이터들의 순서가 원래의 순서와 같이 유지되는 정렬방법) 동일 값이라도 그 데이터가 내포하는 의미는 다를 수 있다. ex) 점수가 같은 학생 단점 특정 요소가 최종 정렬 위치에 있는 경우라도 교환이 일어난다. 예제 [3,2,5,1,4]이 [1,2,3,4,5]가 되도록 정렬한다. 예제 코드 // 배열 선.. 이전 1 ··· 16 17 18 19 20 21 다음