728x90
반응형
728x90
반응형
메서드에 예외 선언하기 예외를 처리하는 방법은 3가지가 있는데 본인이 (1)직접 해결(try - catch)하거나 (2)예외를 선언하여(예외 떠넘기기) 다른쪽에 넘기거나, 혹은 (3)은폐(catch문에 공백으로 남기기)하는 법이 있다. 메서드에 예외를 선언한다는 것은 아래와 같이 메서드에 throws를 붙여 발생할 수 있는 에러의 종류를 나열하는 것이다 아래 메서드 method에는 arithmeticexceptoin이나 (or) index초과 오류가 날 수도 있다는 것을 정의 따라서 메서드안에서 아래의 에러를 처리할 수 있는 try - catch를 선언하던지 혹은 호출한 쪽으로 에러를 떠넘기던지 둘 중에 하나의 액션을 취해야 한다. 주의할 점은 main안의 throw가 아닌 throws로 s를 붙여서 선..
다음 입사문제 - 두 점의 차이가 제일 적은 두개의 점 출력 문제: 1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.) 예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다. 순서: 최초의 배열 뺀 값을 변수(prevtmp)에 저장하고 새로운 값(tmp)을 받아서 계속 연산하여 prevtmp랑 비교 만약 새 값(tmp)이 저장변수(prevtmp)보다 작다면 값을 대입하여 result 값에 저장 만약 더 작은값이 있다면 prevtmp값에 값을 새로 저장함으로써 그 작은값으로 연산을 함 연산 값이 prevtmp 보다 크다면 연산을 하지 않으므로(else가 없음)..
static을 붙이는 메서드 메서드에 static이 붙는 경우는 어떤 불변의 기능을 언제든지 실행시켜야 할 때 static이 붙는다. 예를 들어 원의 둘레를 구하는 메서드를 구현한다고 하면, 이 경우는 static이 붙여져서 선언된다. 이유: 어느 전 국가에서나 통용되는 범용적인 공식이기 때문에 static을 붙여서 선언한다. 위처럼 메서드의 기능을 잘 생각해서 static을 붙일지 말지 결정하여 메서드를 선언한다. 아래에는 static이 붙은 메서드에 일반 멤버변수가 들어간 경우이다. 이 때 static 메서드과 멤버변수는 이미 메모리가 할당되어 객체 호출없이 static 멤버변수를 사용 가능하지만 일반 멤버변수는 메모리 할당이 되어있지 않기 때문에 사용이 불가능하다. 따라서 메서드안에 객체를 호출해줘..
오류 종류 컴파일 에러: 컴파일 시 생기는 오류 (system.out.print => s의 소문자 같은 컴파일 원인 오류) 논리적 에러: 실행은 되지만 의도와 다르게 동작되는 오류 런타임 에러: 시스템을 실행할 때 생기는 오류 (int[] => 빈 공백을 사용할 시 오류등이 런타임 에러) 런타임에러의 종류 에러(error): 수습 불가능한 심각한 오류; out of memory error; OOME 예외(exception): 코드에 의해 수습될 수 있는 다소 미약한 오류 예외처리 정의: 오류를 대비한 코드를 작성 목적: 비정상적인 프로그램 종료를 막고 오류 대비 코드로 재실행 예외처리 시 try - catch 문 사용 try { //예외가 발생할 수도 있는 코드 } catch (Exception e) {..
절대경로 절대경로란 최초의 시작점으로 부터 경유한 경로를 전부 기입하는 방식 기입 방식은 아래와 같다 C:\Users\UserID\Desktop\test.txt 상대경로 상대적인 경로 즉, 절대경로의 주소를 참조하여 상대경로를 절대경로로 바꾸어 전달 상대경로 이름: test.txt 절대경로 = C:\Users\UserID\Desktop\test.txt 참조되어 만들어진 상대경로 = C:\Users\UserID\workspace\Test\src\test.txt File 문법 getPath() : File에 입력된 경로 리턴 getAbsolutePath() : File에 입력된 절대 경로 리턴 (파일명을 입력하면 그 파일명에 맞는 경로 리턴) getCanonicalPath() : 동일하게 File에 입력된 ..
1부터 10,000까지 8이라는 숫자가 총 몇번 나오는지 카운트 8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. (※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함) 총 2가지 방법으로 문제 해결 package CodingTestLv2; public class Number8Counting { //1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가? //8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. //(※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함) public static void main(String[] args) { counting('8'); for(int i = ..
생성자 안의 객체 생성 시 컴파일 오류 강사님이 Calculator라는 클래스를 정의할 때 클래스 안의 다른 2개의 클래스들을 다른 클래스에서도 선언하기 위해 그 클래스들의 객체를 필드 값에 정의한 내용이다. 이때 나의 질문 내용은 필드값에 객체를 한번에 선언하여 Calculator 라는 클래스를 통해 다른 클래스의 메서드들을 접근하는 것과 생성자에 객체의 주소값을 별도로 메모리에 할당하는 것의 차이점을 여쭤보는것이었다. 강사님은 두개에 별다른 차이점은 없고 컴파일 시 오류가 나지 않지만, 자바 안의 생성자의 목적(값을 초기화) 에 맞게 별개로 객체를 정의하여 생성자에 별도로 정의하는 것이 좋다고 하셨다. 아래는 질문을 드릴 때 사용되었던 코드. Calculator를 실행시키기 위해 사용되었던 Main ..
접근제어자 private private을 넣으면 현재 클래스에서만 접근 가능하도록 데이터의 접근 범위를 제한 따라서 다른 클래스에서 Mart를 선언하여 출력한다고 해도 오류가 발생함 public class Mart { //field private int benefit; // 이윤 private int applenumber; //사과 잔고 private int appleprice; //사과 단가 아무것도 지정안할 경우에는 default값으로 지정되는데 default값은 같은 package내에서 접근이 가능함 public일 경우에는 어디서나 이클립스 안이라면 선언이 가능하다 public class Mart { //field int benefit; // 이윤 public int applenumber; //사과..