목록분류 전체보기 (200)
사이먼's 코딩노트
[예외처리]예외 처리(Exception Handling) 이란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비하여 코드를 작성하는 것이다.Java 코드를 예외처리한다고 해서 프로그램의 예외 상황 자체를 막을 순 없다.예외 처리의 목적은 예외 발생으로 인해 실행 중인 프로그램의 갑작스런 비정상적인 동작을 막고, 에러를 잡아 복구를 시도하거나 아니면 해당 예외 상황을 피하여 프로그램이 정상적으로 실행 상태를 유지할 수 있도록 하는 것이다.우리는 이런 예외 상황를 try와 catch라는 구문을 이용해서 처리할 수 있다. [case #1]먼저, try - catch를 사용하여 나눗셈에서 발생할 수 있는 예외 상황을 처리하는 코드이다.public class Main { public sta..
[인터페이스]1. 클래스 다중상속의 장점과 단점은?장점 : 객체에 다형성을 원하는 만큼 부여할 수 있다.단점 : 하나의 자식 클래스에 2명 이상의 부모 클래스에서 똑같은 형태의 메서드를 2개 이상을 물려받을 수 있다. 이 때, 자식 클래스에서 해당 메서드를 오버라이딩하지 않는다면, 모호함이 발생한다. 참고로 자식 클래스에서 해당 메서드를 오버라이딩할 의무는 없다.2. Java에서 클래스 다중상속을 막은 이유는?C++과 달리, Java는 개발자가 고생할 수 있는 여지를 줄이기 위해 해당 기능을 없앴다. 3. 클래스 다중상속에서 나타날 수 있는 문제점을 해결하는 방법은?자식 클래스에서 모호한 메서드를 오버라이딩한다. 4. 인터페이스와 클래스의 차이점은?인터페이스는 100% 추상클래스이다.인터페이스 안에 있는..
[제네릭]문제를 풀어보면서 제네릭에 대해 조금 더 자세히 알아봅시다.문제의 목표는 제네릭을 이용해서 클래스 3개를 1개로 줄여보는 것입니다.public class Main { public static void main(String[] args) { Int저장소 a저장소1 = new Int저장소(); a저장소1.setData(30); int a = a저장소1.getData(); System.out.println(a); Double저장소 a저장소2 = new Double저장소(); a저장소2.setData(5.5); double b = a저장소2.getData(); System.out.println(b)..
[ArrayList]Java에는 기본적으로 ArrayList 클래스가 import 되어있다.우리는 보통 ArrayList를 사용하기 위해서 코드 가장 상단에 [import java.util.ArrayList;] 라는 코드를 작성한다.하지만 이번엔 ArrayList 클래스의 생성 과정을 간략하게나마 알아보기 위해 직접 ArrayList 클래스를 작성하면서 이해를 해봅시다.해당 과정을 실제로 쓸 일은 없지만, ArrayList에 대한 이해도를 높이기 위한 과정이라고 생각하면 좋다. 먼저, 아래 Main 메서드를 보고 해당 코드가 에러가 나지않고 원하는 출력문이 나오도록 ArrayList 클래스를 추가하여봅시다.조건은 선언된 배열의 크기를 3으로 지정하는 것입니다.public class Main { pu..
[배열]배열에 대해서 알아봅시다.아래는 배열을 사용하지 않았을 때, 단순히 메서드를 이용해서 값을 하나씩 저장하고 추출하는 코드입니다.public class Main { public static void main(String[] args) { IntArr intArr1 = new IntArr1(); System.out.println("배열의 길이 : " + intArr1.length); // 출력 => 배열의 길이 : 1 intArr1.setData(0, 20); System.out.println(intArr1.getData(0)); // 출력 => 20 IntArr intArr3 = new IntArr3(); ..
Java 형변환과 관련된 문제를 풀어봅시다.추가로 문제를 풀어보면서 수동 박싱/언박싱과 자동 박싱/언박싱의 개념도 함께 알아봅시다.Main 메서드에 작성된 코드를 보고 에러가 발생하지 않도록 수정 및 클래스와 메서드를 추가 작성해봅시다. [문제 1]아래 코드를 보고 숫자를 저장하는 저장소 클래스를 구현해봅시다.public class Main { public static void main(String[] args) { 저장소 a저장소 = new 저장소(); a저장소.저장(10); int 결과 = a저장소.주세요(); System.out.println(결과); // 출력 : 10 }} [문제 1 정답]아래 코드는 Main 메서드를 제외..
[형변환 (캐스팅)]이번에는 형변환 또는 캐스팅에 대해서 알아봅시다.Java에는 정수 타입, 실수 타입, 문자 타입, 논리 타입, 객체 등 여러가지 기본 타입이 있다.바이트가 작은 순서로 정수 타입은 byte 여기선 char 타입은 준정수 형태로써 문자이자 정수 타입의 성격도 가지고 있다.형변환이란 코드를 작성할 때 같은 타입뿐만 아니라 서로 다른 타입간의 연산을 수행해야 하는 경우도 있는데, 이 때 연산을 수행하기 전에 타입을 일치시켜야 한다.이처럼 변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 형변환이라고 한다. 아래의 예시 코드를 통해 형변환의 역할을 자세히 살펴봅시다.public class Main { public static void main(String[] args) { ..
[String 클래스 메서드]이번에는 Java에서 문자열을 다루는 String 클래스의 메서드 종류에 대해 몇 가지 알아봅시다.String 클래스는 문자열의 추출, 비교, 찾기, 분리, 변환 등과 같은 다양한 메서드를 가지고있다.그 중에서도 사용 빈도수가 높은 메서드를 소개하려 한다. [charAt()]charAt() 메서드는 문자열에서 매개변수로 받은 index 번호에 위치한 문자를 리턴한다.여기서 말하는 index 번호는 0부터 시작한다.예를 들어 str = "abcde" 에서 str.charAt(2)를 호출하면 2번째 위치한 문자 'c'를 의미한다. [equals()]우리가 보통 알고있는 기본 타입(int, char, long, double 등)은 연산자 '==' 을 통해 변수의 값을 비교할 수 있..
[static]이번에는 static에 대해서 같이 알아봅시다.static은 정적이라는 고정된 의미를 가지고 있고 static 이라는 키워드를 사용하여 static 변수와 static 메서드를 만들 수 있다.static으로 정의된 변수나 메서드는 객체에서 해당 변수와 메서드를 관리하는 것이 아니라 클래스 자체에서 관리를 한다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용이 가능하다.여기서 말하는 클래스의 로딩은 객체를 생성하지 않고 바로 클래스를 통한 변수 또는 메서드 호출을 의미한다.static으로 정의된 정적 멤버들은 힙 영역이 아닌 static 영역에 메모리가 할당된다.간단하게 말해서 모두가 공유할 수 있는 범주(공공재)의 변수나 메서드라면 static을 붙히는 것이 좋다.종합적으로 static으로..
[super]이번에는 super() 메서드에 대해서 같이 알아봅시다.먼저 아래의 예시 코드를 통해 super() 메서드의 역할과 의미를 파악해봅시다.public class Main { public static void main(String[] args) { System.out.println("== 청둥오리객체 생성시작 =="); new 청둥오리(); System.out.println("== 청둥오리객체 생성끝 =="); /* 출력 == 청둥오리객체 생성시작 == 생물이 생성되었습니다. 동물이 생성되었습니다. 오리가 생성되었습니다. 청둥오리가 생성되었습니다. == 청둥오리객체 ..