본문 바로가기

도리도리 개발

(15)
[Spring] Test코드 실행 시 NullPointerException 발생 xml에서 property를 통해 의존성을 주입하는 코드였는데 실행할 때는 문제가 없었지만 test코드를 실행하자 NullPointerExceptrion이 발생했다. 코드는 아래와 같았다. public interface Tire { String getBrand(); } public class AmericaTire implements Tire { public String getBrand() { return "미국 타이어"; } } public class KoreaTire implements Tire { public String getBrand() { return "코리아 타이어"; } } public class Car { Tire tire; public Tire getTire() { return tire;..
[프로그래머스 - Java] 원소들의 곱과 합 문제 설명 제한사항 입출력 예 입출력 예 설명 풀이 class Solution { public int solution(int[] num_list) { int sum = 0, mul = 1; for(int i=0; i mul) ? 1 : 0; } } 합을 넣을 변수, 곱을 넣을 변수를 구한 후, for문으로 각각 변수에 합과 곱을 넣었다. 이후 합을 제곱하고 삼항연산자에 넣어 return 하였다.
[Java] ArrayList와 LinkedList ArrayList와 LinkedList를 알아보기 전에 두 가지를 묶어주는 상위 컬렉션인 List 컬렉션에 대해서 알아보자. List 컬렉션은 배열과 비슷하게 객체를 인덱스로 관리한다. 배열과의 차이점은 저장 용량이 자동으로 증가하며, 객체를 저장할 때 자동으로 인덱스가 부여된다는 것이다. List 컬렉션은 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조한다. 그렇기 때문에 동일한 객체를 중복 저장할 수 있고, 이 경우 동일한 번지가 참조된다. null 또한 저장이 되고, 이 경우 해당 인덱스는 객체를 참조하지 않는다. List 컬렉션에 객체를 추가할 때는 add() 메소드를 사용하고 객체를 찾아올 때는 get() 메소드, 객체를 삭제할 때는 remove() 메소드를 사용한다. List list =..
[프로그래머스 - Java] 배열 비교하기 문제 설명 제한사항 입출력 예 입출력 예 설명 풀이 class Solution { public int solution(int[] arr1, int[] arr2) { int answer = 0; int sum1 = 0; int sum2 = 0; if(arr1.length == arr2.length){ for(int i=0; i
[프로그래머스 - JavaScript] 첫 번째로 나오는 음수 풀이 function solution(num_list) { for(let i=0; i
[알고리즘] 버블 정렬 선택 정렬에 이어서 버블 정렬이다. 버블 정렬은 선택 정렬과 마찬가지로 직관적인 해결 방법이다. 옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내자 구현은 가장 쉽지만, 가장 비효율적인 알고리즘이라고 할 수 있다. 아래 코드와 실행 결과를 보도록 하자. const BubbleSort = () => { let i, j, temp; const arr = [1, 10, 5, 8, 7, 6, 4, 3, 2, 9]; for (i = 0; i arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (i = 0; i < 10; i+..
[알고리즘] 선택 정렬 알고리즘을 공부할 때 정렬을 제일 먼저 배우는 이유는 간단하다. 알고리즘의 효율성을 극명하게 보여주는 좋은 예시이기 때문이다. 선택 정렬이란? [가장 작은 것을 선택해서 가장 앞으로 보내는 정렬] 효율적이진 않지만 가장 쉽고 직관적으로 짤 수 있다. 1부터 10까지 정렬하는 코드를 작성해보자. const selectionSort = () => { let i, j, min, index, temp; const arr = [1, 10, 5, 8, 7, 6, 4, 3, 2, 9]; for (i = 0; i < 10; i++) { // 10보다 큰 min값을 저장한다. min = 9999; // 현재 탐색하고 있는 원소가 현재 최소값보다 작다면 바꿔준다. for (j = i; j < 10; j++) { if (m..
[Java] 자동 타입 변환 타입 변환은 타입을 다른 타입으로 변환시키는 것이다. 서로 상속관계에 있다면 자식 클래스는 부모 클래스로 자동 타입 변환이 가능하다. Animal과 Cat이 상속관계에 있다고 가정해보자. class Animal{...} class Cat extends Animal{...} Cat 클래스에서 Cat 객체를 생성하고 이것을 Animal 변수에 대입하면 자동 타입 변환이 일어난다. Cat cat = new Cat(); Animal animal = cat; //Animal animal = new Cat(); 처럼 한 줄로 줄일 수도 있다. 이렇게 표현한 코드로 생성되는 메모리 상태는 cat과 animal 변수는 타입만 다를 뿐, 동일한 Cat 객체를 참조하게 된다. 그림에서 animal 변수가 Animal 타입..
[Java] static? 메소드 오버로드에 관하여 문제를 풀던 중 궁금증이 발생했다. 원인 package sec04.Q4; public class PrinterEx { public static void main(String[] args) { Printer printer = new Printer(); printer.println(10); printer.println(true); printer.println(5.7); printer.println("홍길동"); } } 위의 코드를 실행하기 위한 Printer.java 코드를 작성해야한다. 내가 썼던 코드 package sec04.Q4; public class Printer { void println(int print) { System.out.println(print); } void ..
[Java] 열거 타입 열거 타입은 한정된 값인 열거 상수 중에서 하나의 상수를 저장하는 타입이다. 데이터 중에는 몇 가지로 한정된 값만을 가지는 경우가 있다. 예를 들면 요일에 대한 데이터는 월, 화, 수, 목, 금, 토, 일이라는 7개의 값만을 갖고, 계절 또한 봄, 여름, 가을, 겨울이라는 4개의 값만 가진다. 이처럼 한정된 값만을 가지는 타입을 열거 타입이라고 한다. 열거 타입 선언 Week.java MemberList.java KindOfCoffee.java 위와 같이 열거 타입 소스 파일을 만들 때는 첫 글자는 대문자로, 여러 단어로 나뉜다면 그 단어의 첫 스펠링을 대문자로 해주면 된다. 소스파일을 만들었다면 열거 타입 선언을 해야하는데, public enum 키워드는 열거타입을 선언하기 위한 키워드이며, 반드시 소..