본문 바로가기

전체 글

(205)
[JAVA] 오버라이딩 오버라이딩의 정의 자식 클래스가 부모 클래스가 가진 함수를 재정의 하는것이다. 기존 부모 클래스가 가지는 함수는 사용하지 않겠다. 특징 함수명이 동일하고 메서드 시그니쳐도 같다. 상속과 관계가 있다. 메서드를 재정의 하는 것이다. 결과적으로 나오는 메서드는 1개이다. 예제 코드 class Point { void printInfo() { System.out.println("a"); } } class ColorPoint extends Point{ void printInfo() { System.out.println("b"); } }
[JAVA] 상속 상속이란 부모클래스(상위클래스)의 멤버를 자식클래스(하위클래스)가 상속 받아 그대로 쓸 수있도록 하는 것이다. 특징 부모 클래스가 가지고 있는 멤버 변수, 메서드를 자식 클래스가 사용이 가능하다. 자식 클래스가 가지고 있는 멤버 변수, 메서드는 부모 클래스가 사용이 불가능하다. 모든 자식 클래스의 생성자 가장 첫 줄에는 부모 클래스의 기본 생성자가 자동 호출 됩니다. 부모 클래스가 가지고 있는 멤버 변수를 초기화할 능력이 없기 때문이다. super(); private 멤버변수, 메서드는 상속이 불가능하다. 중복된 코드를 줄일 수 있다. 다형성을 구현할 수 있다. 키워드 extends 상속의 선언 class + 자식 클래스명 + extends + 부모 클래스명{} 상속의 선언 예제 // 부모클래스 A cl..
[디버깅표] 선형탐색 코드에 대한 디버깅표 작성 코드 예제 // 배열을 선언 int[] arr = new int[5]; // 배열에 값 넣기 arr[0] = 1; arr[1] = 3; arr[2] = 2; arr[3] = 4; arr[4] = 5; // 찾고자하는 값을 지정 int key = 4; // 배열 길이만큼 반복 for(int i=0;i
[알고리즘] 선행탐색 선형탐색이란 왼쪽 인덱스부터 차례대로 비교하여 값을 찾아내는 방식의 알고리즘이다. 논리 원하는 값을 0번 인덱스 값과 비교한다. 동일한 값이 있다면 탐색완료 동일한 값이 없다면 다음 인덱스와 비교 next .... 이미지로 보기 특징 알고리즘 구현이 간단하다. 배열이 정렬되어 있지 않은 것을 전제로한다. 단점 배열이 길어질수록 비례해서 시간이 오래걸린다. 예제 [1,3,2,4,5]에서 4라는 값을 찾아보자 예제 코드 // 배열을 선언 int[] arr = new int[5]; // 배열에 값 넣기 arr[0] = 1; arr[1] = 3; arr[2] = 2; arr[3] = 4; arr[4] = 5; // 찾고자하는 값을 지정 int key = 4; // 배열 길이만큼 반복 for(int i=0;i
[디버깅표] 이진탐색 코드에 대한 디버깅표 작성 코드 예제 // 크기가 5인 배열선언 int[] arr = new int[5]; // 배열에 데이터 넣기 arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5; // 찾고자 하는 값 int key = 2; // 찾고자 하는 값의 인덱스 번호 int keyIndex = -1; // 배열의 시작 인덱스 int start = 0; // 배열의 마지막 인덱스 int end = arr.length - 1; // 탈출 할 때 까지 도는 반복문 while (start key) { // 찾는 값이 왼쪽에 있다는 뜻이므로 // 최대 인덱스를 중앙 인덱스의 왼쪽(-1) 인덱스로 잡는데 end = mid - 1; } // 중앙 인덱스 값이 찾고자 하는 값보다 작다면 els..
[JAVA] 클래스의 멤버변수에 static static이 붙는 경우 멤버 변수가 객체와 무관할 때 static을 붙인다. 생성자의 의한 초기화가 안되기 때문에 클래스 내에서 초기화한다. 클래스 소속의 공유자원이 된다. PI과 같이 항상 같은 변수 값을 가질 때 붙인다. 예제 코드 class Circle2 { static double PI = 3.14; }
[JAVA] 오버로딩 오버로딩이란 같은 이름의 메서드를 매개변수를 다르게 하는 것으로 정의를 확장하는 것이다. 특징 함수명이 동일하고 메서드 시그니쳐가 다르다. 상속과 상관이 없다. 함수명 중복정의를 허용한다. 예제 코드 // 종류 String type; // 반지름 int radius; // 매개변수가 숫자 하나인 생성자 Circle(int radius) { this("원",radius); } // 매개변수가 문자열하나인 생성자 Circle(String type) { this(type,1); } // 매개변수를 숫자, 문자열 둘 다 가지는 생성자 Circle(String type, int radius) { this.type = type; this.radius = radius; }
[에러] <JAVA> JAVA에서의 문자열 비교 에러 발생 코드 answer = sc.next(); if (answer=="네") { break; } else { continue; } 에러 내용 콘솔에 "네"라고 입력을 해도 if문이 false를 반환 원인 JAVA의 String 타입은 연산자로 문자열를 비교 할 수 없다. 해결 JAVA에서는 문자열을 비교하기 위해선 equals라는 함수를 써야한다. 해결 코드 answer = sc.next(); if (answer.equals("네")) { break; } else { continue; }
[알고리즘] 이진탐색 이진탐색이란 정렬된 배열에서 특정한 값을 찾기 위한 목적으로 사요하는 알고리즘이다. 논리 정렬이 되어 있다는 것을 전제로한다. 찾고 싶은 값을 설정한다. 중간 인덱스 값을 찾는다. 찾고 싶은 값을 중간 인덱스 값과 비교한다. 값이 동일하다. 탐색이 완료된다. 중간 인덱스 값이 크다. 찾는 값은 왼편에 있다는 뜻이다. 왼편에 있는 값들 중 중앙 값을 찾는다. 다시 값들을 비교한다. 중간 인덱스 값이 작다. 차는 값은 오른편에 있다는 뜻이다. 오른편에 있는 값들 중 중앙 값을 찾는다. 다시 값들을 비교한다. 이미지로 보기 특징 탐색하는 로직들 중 가장 빠르다. 탐색 범위를 절반씩 줄여나가기 때문에 선형 탐색에 비해 빠르다. 데이터가 많은 경우에도 빠르게 찾을 수 있다. 단점 데이터의 정렬이 선행된다. 예제 ..
[JAVA] 생성자 생성자란 생성자는 객체가 생성될때 자동으로 호출되는 특수 목적의 멤버함수이다. 생성자 선언 예제 class Student { // 생성자 Student() { } } 생성자 특징 처음 클래스를 정의하면 JAVA가 인자 없는 기본생성자를 제공해준다. 개발자가 생성자를 1개 이상 정의하면 기본 제공을 안한다. 클래스와 이름이 같으며 리턴값을 명시하지 않는다. 멤버변수를 초기화하는 역할을 한다. 정의된 생성자 예제 class Student { Student(int a, int b) { } } 정의된 생성자를 가진 클래스 호출 예제 Student student = new Student(a,b); 생성자의 강제 초기화 값 지정 예제 특정 초기화 값을 넣고 싶을 때는 인자로 넘겨야한다. class Student {..