Backend/Java (12) 썸네일형 리스트형 예외처리 개념 프로그램 오류 1. 컴파일 에러 2. 런타임 에러 1) Error : 심각한 에러 2) Exception : 미약한 에러 - Exception(IO(in-out), ClassNotFound..) : 외적인 요인에 의해 발생, checked 예외 - RuntimeException(NullPoint,ClassCast..) : 프로그래머의 실수로 발생, unchecked 예외 3. 논리적 에러 try-catch문 - 예외가 발생한 catch블럭의 문장은 실행되지 않는다 - Exception(모든 예외의 최고 조상)이 선언된 catch블럭은 모든 예외 처리(마지막 catch 블럭에 와야함) - 일치하는 catch블럭을 찾지 못하면 예외는 처리되지 못한다 class Ex8_4 { public static void.. 캡슐화와 접근제어자 캡슐화란? 메서드를 통한 간접 접근을 허용함으로써 외부에서 직접 접근하지 못하도록 함 ✔ 외부로부터 데이터를 보호하기 위해 ✔ 외부에는 불필요한 내부적으로 사용되는 부분을 감추기 위해 접근 제어자 (access modifier) : 클래스,멤버변수,메서드,생성자에 사용하여 외부의 접근 제한 *접근 제어자의 범위는 최대한 좁히는 것이 좋다(수정 시 범위를 찾기 용이함) private : 같은 클래스 (default) : 같은 클래스 + 같은 패키지 protected : 같은 클래스 + 같은 패키지 + 자손클래스 (다른 패키지) public : 전체(접근 제한 없음) class Time { private int hour; // 0~23사이의 값을 가져야함 private int minute; private i.. this와 super this - 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있다. - 멤버변수와 지역변수의 이름이 같을 때 구별하기 위해 사용한다. - 모든 인스턴스메서드에 지역변수로 숨겨진 채로 존재한다. this() - 같은 클래스의 다른 생성자를 호출할 때 사용하는 생성자 - 생성자의 이름으로 클래스이름 대신 this를 사용 - 반드시 첫줄에서만 호출 가능 super - 자손클래스에서 조상클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수 - (자손클래스의)상속받은 멤버와 자신의 멤버가 이름이 같을 때 사용 super() - 조상의 생성자를 호출할 때 사용하는 생성자 - 조상의 멤버는 조상의 생성자를 호출해서 초기화 * 모든 생성자는 첫 줄에 반드시 다른 생성자를 호출해야한다. 그렇지 않으면 .. 오버라이딩과 오버로딩 오버라이딩(overriding) : 상속받은 메서드의 내용을 변경하는 것 1. 선언부가 조상과 일치 2. 접근제어자가 조상보다 좁은범위로 변경할 수 없음 3. 예외는 조상보다 많이 선언할 수 없음 오버로딩(overloading) : 기존에 없는 새로운 메서드를 정의하는 것 하나의 클래스 내에서 같은 이름을 가지는 메서드가 여러 개 정의되는 것 1. 메서드 이름이 같아야함 2. 매개변수의 개수 또는 타입이 달라야함 3. 반환 타입은 관계없음 *서로 관련이 없음! class Parent { void parentMethod() {} } class Child extends Parent{ void parentMethod() {} //오버라이딩 void parentMethod(int i) {} //오버로딩 : 같은.. 클래스 메서드(static 메서드)란? 객체생성없이 호출할 수 있는 메서드 객체란? iv(instance variable)의 묶음 언제 붙여야 할까? 1. 멤버변수 중 모든 인스턴스에 공통으로 사용할 때 2. iv(instance variable)를 쓸 필요가 없을 때 : 인스턴스변수는 객체가 반드시 존재해야만 사용할 수 있기 때문 * static 메서드는 instance 메서드를 호출할 수 없다 : static메서드는 객체 생성과 관계없이 항상 호출할 수 있는데, instance 메서드는 객체가 있어야 하기 때문(객체가 없을 수도 있어서) + 참조변수 this도 사용불가 class MyMath2 { long a, b; //인스턴스 변수 long add(){ return a+b } //클래스(static) 메서드 static long add(.. 반복되는 음수값이 있는 총합 구하기 Q1. 1+(-2)+3+(-4)+...과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100 이상이 되는가? A1. for문이용, 반복되는 음수값 만들기 class Ex4_1 { public static void main(String args[]) { int sum = 0; int s = 1; // 부호를 만들어주는 변수 int num = 0; for(int i=1; true; i++, s = -s) { // 반복할때마다 s의 값이 1, -1, 1, -1...로 반복됨 num = s*i; // num = 1, -2, 3, -4... sum += num; if(sum >= 100) break; } System.out.println(num); } } 랜덤 숫자 맞히기(do - while문) Q1. 숫자를 맞출때까지 반복해서 입력하게 하기 A1. random, do-while import java.util.*; class Ex4_15 { public static void main(String[] args) { int input = 0, answer = 0; answer = (int)(Math.random() * 100) + 1; // 1~100 사이의 임의의 수를 저장 Scanner scanner = new Scanner(System.in); do { System.out.print("1과 100사이의 정수를 입력하세요.>"); input = scanner.nextInt(); if(input > answer) { System.out.println("더 작은 수로 다시 시도해보세요."); } e.. 형변환 연습문제 Q1. 화씨(Fahrenhit)를 섭씨(Celcius)로 변환하는 코드를 완성하라. 섭씨를 구하는 식은 C = 5/9*(F-32) 이다. A1. Math.round() class Ex2_8 { public static void main(String args[]) { int fahrenhit = 100; float celcius = Math.round(5/9f*(fahrenhit-32)*100)/100f; // 100을 곱해준뒤 원하는 자리수가 나오도록 나눈다 System.out.println("f:"+fahrenhit); System.out.println("c:"+celcius); } } A2. (int)(+0.5) class Ex2_8 { public static void main(String args.. 이전 1 2 다음